PSA: Google Assistant Voice Output Not Working? Here’s a Potential Fix.

The Google Assistant only started rolling out to Android 6.0+ smartphone users in March of this year, and only in select regions. We would expect Google to have worked out most of the kinks, but it appears that there may still be some lingering issues. Some users have reported to us that, on occasion, voice output from assistant is not working. Thankfully, XDA Senior Member muena90 spent hours researching the problem  and was able to fix it on his OnePlus 3T. For reference, he was running AOSPA 7.3.0 and was on the Google App version 7.12.24.21. The problem, as he discovered, came down to audio codecs.

Audio codecs are necessary for your device to decode certain audio stream types. Different sound files use different algorithms to store audio data, and audio codecs are needed to read this data. When muena90 discovered that Google Assistant was not speaking to him, he found errors in his device’s logs related to audio codecs.

He took a logcat which is simply a capture of the system logs on the device. Looking at these can be helpful no matter what you are having issues with, and it’s probably the first thing a developer will ask for if you are reporting a bug. Muena90 discovered through the logcat (shown below) that the MMParser-Extractor (related to Qualcomm processing of audio) threw an error every time the assistant’s voice was supposed to speak—such as when asking it to read the weather.

Once muena90 saw these, he did a few Google searches and found that MMParser-Extractor was related to audio codecs but found not much else. They however discovered that the mm.enable.qcom_parser build prop parameter actually houses the default audio codec that the device should use.

Originally the value it had was “2097151” which apparently is an incompatible audio codec to read the audio data sent by the Google Assistant app. Instead, they decided then to Google a recommended build prop file, taking the suggested audio codec instead and replacing their own with the new one. Taking things from random build prop files online is not usually recommended, but in this case it was probably the best solution to fix the issue.

How to Fix Google Assistant Voice Output

The next step requires you to edit the build prop file (you’ll need root access). We recommend using a simple build prop editor such as the one below. It’s simple with a nice UI and gets the job done.

BuildProp Editor (Free+, Google Play) →

Once in the build prop app, insert the value “3183219” under the “mm.enable.qcom_parser” parameter, replacing the old numeric value. Then, reboot your phone.

So what’s happening with the Google Assistant?

Presumably the number under the “mm.enable.qcom_parser” is referencing a specific audio codec set built into Android. This seems to be the default audio codec for a lot of applications, and the Google Assistant does not expect to use it. Simply downloading and analyzing a recommended build prop was the right answer here as the user was on a custom ROM which did not seem to have a common configuration as regards audio codecs.

It is noteworthy however that the Google Assistant seems to be the only affected application by this codec. Changing the number seems to change the actual range of supported codecs on the device, allowing the Google Assistant to output audio correctly.

When running into issues like these, sometimes a simple logcat is enough to find the problem without the hours of Googling that also were required for this job. If you ever run into the issue, simply changing your build prop file may be enough to fix it and be on your way.

How to Force Apps to Fill the Screen on the Essential Phone

When Andy Rubin first unveiled the Essential Phone, many were amazed by the bezel-less design the company was able to come up with. One feature that stuck out though (literally) was the camera and sensor cutout at the very top of the display. Other OEMs such as Sharp and Xiaomi decided to embed the camera and sensors in the bottom chin bezel of their bezel-less phones, but Essential went down a different route. This is actually a feature that some assumed would be very distracting when they first saw the smartphone too.

Reviews poured in and a lot said that the camera and sensor cutout weren’t as distracting as they had first thought. Current owners of the device say that your eyes just start to ignore it and that you stop noticing it, until certain apps make its existence too obvious to ignore. While certain applications are allowed to blend into the status bar on the Essential phone, not every application is able to do so.

before essential fix

Here’s an example of what an application looks like on the Essential Phone when it does not cover the top of the screen. The rest of the application looks and functions as it should, but there’s a distracting space right above the status bar that just looks ugly. Thankfully, there’s a way to fix this issue without needing root. Essential actually has a whitelist of applications that are allowed to make full use of the status bar area, and thankfully we have a way of editing that whitelist.


Make Apps Fill the Screen of the Essential Phone

The easiest way to do this is to use an application called “Layout Whitelist Editor” available on the Google Play Store.

Layout Whitelist Editor (Free, Google Play) →

This is an open source app made by Reddit user TsFreddie on the /r/Essential subreddit, and it lets you add or remove individual applications to the application list. This was brought to our attention thanks to XDA Senior Member tw1tch175. All you have to do is install the application and then grant it a hidden permission via ADB, which we’ll show you how to do.

  1. Download and install the “Layout Whitelist Editor” from the above Play Store link.
  2. Set up ADB as outlined in this tutorial.
  3. Open up a command prompt/terminal and enter the following command: adb shell pm grant in.tsdo.elw android.permission.WRITE_SECURE_SETTINGSEssential Phone
  4. That’s it! Now open up the app and begin whitelisting whatever apps you want to fill the Essential phone’s status bar!
Essential Layout Whitelist Editor Essential Layout Whitelist Editor Essential Layout Whitelist Editor

Once you select the apps you want to whitelist, you should see those applications (especially 3rd-party launchers) start to take up the full screen of your device. If not, it is recommended that you go ahead and reboot the smartphone but it should work instantly. Applications should look much better after this has been done. The wallpapers of 3rd-party launchers (such as Action Launcher) should now expand to the top of the display so it will create a much more immersive experience.

essential phone after

Credit: Reddit user heyitzrj

I say should here because not all applications play well with this setting in certain situations. A few people in our forums show it doesn’t work properly with Tapatalk, but then another person says this conflict is due to the application’s dark theme option.


Explanation

Essential Products wants to make sure that the applications and games which are added to this whitelist work and look the way they should. Currently, developers have to request to be added to the whitelist, and while the company is working on a way to make that situation better, it may take a while for your favorite application to be added to that whitelist. Even the popular Nova Launcher was only just added to the Essential phone’s whitelist. Thankfully there’s a way for us to bypass the restriction the software has put in place.

Using the application above, we are able to manually modify the whitelist put in place by Essential. What the app does is write to the preference called Settings.Global.ESSENTIAL_LAYOUT_WHITELIST using a comma separated list of package names representing the apps that you want to whitelist. This is not unlike many of the tricks we outline in our previous tutorials, but the app makes this process far easier as you don’t need to deal with the command line anytime you want to modify this whitelist.

So there you have it. It was virtually impossible for Andy Rubin’s first smartphone to be exactly what everyone wanted, but at least there are some workarounds for some of its most glaring issues. Another complaint people have had with the phone is the camera, but there’s a workaround for that which at least improves the camera quality (even if it ignores the monochrome sensor).

How to get “Turn on WiFi Automatically” for the Nexus 5X/6P on Android Oreo

Android Oreo introduces a new feature that lets you turn on WiFi automatically when you’re near a “high-quality saved network,” like one from work or home. This feature can be found on the official builds of Android 8.0 for the Google Pixel and Google Pixel XL, but it is not available on the Google Nexus 5X or Google Nexus 6P. However, that wasn’t always the case. The two Nexus phones actually had the WiFi automatic wakeup feature when Android O Developer Preview 2 was out, but for some unknown reason Google removed this feature in the final Android 8.0 Oreo release for the Nexus 5X/6P.

WiFi modules in smartphones these days are quite efficient when it comes to battery life so this isn’t something that will save a lot of battery life for most people. However, if you’re in an area with a ton of WiFi access points with varying network connection quality, then you may experience some battery drain associated with your smartphone constantly connecting and disconnecting from low quality, open WiFi networks.

That’s where the feature to turn on WiFi automatically comes in. What happens is that while the ability to connect to WiFi networks is turned off, the feature to scan for WiFi networks remains enabled. In the background, Google scans for networks then uses its own recommendation service to determine if it should turn WiFi back on to connect to the network. Google’s recommendation service bases this decision on whether or not the WiFi network is a saved network that you connect to frequently, and if that network offers a stable, high speed connection.

You’ll find this feature by launching the Settings application, tapping the Network & Internet option at the top, tapping on WiFi, and then tapping the WiFi Preferences option toward the bottom of the list. The toggle itself can be seen in the feature image above.

A pretty nifty feature, if you’ll ask me. But it was removed for the Nexus 5X and Nexus 6P for reasons we don’t know, perhaps it just didn’t work that well for those two phones. As with many other Android features that don’t have a user-facing toggle, we can actually bring this feature back with a couple of ADB commands. So let’s dive into the steps required to get bring back the “turn on WiFi automatically” feature for the Google Nexus 5X and Google Nexus 6P.


Enable the “Turn on WiFi Automatically” Feature on the Nexus 5X and Nexus 6P

  1. First you’ll need to have ADB installed on your desktop or laptop computer.
  2. Connect the Nexus 5X or Nexus 6P to the computer, enable USB debugging, and then open up a command prompt.
  3. Execute the following command into the command prompt: adb shell
  4. Then execute the following command in the command prompt to bring back the toggle: settings put global wifi_wakeup_available 1
  5. Lastly, go ahead and execute the following command in the command prompt to actually enable the feature: settings put global wifi_wakeup_enabled 1
    automatic wifi

Explanation

We’ve been doing a number of these tutorials lately that give you access to features that are included in Android software you’re running. These are features that are baked into the Android operating system but aren’t easily accessed by the user.

Since Google kept this Automatic WiFi feature in place on the Pixel and the Pixel XL, we can only imagine that it works exactly as they had hoped. However, they have removed the toggle on the Nexus 5X and the Nexus 6P as it’s possible this feature didn’t play well with the WiFi module used in these two devices, or maybe Google just wanted to limit it to their new Pixel phones. Either way, we can bring it back and it has been tested to work.

After we bring up the ADB shell prompt on our computer, we’re going to be issuing two commands here. The first command actually brings the Automatic WiFi toggle back into the Settings application. If done correctly, this first option will make that “Turn On WiFi Automatically” toggle appear again.

But while we’re in the ADB shell, we can go ahead and issue the command shown in step 5 to actually enable it. Changing these options will not prevent you from accepting an official OTA update from Google in the future (we aren’t making unauthorized modifications to the system files here) and this is why it doesn’t require root access either.

If you ever want to revert these changes back to how they were, you can launch a command prompt or terminal and bring up an ADB shell again. Just change the 1 at the end of the commands in the last two steps of the guide to a 0. These flags were initially set to 0 and that is why we didn’t have access to the Automatic WiFi feature on these two Nexus devices. So changing these back to 0 from 1 will disable the feature and remove the toggle from the Settings menu.

How to Whitelist Apps from Android Oreo’s Background Location Throttling

There’s a lot to love about Google’s newest tasty treat – Android 8.0 Oreo. From major low level changes that will speed up updates to small quality of life changes to full custom theme support, there’s something in the latest update for everyone to enjoy. But one of Android Oreo‘s biggest changes, background app limitations, has been causing a bit of a headache for some users. No, it’s not that annoying “app is running in the background” notification that we’ve already shown how to hide. Rather, it’s the fact that these new background location limitations have been breaking certain applications for some users, in particular apps that rely on constantly pulling updates on your location.

To be fair, this isn’t necessarily a problem of Android Oreo itself. The latest OS update is designed to reign in some of the poorly behaving apps out there that constantly run in the background and drain your battery or eat up your RAM. It’s up to application developers themselves to ensure their app is using a foreground service so their app can continue polling for location without any restrictions. The best thing an average user can do to keep their favorite apps that require constant GPS location up and running is to contact the developer and kindly ask them to abide by Android Oreo’s new requirements.

Sometimes, though, you may want to continue using an application that is outdated or abandoned and thus has no hope of being updated. We won’t judge. In those cases, obviously contacting the developer won’t do you any good. But thankfully, there’s a way around Android Oreo’s new background location throttling – and it doesn’t require root or modifying any APKs.


Whitelist Apps from Android Oreo Background Location Throttling

This issue came to my attention over on a Reddit thread the other day after a user informed me that the GolfPad application was not working as it used to on prior versions of Android. After a bit of digging, I discovered a hidden developer ADB command that can be used to whitelist any apps you want from the strict background location throttles introduced in Android 8.0. Here is how it’s done:

  1. Install ADB onto your computer.
  2. Get the package name(s) of the application(s) you want to whitelist. We recommend using Package Name Viewer for that.
  3. Open a command prompt or terminal and enter the following command: adb shell
  4. Now, enter this ADB command: settings put global location_background_throttle_package_whitelist "package1,package2,package3"
  5. In between the quotation marks above, you are inputting a comma separated list of package names for each app you want to whitelist. In the case of the GolfPad app mentioned earlier, the command is just this: settings put global location_background_throttle_package_whitelist "com.contorra.golfpad"

Android Oreo Background Location ThrottlingDone! If you input the command correctly you won’t see an error or anything. Now your favorite app can continue to use GPS location unrestricted in Android 8.0 Oreo!

Conclusion

As mentioned before, what we’re doing here is simply using an ADB command which is meant to be used by developers to test their applications out. Instead, we’re using it to pick and choose which apps we want to use GPS in the background. This isn’t the first time we’re using developer commands for unintended purposes, and it definitely won’t be the last!

If you encounter a problem such as this that you think affects many other people, feel free to reach out to me at my e-mail listed on my author page or via private message on Reddit. I don’t respond to technical support questions, but if you find something worth looking into, I’ll definitely respond! If you find these kinds of tutorials interesting, then I recommend following our tutorials RSS feed or downloading the XDA Labs app.

Broken Navigation Bar, Lock Screen, or Status Bar after an Update? Here’s a Fix.

There is a rare bug which has happened to a handful of users after an OTA update. We don’t know why it happens, but when it does it can break your navigation bar, lock screen, and status bar. You’re unable to use your home or recents buttons, see your lock screen, or pull down to see your notifications. This is incredibly annoying and personally, has caused me to factory reset in the past. However, there is a fix that you can try, and it involves setting up your phone again – or at least tricking your phone into thinking you’ve done so.

Video of the bug in action


How to Fix the Broken UI After an OTA Update

So while we still don’t know why exactly it seems to be a bug, we know it can be fixed by completing the Android Setup Wizard once again. What happens is that the settings that Android Setup Wizard stores to tell the system that the setup process has been complete have been reset. After first boot these settings should never change, however, it seems it may randomly reset after an OTA update.

There are potentially two ways to fix this. If you have Developer Options already unlocked and USB debugging enabled, then you’ll be able to use an adb method which is a guaranteed fix. If you don’t have USB debugging enabled and can’t access it, then you’ll have to try another method which is not guaranteed to work.

ADB Method

Open a command prompt or terminal window and enter the following:

adb shell
settings put global device_provisioned 1

Then wait for the command to complete. This took about 10 seconds for me.

settings put secure user_setup_complete 1

And now you are done! Once these commands are run, you should immediately be able to control your device once again.

You can also run those commands from a terminal application on your device, such as Termux. Make sure your device is rooted with Magisk or SuperSU if you choose to do it this way, and instead of typing “adb shell” type “su”.

Termux (Free, Google Play) →

Activity Launch Method

If you don’t have adb already set up, the process is trickier. Download an app called Activity Launcher.

Activity Launcher (Free, Google Play) →

Open it up and tap up top to see all activities on your phone. Scroll through the list and search for “Setup Wizard.” Go through and tap on each of the activities listed under Setup Wizard to see if it will launch the setup process again for you. Hopefully one of them will work. If not, your last remaining option is a factory reset.


Explanation

What this does is simply edit the Secure Settings values that tell Android you have finished the initial set up process. You may be wondering why if the device thinks you haven’t completed setup, or why the setup application isn’t launched. What’s happening is, the device denies access to the UI elements which would let a user escape the setup process. Normally this is a good thing, however, in this case it denies you access to your device even though you’ve already set everything up. When you complete the setup process, those two settings we edited in the “adb method” above are changed to 1, but thankfully by doing that change ourselves we can get around this silly bug.