# Question
Title: How to enable USB "Audio Source" option on Android 9+?
A lot of screenshots in the Internet mention a 'audio source' USB configuration for Android. For example, this one from Google:

However, I cannot see this option with my SM-A510F with Android 9 (LineageOS 16).

Is there something I can do to enable it? Is it definitively gone from Android?

# Answer
Android devices can work in USB ***host*** or ***device*** mode. Host is the one which controls USB communication. PCs mostly operate in host mode. Device is the one which is being powered and controlled by the host. Flash drive is a common example of USB device. Linux/Android kernel supports device mode through different ***gadget*** drivers. UMS, MTP, ADB are different gadget modes on Android devices.

## Audio over USB in Device Mode

On Android devices, technically it's possible to stream Audio over USB both in host and device mode. Since Android 4.1 the latter mode is *“provided by Android Open Accessory (AOA) 2.0 and provides limited audio capability”*. It uses the USB Audio Gadget Driver in kernel (built with `CONFIG_USB_AUDIO` option) and the accessories supporting AOAv2 protocol are built using Accessory Development Kit (ADK). Custom Accessories page states:

> AOA protocol specifies how an accessory can establish communication with an Android device via USB. Due to the low power output of Android devices, AOA requires the accessory to act as a USB host, meaning the connecting accessory must power the bus.

But as per official documentation:

> Accessory mode audio has not been widely adopted, and is not currently recommended for new designs.

And the AOA protocol documentation warns:

> Caution: AOAv2 audio support has been deprecated in Android 8.0.

It means Android 9+ devices won't be able to function in device mode while streaming audio over USB. So the ***Audio Source*** USB configuration option is no more there.

## Audio over USB in Host Mode

However Android devices support audio peripherals in host mode (kernel must be built with `CONFIG_SND_USB_AUDIO`). Since AOA is specific to Android, such accessories aren't usable with other hosts like PCs. So there was a demand from audio peripheral manufacturers, device OEMs and ROM developers community to support standard USB audio out capability in host mode (e.g. see this, this and this). Support for a subset of USB audio class 1 (UAC1) features was added in Android 5.0.

USB Device classes specify the standard protocols for USB peripheral functions so that the host can inter-operate with them without requiring any hardware-specifc driver (i.e. in *driverless* mode). USB Mass Storage (UMS) is a common example. All Mass Storage Class (MSC) compliant thumb drives work on all OSes including Linux, Android and Windows, irrespective of the device vendor. In the same way the USB audio peripherals which are *USB Audio Class 1 compliant* work with Android devices like on any other USB hosts e.g. PCs.

So host mode USB audio covers wide range of USB-based peripherals including the headsets that follow the USB headset specification.

When a UAC1 compatible peripheral device (like a DAC) is connected to USB port on Android device, digital audio is automatically routed to that peripheral. However if an app wants to use advanced USB host APIs to interact with the peripheral (and not simply the audio routing) , it's possible to ***Disable USB audio routing*** in Developer Options.
> 8 votes

---
Tags: usb, audio, audio-recording
---


# Question
Title: avdmanager hangs on "Loading local repository..." Linux
Repro:

1. Headless Ubuntu `18.04 LTS` VM (kvm note enabled)
2. `sudo apt-get update`
3. `sudo apt-get install -y wget openjdk-8-jre-headless libc6-i386 lib32stdc++6 python3-pip nginx unzip`
4. `sudo wget https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip`
5. `sudo unzip commandlinetools-linux-6200805_latest.zip -d /opt`
6. `sudo /opt/tools/bin/sdkmanager --install --sdk_root=/opt "system-images;android-19;default;armeabi-v7a" "platform-tools" "platforms;android-19"`
7. `/opt/tools/bin/avdmanager create avd -n arm -k "system-images;android-19;default;armeabi-v7a" -f`

On step 7 in hangs with `Loading local repository...`

Notes:

* Running the avdmanager as `sudo` doesn't help, and the image need's to be created by a user anyway.
* Tried `sudo setfacl -m u:username:rwx /opt/tools/bin/avdmanager` didn't help
* setting `ANDROID_HOME=/opt` and `PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools` doesn't help
* newer version of command line tools don't help ether.

What is the problem? How can I investigate? Have I missed something?

# Answer
It happened because since version (6200805) Command Line Tools should be placed inside **cmdline-tools** directory. It should be created manually in ANDROID\_HOME.

Please see this answer With the mentioned configuration everything works fine.
> 1 votes

---
Tags: 4.4-kitkat, linux, avd-manager
---


# Question
Title: Why i am not able to open my archieved chats?
My archieved whatsApp messages not opening at all. I am not able to click it and open it(convert)

# Answer
To open WhatsApp archived/exported chat, you need an app that is able to open .txt file, because WhatsApp archived/exported chat has that format. You can use this text viewer app from the Play Store.
> 1 votes

---
Tags: whatsapp-messenger
---


# Question
Title: Can a blocked contact see any number changes?
I would like to ask, whether a blocked contact will receive an information,if I change my Viber phone number? Is it possible to make the change by only informing a selected group of contacts or everyone I had previous communication with, will get the notification of me changing the number?

Thanks

# Answer
They will not notice it unless they try to make contact with you after it is done. But things can become awkward if you are both a part of the same group chat. You won’t see their messages but they will see yours. And as a rule, if they are blocked, they won't see any changes of yours.
> 0 votes

---
Tags: adb, notifications, contacts, security, viber-messenger
---


# Question
Title: Best way to back up home screen layout on Android?
I have a Motorola Android phone in which I have around 400 apps that I have put into folders and carefully chosen a layout which has taken me a long time. I want a way to back up this layout and Motorola doesn't offer a this service (which other major phone manufacturers do). I know this can be done by using Nova Launcher and other launchers which have back up options but this means I have to recreate my layout again in Nova Launcher as it can't import my current layout from the Motorola Launcher which will take a long time.

Is there a way to at least dump all the current apps I own into Nova Launcher? Does anyone have any other ideas (other than getting a new phone)?

# Answer
Arrangement of apps whether on home screen or in app drawer is part of app data of launcher app. If your launcher app doesn't offer support for Import/Export of user settings, than try using to backup your launcher app's data. Verify the backup and see whether the user settings were indeed backed up not.

If adb solution is not useful than the only way is to get the device rooted and use a root based backup solution, such as by directly copying user settings from launcher app's data directory, or by using an app based backup solution such as Titanium Backup app.

**Note:** in all likelihood rooting the device would destroy all of your data.
> 1 votes

---
Tags: backup, motorola-moto-g, launcher, home-screen, motorola
---


# Question
Title: Google Chrome and picture reenabling and reinstalling without authorization or interaction?
As somebody really wary of Google in general, the first thing I did on my phone was to disable Chrome and Google Pictures, and replaced them by apps from F-Droid

For a few days now, I've seen them reappear in my app drawer, and with careful observation, the play store seems to be re-enabling and reinstalling them by itself when checking if updates are available.

Uninstalling and disabling them again just kick the can down to the next repository upgrade.

This question talk about google chrome, but do not give an explanation for google pictures.

Auto updates are disabled, android 9.

# Answer
This was a problem I noticed after updating my OnePlus 6 to Android 10. I didn't get the time to investigate the logs when my Play Store, YouTube, Photos, Play Services and GSF kept re-enabling themselves. One thing I realized was that if I used a third-party app to disable them they got re-enabled after a while. But if I disabled them using Settings app, they never got re-enabled. This is what I suggest for you.

Also, I keep them blacklisted in my firewall, just to ensure they don't connect to internet even if they manage to re-enable themselves.
> 1 votes

---
Tags: chrome-for-android, 9.0-pie, disable-app
---


# Question
Title: Why is user and CA certificate required for IKEv2 RSA VPN?
It should work similarly as to going to a random HTTPS website, where the supplied certificate is backed by a CA, and based on which a secure connection is made. Then authentication follows over the secure connection.

So why am I *required* to supply both user and CA certificates. In other words, why is it not merely an option?

Edit: now that I look at it, it seems that no user nor password can be supplied either, so the client authentication happens based on the user certificate. Only for PPTP a password is required (which is not a secure protocol anyway). So the question becomes: why have they chosen to support only IKEv2 with user certificates and not passwords. It can not be for security reasons since PPTP is supported.

# Answer
As the name implies, the VPN type `IKEv2/IPSec RSA` \[sic, it should actually be "IPsec" not "IPSec"\] is for client authentication with an RSA certificate/key. The name was probably chosen for consistency with the existing IKEv1-based VPN types (e.g. "L2TP/IPSec RSA" or "IPSec Xauth RSA"), it might also work with ECDSA certificates/keys not only RSA, but I did not test that.

There were two other IKEv2 VPN types added in Android 11/R's built-in VPN client:

* `IKEv2/IPSec PSK` for authentication of both client and server with a pre-shared key (PSK), which is not an ideal choice for remote access connections as anybody who knows the PSK can impersonate the server (an active attacker can retrieve the PSK hash and attack it via brute-force/dictionary attack).
* `IKEv2/IPSec MSCHAPv2` for client authentication with username/password using EAP-MSCHAPv2. The server is theoretically authenticated with a certificate first so the password hash is only sent to a trusted peer. However, this verification is apparently not mandatory in this client and disabled by default (`don't verify server`), which makes this VPN type vulnerable to active attackers unless the user makes sure to install and select the correct CA/server certificate.

For an IKEv2/IPsec VPN client with more options (e.g. split-tunneling, app filtering), you could use the open-source strongSwan VPN client app, which also works on older Android versions. *(Disclaimer: I'm a developer for the strongSwan project.)*
> 4 votes

---
Tags: vpn, certificates
---


title: Zombie process using termux

text:
# Question
Title: Zombie process using termux
I am testing one of my application on android's (Android version 7.0) termux terminal emulator. I want to spawn some zombie processes.

On GNU/Linux, if I open a terminal emulator and write:

```
ruby -e '10.times { fork { exit! } } && sleep '

```

This will create 10 zombie processes. To check about zombie processes, I write:

```
ruby -e "puts Dir['/proc/**'].select { |x| File.split(x)[1].then { |y| y.to_i.to_s == y } }.then { |a| %<Active Processes: #{a.size} (#{a.count { |x| IO.readlines(%<#{x}/status>)[1].split[1] == ?Z.freeze} } Zombies)> }"

```

Which outputs in the format:

```
Active Processes: 189 (10 Zombies)

```

But on Termux, I can't create zombie processes. When I am forking a process, the process count doesn't increase (as reported by htop and the ruby program). Even if I try to spawn processes, it won't spawn any. I have total 11 processes showing on Termux!

What's so different about android? Is there any way to test my application using termux? Or are there any other applications that will allow me to do such stuff?

# Answer
I just created 100 zombie processes on Termux using:

```
for n in {1..100}; do (sleep 1 & exec sleep 10) & done

```

and they do exist for 10 seconds as expected, then reaped by `init`. To see zombie processes:

```
~$ ps axo stat,ppid,pid,cmd | grep ^Z

```

Or just to take count use `grep -c ^Z`.
> 1 votes

---
Tags: processes, termux
---


# Question
Title: How do I enable a forced stop & disabled Bluetooth Share app on Android 4.0.4 (Ice Cream Sandwich)
Over enthusiastic to disable many distracting apps on my Sony Xperia U (ST25i) I went "settings\>apps\>all" and disabled away. Where no disable option was available, I clicked on force stop. With Bluetooth Share I stupidly took it to be a social networking app and disabled it, later force stopping it. Dumb, I know, but how do I get it back? I'm fairly new to all of this, obviously, so please be very specific in responding. Many thanks.

# Answer
For apps that are forced stopped, locate them in the Play Store and click Enable button to enable them.
> 0 votes

---
Tags: applications, 4.0-ice-cream-sandwich, bluetooth
---


# Question
Title: Is it possible to set device's Latitude and Longitude using ADB SHELL?
I know how to set locatlon for emulators using device configuration interface from Motodoev Studio for example. But, how I can set locatlon for a device?

# Answer
> 6 votes
Alternatively what might also be an option here is to use Appium's io.appium.setting's app.

Once that app's installed on the device you can give it permissions and mock location through adb like this:

```
  adb shell pm grant io.appium.settings android.permission.READ_PHONE_STATE
  adb shell pm grant io.appium.settings android.permission.WRITE_SETTINGS
  adb shell pm grant io.appium.settings android.permission.ACCESS_FINE_LOCATION
  adb shell pm grant io.appium.settings android.permission.ACCESS_COARSE_LOCATION
  adb shell pm grant io.appium.settings android.permission.ACCESS_MOCK_LOCATION
  adb shell pm grant io.appium.settings android.permission.SET_ANIMATION_SCALE
  adb shell pm grant io.appium.settings android.permission.CHANGE_CONFIGURATION

  adb shell am start -W -n io.appium.settings/.Settings -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000
  adb shell appops set io.appium.settings android:mock_location allow

  adb shell am startservice -e longitude 28 -e latitude 77 io.appium.settings/.LocationService;

```

For more info on the app and some other intents check out their readme

# Answer
> 5 votes
this is possible using ADB shell:

```
$ telnet localhost 5554
Android Console: type 'help' for a list of commands
OK
geo fix -82.411629 28.054553
OK

```

Please read: https://stackoverflow.com/a/2587369/950427

# Answer
> -1 votes
Alternative to @jmp answer, I can recommend to use instead of Appium's app the FakeTraveler It has not the disadvantage to run a lot of `adb` permission commands, which not really work out of the box and without search google why setting permission ACCESS\_MOCK\_LOCATION don't work.

FakeTraveler guides you automatic to right developer setting ♥

---
Tags: adb, geolocation, shell
---


# Question
Title: Is it possible to create an operating system other than Android for Android devices?
Is it possible to run an operating system **other than Android** on Android devices? I know that the bootloader is hard-coded into the firmware and even if you tried you can't change what it does but what about from that bootloader you use the **kernel** that it loads to **load another Operating System**. Something like a **secondary bootloader**. Is that possible? Could you **compile your own Operating System** and **install it** on an Android device if all the necessary requirements are met? What about a "Hello World" Operating System? Is that possible too at least? And **I don't** mean Linux.

# Answer
> Something like a **secondary bootloader**. Is that possible?

Yes it's possible. As you mentioned, since the boot chain up to bootloader stage is closed source and binaries are signed with OEM's private keys, it's not possible to replace or modify the bootloader. However if bootloader is unlockable, it's possible to boot a custom kernel (your own OS). But the **first thing** is that you need to follow the **standard format of `boot.img`** (i.e. fixed offsets and file formats for kernel binary, ramdisk, DTB etc.) as specified in Android (AOSP).

**Secondly** building a "Hello World" kernel (or even a bootloader) for a PC is rather simple because many of the buses and the hardware attached to them are already recognized by BIOS/UEFI. However mostly Android devices are ARM based, so they don't have ACPI like in BIOS/UEFI. Instead hardware mapping is provided in the form of **Device Tree** which is provided by the SoC vendor. The Android/Linux kernel source provided by OEM also includes drivers for all hardware components. So you need to include the Device Tree Blob (DTB) and relevant parts from kernel source with your custom kernel.

Bootloader itself is built with the DTB to use hardware components like eMMC/UFS, display, USB etc. to be able to flash partitions, show boot splash screen, connect to PC etc. For instance, `splash_region` or `freamebuffer` in DTB specifies memory addresses of display hardware, which is required to print e.g. **Hello World** on screen.

**Thirdly** many of the **kernel interfaces are proprietary** (not documented) and they don't work with standard Linux ioctls/syscalls. In order to fully make use of hardware features (camera, gps, modem an so on) you need proprietary binary blobs (**HAL**s) in userspace, again provided by device OEM. Android framework uses **HIDL** to communicate with HALs, so you also need to rely on that.

So what you come up with is not a purely ***“other than Android”*** OS. For a large part you have to share the same codebase, specifications and resources that run in Android OS, whether it's kernel or userspace.

For more details see:
> 4 votes

---
Tags: rooting, rom-flashing, bootloader, system, operating-system
---


# Question
Title: Add a friend in Line by username without ID or phone number
In the Line app, Is it possible to search for friends by their username without ID or phone number?

# Answer
There is no such functionality due to privacy reasons. Your only options are ID, QR Code or phone number.
> 2 votes

---
Tags: line
---


# Question
Title: How to multiboot 2 Android-X86 distro? (for instance PrimeOS and Bliss OS)
How to multiboot 2 Android-X86 distro?

I tried to make a dual boot with Bliss OS and PrimeOS.

I installed Bliss OS to its dedicated partition on my hard drive.
It was perfectly booting and working.
Then, I installed PrimeOS.
It was perfectly booting, but it changed the GRUB config and made it only possible to boot Prime.

I reinstalled Bliss OS, same thing.

I edited the GRUB config files, as mentioned here: https://unix.stackexchange.com/questions/492587/add-prime-os-android-x86-x64-to-grub-menu/519867?noredirect=1#comment1090351\_519867

It seems only one of the occurrence of an Android-X86 ISO is able to boot in a given system.
How to fix the config file to boot several of them?

# Answer
The way android\_x86 treats EFI GRUB config is buggy or misunderstood. No matter what android\_installation you choose from grub it will just boot the first found android system on the hard drive (and it seems that device.map that causes the pain).

Anyhow here is a workaround that I did to get stuff working:

I wiped 1 of my laptops for that (MacBook Pro 8,1 320GB hard drive)

* Installed Linux (Kubuntu) choosing the whole hard drive as one part + efi

```
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 298.1G  0 disk
├─sda1   8:1    0   512M  0 part /boot/efi
└─sda2   8:2    0 297.6G  0 part /

```
* Installed PrimeOS choosing sda2 (DO NOT FORMAT), ignore EFI installation (optional)
* Booted into Linux again and renamed primeOS installation folder

```
sudo mv /android /primeOS

```
* Installed Bliss OS the same way as PrimeOS + choose /system to be rw
* Booted into Linux again, renamed Bliss OS installation folder

```
sudo mv /blissos_x86.xx.xx /blissOS

```
* While still on Linux added both Android installations to GRUB by adding the following lines to `/etc/grube.d/40_custom`

```
submenu 'Android' {
    menuentry 'primeOS' --class android  --class android-x86_64 --class gnu-linux --class os {
        set root='hd0,gpt2'
        linux /primeOS/kernel root=/dev/ram0 SERIAL=random logo.showlogo=1 androidboot.selinux=permissive quiet DATA= USB_DATA_PARTITION=1
        initrd /primeOS/initrd.img
    }
    menuentry 'blissOS' --class android  --class android-x86_64 --class gnu-linux --class os {
        set root='hd0,gpt2'
        linux /blissOS/kernel root=/dev/ram0 SERIAL=random logo.showlogo=1 androidboot.selinux=permissive quiet DATA= USB_DATA_PARTITION=1
        initrd /blissOS/initrd.img
    }
}

```
* Updated GRUB on Linux `sudo update-grub`, and made sure the tail of `/boot/grub/grub.conf` contains the Android entries
* Rebooted and chose one of the Android installations and I meet an error telling me `hd0,gpt2 not found` bizarre o.O , after a bit of googling it says that it happens when running grub-install before generating or coping device.map to /boot/grub!
**To fix that I had to go back to /etc/grub.d/40\_custom and change** `hd0 to hd1` in my case

**NOTE** for small hard drives like mine it's better to use one partition (ext4) shared between Linux and Androids, from all systems you enjoy the full free space.
> 0 votes

---
Tags: boot, android-x86
---


# Question
Title: How do I disable screen timeout of Android?
I would like it to be disabled when I use in certain condition, such as during traveling with GPS.

# Answer
> 6 votes
## 1. Use a script

You can use a script via the terminal to simulate a long action and prevent the screen from timing out. Create the script below and run via Terminal Emulator on your phone. It simulates pressing the letter `r` and `Enter`, then wait for a second before repeating the process for the number of times you choose with `i`.

1. Create a file and put the following inside of it.

```
#!/system/bin/sh

i=86400 #Put a big number here

while [ $i -gt 0 ]
do

i=$(( $i - 1 ))
input keyevent 46 #Write the letter r
input keyevent 66 #Simulate Enter key on the keyboard
sleep 1           #Do nothing for 1 second

done

```
2. Save the file, give it a name for example `test.sh`. Open the terminal and navigate to the folder where the file is saved (if you don't know the path, use your file manager to get the path) with the command:

cd /path/to/your/folder
3. Then execute the command:

sh test.sh

The script will start running. When you no longer need it to run, just close the terminal.

## 2. Use an app

Caffeinate add a tile in the quick settings. In Caffeinate Settings, click on Caiffeine Tile, enable "Skip To Infinite Mode". Open the quick settings, click on the app tile. The screen should stays on until you press the tile again or click cancel on its notification.

# Answer
> 5 votes
If it's sufficient for you to only keep screen on when charging, you can turn on the *Stay awake* option in *Developer options*.

To do this:

1. Open *Settings*, navigate to *About \[device\]* (tablet, phone etc.)
2. Find *Build number* entry there. If there's none, it may be in *Software information* subsection.
3. Tap *Build number* 7 times
4. Make sure that a message pops up saying that you've become a developer (or that developer mode is already enabled)
5. Go back to *Settings* main menu
6. Find the newly-appeared *Developer options* item
7. Turn on *Stay awake* option

# Answer
> 2 votes
The app MacroDroid has a feature to set screen timeout to never. I did not test it for long but the app is free, so you can give it a try.

Install the app and enable the permission "modify system settings". Afterwards, setup a macro like this:

Trigger: setup a Trigger of your liking.

Action: Screen Timeout -\> never

Constraint: only if you need, otherwise, leave untouched.

Now, whenever the condition for the macro would be fulfilled/triggered the action would run and timeout for screen would be changed to never.

To change the timeout after your work is done, say you're done with Maps app, you need another macro which would work for the rest of your phone's usage.

The trigger is I believe needs dependent. You can try with app launch and closure based triggers, optionally coupled with some constraints.

# Answer
> 1 votes
If you are on LineageOS there is a custom tile called Caffeine which you can press repeatedly to increase screen timeout to infinity.

An app to replicate this is Caffeinate. Nougat (7.0+) is required to enable the quick settings tile.

---
Tags: lock-screens, gps, screen-timeout
---


# Question
Title: Is it safe to manually "clear cache" of apps on Android?
Ever since I updated Device Care on my Samsung Galaxy A10s running Android Pie, I lost my "Clear Space" option that clears unnecessary data, including cache of all apps including system apps on my phone!

Since, I'm not installing any third party apps, for this purpose, I decided to manually "clear cache" of any desired apps from Settings \> Apps \> `App name` and tapping `Clear Cache`. To my surprise, I found the Gallery app has about half a GB of cache, and I immediately cleared it.

I realize that apps cache stuff to improve performance, predict data to auto fill on text boxes, and various other stuff, to improve user experience. But that's taking up a lot of my Internal memory!

My question is :

* Is this a safe practice?
* Will this procedure damage the executable or normal functioning of my app?
* Or, whether all these are dependent on the App developer / manufacturer ?
* For default apps like Gallery or Chrome is this a safe practice?

# Answer
> 8 votes
Clearing cache of apps is one of the to-do things if your app is laggy, unresponsive or misbehaving.

It's *absolutely safe*, unlike clearing data of apps which makes you lose all the app data, accounts, settings etc.

For 1,4 a definite *yes*. For 2, 3 it is *no*. Re: safety being app dependent, it is possible that the cache is used for storing data and in the process of clearing cache, one may lose data. This is not a recommended way of app development, also mentioned in developer documentation and more of an exception, owing to bad practices.

Android framework shows a "Storage Low" notification when the free storage space reaches a minimum threshold. But even before that when free space is 1.5 times (as of Android 10) of the threshold, apps cache is cleared to free space as much as possible before warning the user. Since Android 8 apps are allotted filesystem quota to store cache files within given limits. Apps reaching or exceeding quotas are given priority when clearing caches.

For more, see

You don't want to install third party apps but I would recommend even making it a scheduled operation (in case you frequently need to) for which I find SD Maid an excellent option (even the free version would do and I am not promoting this app, I am only recommending based on personal experience).

---
Tags: samsung, android-device-manager
---


# Question
Title: Do not activate work profile when adding a G Suite account
I have a Samsung Galaxy S8+. I manage different email addresses, one of them is managed from a G Suite account. When I connect this account, my phone is installing a work profile, if I cancel during the work profile installation, I can not use my account. With the work profile, everything is separate (Gmail, Google Drive, ...), this is not really easy to use. I want to have this account as a personal account and not a work account.

I tried to remove it by following Pause or turn on your work profile, but on my phone, going to Settings \> Accounts, I only have my personal accounts and can not see "Work profile settings"

I have another account managed with G Suite but I do not have this problem.

I also have access to G Suite if the solution is to deactivate it there.

# Answer
> 1 votes
I found the solution.

In Gsuite console

Need to go in Devices \> setup (on the left menu) \> mobile device management

And disable the functionality

---
Tags: google-account, work-profiles
---


# Question
Title: What are the minimum hardware specifications for Android?
As per the title, what hardware do I need to be able to run various versions of Android?

# Answer
> 46 votes
Start with the Android compatibility page. This outlines goals for Android's compatibility and links to the current Compatibility Definition Document which has the technical requirements. All versions of the CDD to date are below.

These are also linked to from the Android Compatibility Downloads page which also includes test suites.

> There is no Compatibility Program for older versions of Android, such as Android 1.5 (known in development as Cupcake). New devices intended to be Android compatible must ship with Android 1.6 or later.

Notable points:

The requirements in these documents must be met for a device to be "Google Approved" and ship with the official Google apps such as the Play Store and Google Talk. However, they are not necessarily hard requirements. Since Android is open-source it can be modified to run on lesser hardware, and the opposite is possible as well — modifications necessary to run the OS on a device may make the firmware image too large to fit on it, just for example.

# Answer
> 5 votes
Here follows a somewhat simpler answer regarding the **RAM memory requirements**. According to the above mentioned docs, all versions from "Lollipop" (Android 5.0) up to Android 11 need at least **416 MB** memory. This is true if the default display uses "framebuffer resolutions up to qHD (e.g. FWVGA)". Higher resolutions need more memory.

For Android 7.1. "Nougat" and earlier, handhelds with 512MB RAM or less must have `ActivityManager#isLowRamDevice` set to `true`. \[1\]

From Android 8.0 "Oreo" onwards, this flag must be set for handhelds that have 1GB RAM or less. \[2\]

---
Tags: hardware, android-versions, hardware-requirements
---


title: Cannot find which alarm to wake me up

text:
# Question
Title: Cannot find which alarm to wake me up
I am using oneplus 6 with Android 10 in OxygenOS 10.3.3.

In recent 2 days, I was waked up by the mobile alarm at exactly 08:30 am every morning.

However, I cannot find the alarm app which generate this wake-up alarm.

I have checked the recent app, there is no app running recently at around 08:30.

I search my app with the keyword `alarm`, I found 2 app. I am sure that I does not set the wake up time in these 2 app at 08:30. Actually, I set the wake-up time to 07:10 for one of the 2 app.

So, I feel quite strange. Where is the 08:30 wake-up time set ?

Is my mobile hacked ?

Can anyone help me to find out why there is an alarm at about 08:30 am ?

# Answer
> 2 votes
As suggested by @beeshyams, I search my app with the keyboard `clock`.

Then, I found an app which set the wake-up alarm at 08:30 am.

Very strange, this app does not show in the RECENT APP list after alarm ringing.

---
Tags: alarm, android-10, oneplus-6
---


title: Merge whatsapp accounts

text:
# Question
Title: Merge whatsapp accounts
I have been using one WhatsApp number up until I went into another country where I started using a new number. In a new number I was joined into different groups and since WhatsApp allows one number per device I could not use old one. Now I want to merge my new number to my old WhatsApp account and have a single one.

Is that possible? I contacted their support and they have not answered yet.

I have both Sim cards in one phone

# Answer
you can change the numbers by going into Settings\>\>Account\>\>Change Number. Here you can Change Number form A to B and you wont loose your chats(data). Also you can select an option if you want you contacts to get notification about this change.
> 1 votes

# Answer
whatsapp now allowing users to change mobile number without loosing data. If you are ok to loose 1 whatsapp data, you can keep another. Just change your number and enjoy your whatsapp
> 0 votes

---
Tags: whatsapp-messenger
---


# Question
Title: Whatsapp: Export chat with media does not work properly
Whatsapp 2.20.108 on Android 9

I try to export a chat with media. I export it either to gmail or gdrive. (please note the difference: You can **backup** and **export** to gdrive. I'm interested in the **export** functionality)

For some chats, it works; but for other chats, only a few media are exported instead of all. Also the chat messages are not always exported properly. For example, for one chat, only messages after June 2018 are exported, but not the older ones.

What's going on here? Can this be changed? I want to save all the chat text and all pictures, videos, audio, documents.

# Answer
**tl:dr;** It's a WhatsApp limitation and there seems be to no workaround.

* Whatsapp export by *mail* has limitations. WhatsApp FAQ says

> * If you choose to attach media, the most recent media sent will be added as attachments.
> * When exporting with media, you can send up to 10,000 latest messages. Without media, you can send 40,000 messages. These constraints are due to maximum email sizes.

> A maximum of the last 10.000 messages are sent. However, if you have some videos or images, the number of exported messages might be much smaller.
>
> WhatsApp will start creating a “package” with the latest Media files and text. It will put the last media files and messages first and then will stop when approximately 18 Mb of data have been packaged.
>
> * If you have some videos in your chat, this could mean that you have two or three videos, some pictures and only one week of chat.
> * If you have basically many pictures, you will be able to export about 50 to 75 pictures and a few months of chat.
> * In case that you do not have many media files, you will be able to export a maximum of 10.000 messages with this system

* I couldn't find any such limitations for export to *Google drive* in whatsapp FAQ or on my search on the net but going by this issue on Google support and fair number of people who up voted this complaint, it seems to be common. As you can see, Google has washed their hands off and pointed to WhatsApp. You may like to raise this issue with WhatsApp and post your findings here to cover the Google Drive portion
> 6 votes

# Answer
I wanted to backup and delete some groups I was on that were taking up lots of space on my phone. Here is a long method which I used:

* Backup Whatsapp to GDrive as protection and switch off WiFi/3G so you can restore any screw up.
* Install Webdav on the phone. Will now allow internal memory to be mapped as drive letter. Can also use FTP server app. Map drive letter on Windows
* Webdav copy limit is 50MB files. Change to 4GB ( https://www.imageway.com/2017/email-hosting-blog/email-hosting-tutorials/increase-webdav-file-limit-in-windows)
* Copy entire Whatsapp folder to PC e.g. Original
* In whatsapp export chat without media as text file
* Clear/Delete the chat. Wait for deletion to finish.
* Copy Whatsapp to a new folder called Trimmed

Now some file manipulation depending on your preference.

* Use "dir /b /s /a-d \>Trimmed.txt" in the Trimmed directory root (need /a-d so directories are not listed)
* Use text manipulation to turn the Trimmed.txt file into a batch file to delete the Trimmed file list from the Original folder.
* The Original folder will now contain the files that were in that chat that you deleted

If you just wanted a copy of all files but want to keep the chat as it was then uninstall/reinstall Whatsapp and restore from GDrive and all will be back the way it was.

Alternative is root and decrypt Whatsapp database but it is too much work.
> 4 votes

---
Tags: whatsapp-messenger
---


# Question
Title: How to remove GMail contacts from Messaging app on Samsung Galaxy S Advance?
I have a Samsung Galaxy S Advance and when I try sending an SMS message to someone, I have to search through all my GMail contacts that for some reasons appear on the app along with my phone contacts.

I don't send mails through the message app and most of my GMail contacts are people who I sent just one e-mail in my entire life.

The Sync and Account settings don't let me turn off Contact sync, just remove the GMail account entirely, and there is no menu in the messaging app that lets me hide the GMail contacts.

Is there any way to make the messaging app only show the contacts I have on my phone?

# Answer
> 1 votes
In Android 4.1 Jelly bean follow the following steps:

* Open the `Contacts` app
* Tap the `Setting` touch button
* Select `Contacts to display`
* Select `Phone`

A similar procedure should work also for the earlier Android 2.3 Gingerbread.

# Answer
> 0 votes
I have note II. Here's my solution: in SMS, when you click create messaging icon, then click on phone book icon, you will see CONTACT tab listing everyone you have emailed and those in your phone book. Ignore that list. Scroll to the left to GROUP tab. Scroll down to MY CONTACT. It'll then show a list with the contacts on your phone (that is, you have already set your phone to display people with numbers only).

You have to manually do this every time but it beats seeing random people you have emailed. And you don't have to group or clean Gmail database.

Visual tutorial on how to do it: https://www.youtube.com/watch?v=vRvuSfTZ-1c

# Answer
> 0 votes
after following the steps above and still nothing happens. Go to phone settings\>accounts\>(click on your email)\>left bottom\>remove account\> check your sms app contacts. Then if you want to add your email again, make sure when you add the account to sync off all.

# Answer
> 0 votes
open up the default text messaging app, click the three dots in a row and tap settings. Click general and uncheck "Show email address. That will stop your email contacts from showing up when you start a new chat.

# Answer
> 0 votes
Here's what worked for me. Contact- settings- accounts- delete WhatsApp. My phone was completely free. (This was after I unsync Gmail and deleted the old Gmail account)

---
Tags: contacts, sms, samsung-galaxy-s-advance
---


# Question
Title: How to fix android-x86 install on VMware?
Using android-x86-4.4-r3.iso, I created a virtual machine in VMware Workstation 11.0.0 on Mac OS X. I just clicked Create virtual machine, chose my Android ISO, and just hit Next repeatedly until finished (just like I do to create Windows VMs).

I'm not a master at VMware. What did I do wrong in there? I ran into trouble, as in this picture:

I wait, but it doesn't change. If I am supposed to enter a command, I don't know what command. Can anybody help me?

# Answer
> 5 votes
You need to follow the instructions. Specifically:

> You have to change your virtual disk type to be IDE because the default type in VMware is SCSI, and \[the\] Android-x86 kernel is not configured to support SCSI. You can follow these steps:

> * Create a virtual machine.

* Edit \[the\] virtual machine settings after the virtual machine \[is\] created.
* Choose the hard disk and remove it.
* Add a hard disk to create a new virtual disk, then you can choose IDE as your virtual disk type.
* When finished, you can install android-x86 normally.

# Answer
> 1 votes
On windows, installing the recommended iso for vmware (android-x86\_64-9.0-r2-k49.iso) let you stuck at command prompt.

And if you try the debug startup, you might get stucked with a confusing message

> random: 7 urandom warning(s) missed due to ratelimiting

Since the live boot vesa start mode works, the urandom error is not the problem. Rather, the required video acceleration seems to be missing from vmware.

As a result you need to configure grub to start androïd in vesa mode.

This can be accomplished following a procedure described here with some mistakes or incompletness or a little outdated.

After the standard install, you need to

* reboot,
* On grub boot choice (white text on black background), keep first choice and type 'e'

After that, you can see existing boot commands in the boot sequence. \- Select the upper item and \- press e once more

To edit the boot command for GRUB, Use arrows to reach the right position

* replace the word "quiet" by "nomodeset xforcevesa", you should have:

> kernel /android-?.?-r?/kernel nomodeset xforcevesa root=/dev/ram0 androidboot.selinux=permissive SRC=/android-?.?-r?

presse **enter** to save. then **b** to boot.

For the grub configuration to persist upon restart, edit its configuration file:

> mkdir /mnt/sda mount /dev/block/sda1 /mnt/sda vi /mnt/sda/grub/menu.lst

Press "i" to use insertion mode:

* replace the word "quiet" by "nomodeset xforcevesa", escape to go back to command mode.

Then ZZ or :wq! to save and quit

You now can restart your vm using your custom configuration.

If ever you wait too long without any action, your screen might turn black, entering the sleep mode. Use your keynoard's menu key to recover a usable screen.

---
Tags: android-x86, virtualization, vmware
---


# Question
Title: Android-x86 in Vmware workstation fails to start
I need to emulate an Android 4.2 device in Vmware Workstation 7.1.

I downloaded the image **android-x86-4.2-20130228.iso** from http://www.android-x86.org/download. I tried to run it as a live-cd and also installed it on the VM harddisk (much like described at http://www.walterdevos.be/installing-android-x86-4-0-in-vmware-player). In either case I got the following console screen:

taken from this topic in the google groups. So, you may see the problem occurs not only in my environment. I tried recommended setting from the topic (`... nomodeset vga=(any unreal mode such as 987877 or 5785 etc)`) as a possible workaround. Nothing helps.

The question: how to fix the problem and run android-x86 in Vmware Workstation?

# Answer
Over time new versions of Android-x86 appear, and the problem is solved now by the next available release - build 20130725 with Android 4.3.
> 3 votes

# Answer
Last android iso did not work for me, I had to rely on this procedure, including a grub config file edition, and the choice of an iso recommended for vmware.
> 0 votes

---
Tags: android-x86, vmware
---


title: How to disable system autocorrect?

text:
# Question
Title: How to disable system autocorrect?
Gboard has a toggle to disable/enable spellcheck completely, but using 3rd-party keyboards such as AnySoftKeyboard or SwiftKey shows this red-underline and suggestion-box that cannot be disabled.

The spellcheck is actually part of the Android system, not part of AnySoftKeyboard.

How can I disable spellcheck for the whole system? Or does the developer of the keyboard app always need to implement this feature?

In case it's relevant, I'm on Android 10, ColorOS 7.

# Answer
> 1 votes
On Android 8.0+:

Go to `System -> Languages and Input -> Spell Checker -> Toggle use spell checker off`

Depending on your device the location of that toggle may be different

---
Tags: settings, keyboard, dictionary, auto-correct
---


title: Gmail Notifications on my Galaxy Note10

text:
# Question
Title: Gmail Notifications on my Galaxy Note10
I've used Galaxy Note 10 for about 6 months and one of the major issues that I have experienced was related to my gmail notification. I’d go several hours without receiving any emails and just think to check the app and as soon as I open the app then I’d have like 20 emails just sitting there that I had never received a push notification. Do you know any easy fix for this?

# Answer
Navigate to **Settings \> Device Care \> Battery \> App power management \> Apps that won't be put to sleep**. Add Gmail to this list to prevent it from being put to sleep for battery optimization. You could also disable this feature entirely by disabling "Put unused apps to sleep."
> 1 votes

---
Tags: samsung, gmail, samsung-galaxy-note-10.1
---


# Question
Title: How can I disable the Complete account setup prompt in Google Play Store?
Every now and then when I want to install an app from the Play Store, Google has to remind me that I haven't finished setting up my account, at which point I can only press '*Continue*', to be met with a payment option selection box:

Image taken from googleapis.com

I don't want to needlessly tie another account to my Google profile.
I know I can '*Skip*' from that point onward, but it's uselessly annoying. Is there any way to disable this prompt (that is: to let Google know that whenever I want to buy something I'll find my way myself)?

# Answer
Is the sign always popping up or does it not appear again when u skip once?

Other, just make a paypal acc and link it without actually purchasing anything. If I recall correctly u dont even need a credit card
> -1 votes

---
Tags: google-play-store, google-settings
---


# Question
Title: Will deleting all system apps from Android for debloating purpose prevent it from starting up?
The motivations of profit driven corporations like Google, Samsung, Microsoft alongside the motivations of the secret services like GCHQ and the NSA are at odds with my desire to use the expensive smartphone that I have paid for to run only the applications that I choose.

It's seemingly impossible to buy or build a phone with nothing but pure open source android installed. They all have shocking amounts of bloatware pre-installed.

So I have rooted my phone and I am using a the Debloat (terminal emulator) to remove system apps. I've removed nearly everything related to Google, Samsung, Microsoft etc.

My phone is now taking over an hour to restart and getting very hot.

My questions is, if I continue to remove all apps and system apps. Will the Android operating system continue to run in such a way that I will be able to install only the open source apps of my choice? Or are there some apps that are truly essential for the operating system to startup?

# Answer
## 1. All of the system apps cannot be deleted

System apps are not just apps to be used by end users, but many of them don't have any user interface and they provide some core functionality of Android OS. So you cannot remove them. E.g. **SystemUI** app loads basic user interface including status bar, notifications and theme, while **Settings** app does what the name suggests. Other examples of such apps deeply integrated with Android core framework include *Bluetooth*, *ContactsProvider*, *DocumentsUI*, *DownloadProvider*, *ExternalStorageProvider*, *Shell* etc.

Though mostly system apps are part of AOSP, some might be vendor or hardware related. E.g. on Qualcomm devices there are *QtiTelephonyService*, *TimeService* and *QCRilMsgTunnel* etc. in `/vendor/app/`. Vendors may also inject their own code to AOSP apps. *SystemUI* and *Settings* apps are almost always modified by device OEMs to provide custom user interface and settings. So are other essentially required apps like *Launcher*, *Keyboard* and *Dialer*, though you can replace them with your own apps.

So it's not always practically possible to remove bloatware apps completely, and the situation may vary for different vendors, different phone models and different Android versions. An easy way to avoid the hassle of failed debloating attempts is to use a vanilla Android custom ROM on a rooted device with open source kernel and unlocked bootloader.

## 2. Deleting apps may not debloat the device completely

If you are too much concerned about bloatware, removing apps (system and/or user) only may not be enough to completely debloat your phone. Though in most cases Java apps are the culprits and you need to be more cautious about closed source apps usually included by OEMs, it's not that the other software components on device may never contain some kind of bloatware stuff.

Android apps run in Java-like virtual machines, so they come into play only after the `zygote` is up. But from bootloader to `zygote` in booting process, a huge chain of native code is executed. Bootloader starts Linux/Android kernel which starts first userspace process: `init`. `init` in turn starts many native services and daemons in background which provide different functionalities. To name a few, there are `rild`, `netd`, `mediaserver`, `surfaceflinger`, `servicemanager`, `logd` etc. `zygote` is started in the last.

Most of this code is open source; Google develops AOSP and a common kernel source. Latter is further modified by device OEMs according to device hardware, but not all of them release kernel source. OEMs might also modify AOSP native stack, though it's not very likely that they contain some anti-privacy code. But SoC and hardware related code including bootloaders and binary blobs (HALs) in userspace are always closed source. And your device can be controlled remotely even if it's turned off or even if there is not operating system on it.

So it's hard to avoid falling prey to profit-driven corporations and secret services unless you stop using gadgets. To avoid human bodies being tracked or controlled remotely might be the next challenge.
> 2 votes

---
Tags: system, uninstallation, bloatware
---


# Question
Title: Where is the baseband firmware stored and how does Android interact with it?
My searches on the web didn't provide suitable answers to these questions:

1) **Where is the baseband firmware stored?**

My understanding is that this particular firmware is a RTOS built for the Baseband Processor (BP/CP). BP is part of a SoC, so it uses its own RAM and its own storage for the firmware.

**Is the firmware really stored in another eMMC than the Android firmware ?**

2) **How does Android interact with the baseband firmware?**

Again, my understanding (which may be incorrect) is that the BP communicates directly with the AP via a serial connection UART trough Radio Interface Layer (RIL). This RIL interact with Android telephony services.

**When does the baseband firmware take action ?**

3) **When the modem/baseband/radio partition is used ?**

It seems to me that it only contains the firmware.

One thing I've found is that this partition isn't mounted during Android runtime. **Is it only mounted for modem firmware update ?**

# Answer
> 6 votes
> Is the firmware really stored in another eMMC than the Android firmware?

No. Baseband firmware, kernel and userspace Android are all stored on the same eMMC (there might be some exception but I don't know of). Some SoCs have boot area partitions which are somewhat isolated at hardware level (usually used for bootloaders) but technically those are also on the same eMMC. So are Replay Protected Memory Block (RPMB) partitions.

> How does Android interact with the baseband firmware?

Your understanding is correct that Communication / Baseband Processors (CP/BP or modem) are completely isolated from Application Processor (AP, which runs Android OS) and they run their own RTOS. Communication between AP and BP can be through multiple possible channels but mostly those are proprietary just like BPs themselves (not sure why: if giants like Qualcomm are keeping backdoors, or hiding their security vulnerabilities, or don't want to put users' privacy at stake). On Qualcomm devices, for instance, its in-kernel implementation is called Shared Memory Device/Driver (SMD).

BP also includes a Digital Signal Processor (DSP) which is used for multimedia processing. Both Modem and DSP have their mountable partitions on eMMC (at least on Qualcomm devices) which they access through kernel using RPC mechanism. This old document states:

> *"No new hardware is required. An eMMC card will have 2 partitions reserved for modem storage.
...
All the modem requests will be handled by a user space program and the remote storage RPC client will provide an interface to the user application to receive the requests from modem and also to send the status of requests to modem."*

In-kernel implementation includes just an RPC client, while a closed source userspace daemon (*Remote Storage*) handles the actual communication with the modem. Though privacy advocates have issues with this approach. Since the kernel interfaces of SMD or other communication drivers are not documented, only the closed source binary blobs (HALs, provided by SoC vendors) in userspace can communicate with them (e.g. `rmt_storage` uses Userspace I/O API), while Android framework communicates with the HALs. Reference implementations of HALs are part of AOSP.

> Is it only mounted for modem firmware update?

No. MODEM is usually first partition on eMMC with FAT filesystem, while DSP has EXT4. Both have entries in `fstab` and are mounted on every boot. `rmt_storage` also provides BP access to IMEI which is stored on signed partitions like EFS, MODEMST1, MODEMST2, FSG, FSC along with modem firmware files. All of these partitions have no filesystems but are binary blobs written to raw partitions. So they aren't mounted. All or some of these partitions may get OTA firmware updates from OEM/SoC vendors.

Like `rmt_storage`, Radio Interface Layer Daemon (`rild`) is another HAL from vendor which facilitates communication between Android's telephony stack and modem's LTE/3G/2G interface through kernel using control and data transfer protocols like RMNET, QMI etc. Other isolated components including RPM, GPS, Modem Diagnostic Mode and TEE (not sure about SE) also communicate with AP using similar communication channels in kernel (which also include UART) and their respective HALs in userspace. RPM (Resource and Power Management) and TEE (Qualcomm's TtustZone) have also their partitions on eMMC, both contain ELF executable binaries.

---

**RESOURCES:**

---
Tags: partitions, device-firmware, radio-firmware, processor, baseband
---


# Question
Title: When installing new ROM through fastboot, which .img files must be flashed, with what arguments, and in what order?
I own a Oneplus 7T, which runs Android 10 and therefore has no working TWRP to flash ROMs with. It's bootloader is unlocked and is rooted.

When installing a new ROM, whether it is a custom ROM or an update to the current ROM, I install them by extracting the ROM zip, extracting `payload.bin`, and flashing certain `.img` files in fastboot, following the instructions found here under the 'Manual Flash' section.

However, I'd like to understand more about this process. The instructions flash less `.img` files than were extracted. For example, in the recent Oneplus 7T OOS 10.0.11 update, the the number of `.img` files extracted (31) is less than what was flashed according to the instructions (19). Furthermore, the instructions passed the arguments `--disable-verity` when flashing two of the .imgs, but not the others.

Therefore, I'm wondering:

1. What does each .img file do?
2. Which files must be flashed and in what order?
3. Why are certain files flashed with certain arguments?

# Answer
I own a OnePlus 7 and the same developer has answered a similar question in One Plus 7 device forums

**Question**

> I just noticed, the script in bat file only flashes 25 .img files, but when I extracted payload.bin in OB2 I saw 32 .img files. Does this mean that the other .img files in payload are not needed? Or can I add the command in bat file to flash other images?

**Answer**

> They can't be flashed using fastboot, that are the criticals partitions, they are needed and it's for that these fastboot roms can't be used to update or downgrade the software you have on your device, because the fastboot roms can't flash all partitions. This fastboot roms should be used if your system cannot be used and if you don't have access to TWRP

* They need to be flashed in the order specified. All of them (see next point)
* `.img` files replace the file on the device with the one in fastboot ROM, *except* for critical partitions (I am not sure what these are for your device but could be boot loader, OTA, TEE, SoC etc) . This accounts for the difference in number (31 extracted but 19 only flashed). See Irfan's comment
* `--disable-verity` is only applicable for `vbmeta` header files. For more details, see How to disable dm-verity on Android with "user" build type ROM? where the concept is well explained, in detail.
> 3 votes

# Answer
If your ROM developer does it, you can just

```
fastboot update rom.zip

```

Where `rom.zip` contains `android-info.txt` and at least `boot`, `system`, `product`, `vendor`, `vbmeta`, and `dtbo` img files.

If necessary, unzip and rezip creating an empty `android-info.txt`.

IMG files contain an exact replica of the partition which is copied exactly onto the device.

---

While it may have been a requirement before, for Android 10-based Google Pixel, only `boot`, `system`, and `vendor` were flashed.

```
extracting android-info.txt (0 MB) to RAM...
Checking 'product'                                 OKAY [  0.050s]
Setting current slot to 'b'                        OKAY [  0.447s]
extracting boot.img (29 MB) to disk... took 0.132s
archive does not contain 'boot.sig'
Sending 'boot_b' (29825 KB)                        OKAY [  0.801s]
Writing 'boot_b'                                   OKAY [  0.706s]
archive does not contain 'dtbo.img'
archive does not contain 'dt.img'
archive does not contain 'recovery.img'
archive does not contain 'vbmeta.img'
archive does not contain 'vbmeta_system.img'
archive does not contain 'super_empty.img'
archive does not contain 'boot_other.img'
archive does not contain 'odm.img'
archive does not contain 'product.img'
archive does not contain 'product_services.img'
extracting system.img (1949 MB) to disk... took 7.095s
archive does not contain 'system.sig'
Sending sparse 'system_b' 1/4 (524284 KB)          OKAY [ 13.063s]
Writing 'system_b'                                  OKAY [  4.652s]
Sending sparse 'system_b' 2/4 (524284 KB)          OKAY [ 13.006s]
Writing 'system_b'                                 OKAY [  4.006s]
Sending sparse 'system_b' 3/4 (524284 KB)          OKAY [ 13.052s]
Writing 'system_b'                                 OKAY [  4.255s]
Sending sparse 'system_b' 4/4 (423068 KB)          OKAY [ 10.459s]
Writing 'system_b'                                 OKAY [  3.348s]
extracting system_other.img (313 MB) to disk... took 1.306s
archive does not contain 'system.sig'
Sending 'system_a' (320532 KB)                     OKAY [  7.964s]
Writing 'system_a'                                 OKAY [  3.700s]
extracting vendor.img (259 MB) to disk... took 1.012s
archive does not contain 'vendor.sig'
Sending 'vendor_b' (265808 KB)                     OKAY [  6.615s]
Writing 'vendor_b'                                 OKAY [  2.748s]
archive does not contain 'vendor_other.img'
Rebooting                                          OKAY [  0.041s]

```
> 1 votes

---
Tags: rom-flashing
---


# Question
Title: How do I change the Battery Percentage that corresponds to a Voltage in Android
My original Li-ion has 3000 mAh capacity. I've modded my device to have a total of 7000 mAh capacity now.

The enhanced capacity means that my percentage is not displayed accurately anymore.

About 2000 mAh charge displays 75% charge. That means 5000 mAh are located in the top 25% of my battery indicator.

(Charging times confirm: 1 Hour @1800 mA goes from 25% to 75%, but 75 to 83 takes almost the same time and so on.)

I know a lot is possible with a rooted Android device but I'm not too much of a software person.

How can I change the percentages that display? There has to be some kind of lookup table where the Vbatt→"%" conversion is done.

Edit: If no one can help me, I am going to add a bunch of tp4056 chips to enable actually charging.

The software seems to mess around quite a bit.

Now my phone is charging the 2nd time, and (I assume because it is calculated that the battery should be “full” by now in terms of mAh) it has reached “100%” despite the Vbatt being 3.95 Volts. Actual charge is ~ 70% at max!

Here you can see it charged more than 2000 mAh after reaching “100%”. I stopped the charge at 4.2 V.

The lower portion reached 75% after 1000mAh and took 900 more for the rest. So this has lost all it's 'linearity'.

Can I (additionally to changing the display behavior) also change the charging algorithm?

Do I have to compile a kernel by myself? Is there settings for this? I want higher current first and very low current for the charging above 4.1 V.

# Answer
Let's look at the challenges you would face in achieving correct reading, is not a magic key that let's you do everything easily:

* The battery capacity (mAh) is coded in two places - the ROM and kernel (see Where are the battery capacity files located?) Only OEM would know from where the values are picked up, so you would need to have a custom ROM and kernel that stores this higher value. You would need to do this own and this is definitely **not** a trivial effort. ROM "chefs" wouldn't be interested in this (not appealing or in demand). You say you aren't a software person, so it's safe to discard this path.
* The charging algorithm is also proprietary and not open source given the competition ( I can charge from xx to yy% in so many minutes is the sales pitch). So that's your next **huge** challenge since the charger, charging cable and the device need to be in sync with the algorithm. Impossible for you to replicate. See the charging algorithm (Source ) of an Anker power bank to get a sense of how challenging it would be to figure out on your own.
* Charging incorrectly is going to damage your new battery and the purpose of acquiring it is partly defeated. This would be the result since you aren't easily going to achieve the first two points.

It is for these and probably more reasons that third party sellers who provide extended batteries do not attempt to show the correct percentage. Read the reviews of any such product and you will find complaints around this

**What you can do**

* Use a battery bank of desired capacity.
* Experiment at various charging speeds and arrive at a rough correlation between shown and actual voltages.
* Rig up hardware based system as you suggested in your question (off-topic on this site)
> 3 votes

# Answer
The go-to for my case would be not to edit voltages, but to change battery capacity in the system.

The device needs to be rooted in order to access and edit /etc/floating\_feature.xml . This contains a section containing the capacity in mAh which can be edited to the desired amount (in my case 6500 mAh).

This is from a post by user Yamaha169 on XDA forums. (https://forum.xda-developers.com/s7-edge/help/mod-aftermarket-misreading-battery-t3510597/amp/)
> 0 votes

---
Tags: battery, charging, stock-android, kernel, samsung-galaxy-s7
---


# Question
Title: Nexus 6P stuck on bootloop after rooting
So today I bought a used Nexus 6P for the purpose of installing Kali Nethunter on it, and then after some searching I found out that I should root the device first.

So I followed this guide using SuperSU, I installed the SuperSU from this website, the phone then hung on the Google logo for like 30 minutes, then I found out that the SuperSU project is dead.

I said ok maybe because it's an older phone the root should work and then I entered recovery mode through TWRP and went to the terminal and I saw the `#` sign and to maker sure I ran the command `whoami` and it gave me root, and then I read that if I'm stuck in a bootloop I should reflash the ROM that I already have installed, but I said it wouldn't make a difference if I flashed Nethunter, it's a new ROM anyway, and now it's been stuck on the Google logo for another 30 minutes.

# Answer
I found a solution to this which is flashing the stock ROM using the adb/fastboot tools, but I used an older version because the latest one didn't work for some reason and I followed the guide on google's website hope that'll help someone. :)
> 2 votes

---
Tags: rooting, rom-flashing
---


# Question
Title: Samsung Fold, Settings screen items looks strange
I've recently updated the Galaxy Fold to Android 10, OneUI2.1.

On the outer screen the setting items looks really strange:

I think those switches need to be in one line with the title and subtext items. This screen is small, but I think before the last update it was working fine.

This is the good way (screenshot is taken from another Galaxy /not Fold/ phone):

Can I do something to fix this beyond waiting for Samsung to fix this in some future release?

According to @MarianD, I have changed the font size to the smallest available:

Here is how it looks like (nothing is changed, except the font size):

# Answer
All you have to do is to select the *smaller font size* in Settings.
> 0 votes

---
Tags: samsung-one-ui, samsung-galaxy-fold
---


# Question
Title: How to fix "Can't install XYZ app" error on Google Play?
I'm getting this dialog when downloading an app/game. How do I fix it?

Dialog content:

> **Can't install Fish Paradise - Ocean Friends.**
>
> Try again, and if it still doesn't work, see common ways to fix the problem.

# Answer
there are several possible reasons for that.

1. your android version isn't compatible to this app
2. your device misses a feature or a library that is required by the app
3. you have no enough space for the app to be installed
4. the app has some kind of bug (this way, you can leave a review or contact app developers if the question is important)
> 0 votes

---
Tags: google-play-store, downloading
---


# Question
Title: What if one application couldn't write incoming voice?
I tried a call recorder on my Android 7.1.2 phone, but only my voice was recorded, not those on the other side. Does it mean that my phone doesn't support something or should I try to find an application that may work?

# Answer
I was able to find an application that works properly (Call recorder for Android version 25 from f-droid.org).
> 1 votes

---
Tags: compatibility, voice-recording
---


# Question
Title: How to insert Unicode characters by their hex codes using USB keyboard on ICS?
Is typing hex codes to insert Unicode characters possible when using USB external keyboard on vanilla ICS or Jelly Bean? Any root modifications available to achieve this?

Or, if not possible system-wide, are there any text editing apps that will allow such behavior?

Inserting Unicode characters such as various bullets, subscript and superscript numbers, Greek letters and so on has been very useful while studying. I normally use gedit on a netbook running peppermint distro, because it's very simple and nondistracting while typing my summaries. I've ended up knowing by heart the most used hex codes. I'm planning to replace the netbook by a cheap vanilla ICS tablet (already factory-rooted) and a comfortable, decent USB keyboard, and the described feature would be mostly appreciated.

Thanks in advance!

# Answer
> 2 votes
There is a way, actually! By editing system files in a rooted device through ADB. These two pages have the answer:

First, http://source.android.com/devices/input/key-layout-files.html explains how to edit the files that map any key scan codes of your USB keyboard (or even joystick buttons and the device's physical and touch buttons) to standard Android key codes. That's an optional step, useful if there are keys in your keyboard that do nothing in Android, or to remap the ones you don't use (multimedia keys, etc.). There's an app, Key Test by Chris Boyle, that will assist identifying key scan codes from your keyboard.

Then, http://source.android.com/devices/input/key-character-map-files.html shows how to map those Android key codes to Unicode characters when typing, so you can assign, for a given keystroke and modifiers combination, any Unicode character by its hex code, or one of the "magic" hex codes below:

> The system reserves two Unicode characters to perform special functions:
>
> **'\uef00': When this behavior is performed, the text view consumes and removes the four characters preceding the cursor, interprets them as hex digits, and inserts the corresponding Unicode code point.**
>
> '\uef01': When this behavior is performed, the text view displays a character picker dialog that contains miscellaneous symbols.

So to have the behavior I wanted, all that's needed is to assign \uef00 to a key combination. Sweet!

# Answer
> 0 votes
Try this app: https://play.google.com/store/apps/details?id=org.tiwu.unicodekeyboard&hl=en\_US It does EXACTLY what you asked in your question. The app is free and does not contain any ads nor in-app purchases. You simply need to enter the Unicode character point, without the "U+", and then click on the character to enter it in the textbox. I hope this helps!

---
Tags: external-keyboard
---


# Question
Title: Hide onscreen buttons of back, home & recent apps in Keyboard apps on Moto G5 Plus
I have Moto G5 Plus. I have enabled One-button navigation in Moto Actions using which I can use the swipe actions on home button to replicate back/home/recent apps buttons. This hides the onscreen buttons of back, home & recent apps.

But when any keyboard app is open (SwiftKey, GBoard) then these buttons appear onscreen. How can I hide these buttons when keyboard app is open?

# Answer
> 0 votes
It seems this was issue with Moto G5 Plus itself. Lenovo release an update NPN25.137-67 which fixes this issue and I no longer see the onscreen buttons of back, home & recent apps in Keyboard apps anymore.

# Answer
> 1 votes
Or go to settings \> display \> expanded desktop and hide the navbar for your keyboard apps.

If that doesn't work, use tasker to hide the navbar when a keyboard is open.

# Answer
> 0 votes
I had a similar issue with my phone, but that happened after I switched on the magnify option. Check if u have the accessibility icon on the right hand corner of the navigation bar. If yes just go the setting \> accessibility\>magnification\> turn of magnify with button. The navigation bar will disappear.

---
Tags: keyboard, 7.0-nougat, motorola-moto-g5
---


# Question
Title: How do I mount a Synology remote folder on Android 8.0?
My phone is not rooted.

I have shared folders on a Synology drive which I can mount on a couple of different Macs running different versions of Mac OSX. I am assuming the folders are published using CIFS/SMB but I cannot mount them on my Android phone using file manager type applications. So far I have tried "ES File Explorer", "Network Browser" and "File Commander" none of which are able to connect.

I can connect to the Synology home page using a browser on the phone so network connectivity is OK. Do I need to disable/enable firewall/sharing settings on the phone?

# Answer
No specific configuration beyond the availability of published shares is required.

Sometimes issues arise due to the stability and capabilities or lack thereof of Android apps to mount the shares. The following apps have been tested and were able to reliably and successfully access SMB shares from the Synology server (at 2 June 2020) using a simple combination of (server) IP Address, username and password:

LAN drive, Cx File Explorer, X-plore, File Commander
> 0 votes

---
Tags: remote-access, file-sharing, cifs
---


# Question
Title: Is there a QR code reader with instant sync to PC?
QR codes are a great idea, but often I find that I would be better off reading the content on my PC instead of my phone. What I really would want is an app that would read a QR code and instantly send some kind of notification to the PC where I could access right away. I know I can use the "share" functionality of e.g. Google Goggles, but it's too many steps to achieve what I want. Basically I'd like it to happen in 3 steps:

1. Start the app
2. Point your mobile camera at the code
3. Click something on desktop UI to access it

There are too many QR code readers in the market to go through all and find if any of them has this kind of functionality.

# Answer
This is not an exact answer, but it can simplify what you want to do..

You can copy results in clipboard & get clipboard data on PC using AirDroid (It doesn't require internet connection; it works over internal Wi-Fi network).
> 2 votes

# Answer
My app Barcode to PC allows you to instantly send barcodes to the computer and type them.

There is also an option to automatically open the URLs in the browser, but it must be enabled in the server settings.
> 0 votes

---
Tags: applications, qr-code
---


# Question
Title: How to collect the data from another app before it goes to the UI?
I'm using an android app, it receives backend updates and displays on the UI.

How could an automation app, a script, or any solution read the updates received and to make some decisions/start other services before it is sent to UI?

Android at wi-fi with the weather forecast app. App or service collecting the data stream in the backend. Uses the data collected in the backend to automate decisions.

thanks.

# Answer
The data once received by an app is protected by the Android sandboxing system that restricts/protects each app. Hence unless your device is rooted the received data (and the app does not provide a public interface to access the data) is inaccessible to any other app (hence also to any automation app).

The only chance to get some data would be on the transmission level by intercepting the connection between app and server. However nowadays this connections usually is a HTTPS connection which means that the app would no accept the presented server certificate of the man-in-the-middle proxy as apps only allow the default system certificates as root certificates. Here again rooting would be the only option to add a custom certificate to your device to make the weather app accept the custom server certificate.
> 1 votes

---
Tags: automation, background-process
---


title: Specific MP3 plays over headphones only

text:
# Question
Title: Specific MP3 plays over headphones only
I am out of ideas. The following MP3 does not play correctly on many Android-devices: https://www.heimatmuseum-zinnowitz.de/app/download/12553824899/Kino%20Audiodatei%20Deutsch.mp3?t=1590484494

It contains a German female voice. But on several devices, it does only play over the headphones. If I use the normal speaker, I do only get some noise.

I tried many different things:

* Used different devices (works fine on a Samsung-tablet (Android 8.1), but does only work over headphones on my Huawei P20 Pro (Android 9) and another older phone (Android 7)).
* On Windows, it works just fine.
* I converted the file a different format (OGG and WAV)
* I changed the sampling-rate from 48.0 kHz to 44.1 kHz
* I switched between constant and variable bitrate
* I tried the default-player and a different app (MusicFolderPlayer)
* I used different converters (Audacity and several online-converters)

The problem is always the same: I hear everything using headphones, I do only get noise with the speaker. How can I get this to work?

Needless to say that all devices used for testing are working fine with other files.

# Answer
**This is due to the audio having stereo (left and right) channels being out-of-phase.**

To put it very simply, when the audio waveform on the left channel is out-of-phase with the right channel, the resulting mono mix (basically `(left+right)/2`) may reduce the volume or even mute it (further reading: destructive interference & dead spot).

When playing with headphones or stereo speakers, there should be no issue hearing the audio because each channel is played through each speaker respectively. However, on some Android devices (e.g. Nexus 5) that only supports mono playback, the issue appears due to the previously mentioned phenomenon.

Depending on the model, there might be a true stereo (left-right channel separation) mod that can be applied/flashed. E.g. a detailed post by user "chdloc" on XDA Forum to apply true stereo on Nexus 5.

The alternative workaround is to fix the audio source by inverting the waveform on one of the channels. Example using Audacity (reference: https://forum.audacityteam.org/viewtopic.php?t=71779):

1. Open the audio file
2. (Optional) Select the track, then open the menu bar: Tracks - Mix - Mix Stereo Down to Mono to see the effect of destructive interference, then undo the operation to continue to the next step
3. Select the track
4. Open menu (press Shift + M, or click the dropdown menu above the "Mute" and "Solo" button)
5. Select "Split Stereo Track"
6. Select one of the channels (either left or right)
7. Select all region of the track (double-clicking the waveform, or from the menu bar: Select - Region - Track Start to End)
8. On the menu bar, select Effect - Invert
9. Open menu on the first track (follow step 4)
10. Select "Make Stereo Track"
11. (Optional) Select the track again, then open the menu bar: Tracks - Mix - Mix Stereo Down to Mono to see if it is still affected by the destructive interference, then undo the operation to continue to the next step
12. Export the resulting audio from File - Export - ...
> 3 votes

---
Tags: audio
---


# Question
Title: Sending email from an alias using Gmail app
I use G-Suite for business. I have the main domain (Let's call it example.com) and a number of secondary domains (we'll use example.co.uk for this). I have set up aliases so that I can receive email sent to joe.user@example.com and also joe.user@example.co.uk.

Using GMail on the web I can select a default email address for outgoing email. So, although my primary address is joe.user@example.com my outgoing email appears to come from joe.user@example.co.uk

So far, so good.

Now I want to do the same thing on my Android phone and tablet.

**How can I set up Gmail for Android to use my alias joe.user@example.co.uk instead of my primary address joe.user@example.com?**

Note that I don't want to reset the phone and sign in with a different address. I just want to change the GMail alias.

One answer to this question suggests it's not possible, but that was five years ago. Has anything changed?

# Answer
It's still not possible if you use Gmail app.

Alternatively, you can use FairEmail ( link to the community ads promotion), which let's you do this and has *many* more features available.

I use Gmail aliases with this app (not affiliated to it) . You can refer to the extensive app FAQ in case of issues or join the active app forum on XDA
> 2 votes

---
Tags: gmail
---


# Question
Title: How can I invert the colors for only a given application on Android? (and not for all applications)
How can I invert the colors for only a given application on Android? (and not for all applications)

Turning on the "color inversion" option in the settings invert the colors for all applications.

# Answer
> 1 votes
Not possible on stock Android. Google help clearly says :

> Color inversion applies to everything on your device, including media.

If you are on Android 10 using Dark theme and Color inversion together as explained (see link) may be an option in some cases.

If you root your phone and install custom ROM that supports per app color inversion, you are lucky. AFAIK, there isn't an app or Xposed module available for this purpose

---
Tags: color
---


# Question
Title: Bluetooth audio as input for video recording
Apps like Bluetooth Mono Router & BTmono let you hear music on old Bluetooth (BT) earphones that were mono (meant for voice calls only since they support Headset Profile (HSP) and don't support A2DP profile) . (Edit : MonoBt play is another such app)

So, if you have such mono sets lying around, you can use them for listening to music, YouTube, etc which is good.

There is a more interesting aspect to it - these allow you to use your BT ear sets (whether mono or the latest ones supporting BT 5.0 ) to input audio into a video recording on your cell phone. You can comfortably record videos with your BT audio input as long as you are in range, without using wired microphone or UHF transmission. See Bluetooth input for video recording : Android 10, One Plus 7

**How does this work?**. (I've spent several hours unsuccessfully searching the net and sister SE sites) .

# Answer
I requested developer Bluetooth Mono Router to explain this and if possible answer the question here but there is no response. What I could gather from comments and reviews is this :

* App creates a *virtual call* environment thereby letting audio (music etc) be treated as voice and hence you can hear using mono ear sets meant for voice calls.
* Recording of audio is *not* by design. It's an incidental artifact of the virtual call feature. It's not a design feature.
* This has nothing to do with Bluetooth versions
> 1 votes

---
Tags: bluetooth, video-recording
---


# Question
Title: How can I disable autocorrect for some languages in my keyboard?
I speak more than one language, and so I have set up my keyboard app (Gboard) with multiple languages, each with its own keyboard layout. I like the fact that autocorrect is enabled in English, I find this feature very useful. However, in the other languages, the autocorrect is terrible and I find it frustrating.

How can I turn off autocorrect just for non-English languages? If this is not possible using Gboard, are there other keyboard apps that have this feature? I welcome answers about any keyboard app.

# Answer
The keyboard that comes with Samsung phones has this feature.

You can switch keyboards by pressing the little keyboard icon in the navigation bar, or by opening Settings, General Management, Language and Input, On-screen Keyboard.

You can configure the Samsung keyboard like this:

* Open its settings by going to Settngs, General Management, Language and Input, On-screen Keyboard, Samsung Keyboard.
* Open Languages and Types, and add the languages that you want to add.
* Go back to the Samsung Keyboard settings
* Open Auto Replace, and enable auto replace just for the languages that you want to enable it for.

I don't think it is possible to install the Samsung Keyboard on other types of Android phones.
> 2 votes

---
Tags: keyboard, gboard
---


title: What can WhatsApp access on my phone?

text:
# Question
Title: What can WhatsApp access on my phone?
> The app WhatsApp would like to have permission to access my device's photos, media and files.

If I grant permission, exactly what can (could) the application access?
Can it access all of the photos on my phone? Or just the photos I have shared or downloaded with the app? Can it access all of the phone's media?
Can it access all of the files on the phone?

Or does Android restrict what it can access? If so, what does it restrict it to and how?

I'm not interested in what WhatsApp says it will or won't access, or even what it has promised in its EULA. I'm more interested in what it could access, if it wanted to when granted the access.

# Answer
> 4 votes
You can take the description "device's photos, media and files" for sure. If you grant this permission to Whatsapp everything that is located in your "internal storage" (sometimes called `sdcard` section). This includes:

* Photos (usually stored in the `DCIM` folder)
* Videos
* Downloads
* Music
* Ringtones
* ...

Only on phones running Android 10 or higher because of the new "scoped storage" feature the access is a little bit limited. And starting with Android 11 it seems like Google will narrow down the permission you grant on the common files again.

---
Tags: permissions, privacy, file-properties
---


title: How to mount rclone on Android?

text:
# Question
Title: How to mount rclone on Android?
I had `rclone` mount my Google Drive on my Android 7 box with the Magisk module and Termux. But it has stopped working and now there's only an empty folder. This is the `rclone` log:

```
2020/06/03 07:33:54 mount helper error: CANNOT LINK EXECUTABLE "fusermount": library "libandroid-support.so" not found
2020/06/03 07:33:54 Fatal error: failed to mount FUSE fs: fusermount: signal: aborted.

```

I just want to mount `rclone` on my rooted HiMedia Q10 Pro Android TV box so that I can view my GDrive as a permanent folder on my file system.

# Answer
> 9 votes
The Magisk module you linked is using `fusermount` binary from this thread which is built for Termux environment. But `LD_LIBRARY_PATH` environment variable is not being set properly in the module, so the error occurs. A simple approach is to use static `fusermount` binary, I already posted in the same thread.

`rclone` uses FUSE which you can mount manually from CLI without relying on Magisk module. I have explained in detail How to bind mount a folder inside /sdcard with correct permissions?. Some issues related to using FUSE on Android are explained in this post. Here I'm describing steps briefly related to `rclone` only. I'm using Termux for explanation. You can use some other terminal emulator app or `adb shell` with differences in paths.

Instructions below require that **you have a rooted device**.

* Install `rclone` binary available in Termux repos (by running `pkg install rclone`) or download from official website official website. Download static `fusermount` binary from here (available for both `aarch64` and `armeabi-v7a`). Extract the downloaded archive files. I assume that downloaded files are placed in `/sdcard/Download/`.
* For ease of repeated use create a shell script `/sdcard/Download/rclone_mount.sh` using any text editor. Copy/paste the following lines:

```
#!/data/data/com.termux/files/usr/bin/bash -e

# must be run with root privileges
[ $(id -u) -eq 0 ] || exec su --mount-master -c "LD_LIBRARY_PATH=$LD_LIBRARY_PATH HOME=$HOME PATH=$PATH:$HOME/bin $0"

# make sure to be in root mount namespace
[ $(readlink /proc/1/ns/mnt) = $(readlink /proc/self/ns/mnt) ] || nsenter -t 1 -m -- "$0"

Unmount() {
    fusermount -u /mnt/runtime/write/emulated/0/GDrive 2>/dev/null || :
}

# make sure it's not already mounted
Unmount

# make sure it's unmounted after rclone is killed
trap 'sleep 1; Unmount' EXIT

# mount remote in /sdcard/
rclone -v mount GDrive: /mnt/runtime/write/emulated/0/GDrive --gid 9997 --dir-perms 0771 --file-perms 0660 --umask=0 --allow-other

```

See `rclone mount` manual for explanation on commandline options. Some options may impact the performance.
* Make sure Termux is granted Storage permission and execute following commands:

```
~$ cd
~$ pkg install -y util-linux
~$ mkdir -p bin /sdcard/GDrive
~$ cp /sdcard/Download/{fusermount,rclone,rclone_mount.sh} bin/
~$ chmod -R 0755 bin
~$ dos2unix bin/rclone_mount.sh
~$ bin/rclone config

```

Follow the instruction on screen (see `rclone config` manual for details) to create configuration file (`~/.config/rclone/rclone.conf`) for Google Drive (or whatever remote service you want to use). I assume you chose the remote name `GDrive` (as used in above script).

---

Whenever you need to mount `rclone`, open Termux and run `bin/rclone_mount.sh` (or create Termux Widget to run the script from home screen conveniently).

* All apps with Storage permissions should be able to explore `GDrive` folder (bind mounting to `read` and `default` views isn't necessarily required). But some apps may crash due to slow network activity, others may require more caching (see options) etc.
* Trigger a Media Scan if e.g. pictures on remote don't appear in gallery app.
* When done press `Ctrl ^C` to stop `rclone` process and mount.

---
Tags: mount, google-drive, magisk
---


# Question
Title: Wrong playlist order in Google Play Music app
I use the Google Play Music app to play locally stored music on my Galaxy Nexus running Android 4.3. I have created some playlists in standard extended m3u format on my computer and transferred them to my phone.

The problem is that the app plays some of the songs in the wrong order. Most songs are shown and played in the right order, but about ten percent are in no particular order.

Shuffle is off (the symbol is black rather than orange).

The playlist is constructed properly and works without issue on winamp on my phone and numerous apps on my computer. The music files are all properly tagged and stored in `/sdcard/Music/artist/album/song`. Playlists are stored in `/sdcard/Music`.

I don't use any of the cloud features of the player.

I've tried deleting all music and rescanning, as well as clearing the media storage data, but that does not help.

BTW, according to Is Google Play Music the same as the stock Android Music App?, the Google Play Music app is not the same as the stock Android music app, but I can't find the 4.3 stock Android music app. Is that post still true?

Any ideas for getting the app to play playlists in the correct order?

EDIT: I used a Playlist backup app to export the Google Play Music version of a playlist and compared it to the text of the m3u file present on the phone that GPM purported to read. This confirmed that GPM messed up the order of the tracks on the playlist.

# Answer
> 2 votes
I believe this happens on very large playlists (\>100 files). I use doubleTwist to sync and my large playlist is always out of order in GPM no matter what I try. Fortunately the dT music player doesn't appear to use the playlist after creating it; but instead uses its own database for the order.

# Answer
> 0 votes
Had the same issue for say 50-75 files and when i reported to the Developer at the bottom they asked me to simply update the app.Later in the next release this bug appeared again so i simply disabled the app and went for another player or another player.

# Answer
> 0 votes
I spent some time downloading different "recommended" players and eventually found GoneMad which has a 14 day trial and it ordered my tracks correctly. OK there is a price to pay after the trial but it's worth £3.12 to get the play order correct.

# Answer
> 0 votes
I fixed this on an album by deleting it from my Pixel 2. Then on my PC, I opened the album's folder in Foobar 2000, selected all tracks, right click --\> tagging --\> get tags from freedb.

Then I re-copied it to my Pixel 2 and the order was fixed.

# Answer
> -1 votes
I found this; Google Play Music displaying songs out of order? Here's how to fix it.

All the tracks needed a disc number. It seems to work on my Samsung Galaxy at the moment.

---
Tags: google-play-music
---


# Question
Title: Serial Number Got Changed After Factory Reset
After "Factory Resetting" my tablet I realized that the serial Number was changed (it is now a weird number 0123456789ABCDEF).

**Edit March 17 2019**

This is the number that shows when I do adb devices. As far as I know this is the serial number and not the Android ID.

**End Edit**

Why did this happen? How do I go about returning it to its original SN? How do I prevent it from happening again?

I have seen some options of changing the SN number but I'm reluctant to try them since the programs they use doesn't look like official (safe) programs.

# Answer
> 2 votes
Your serial # is provided by the Linux Gadget driver. Depending on your kernel version it's either in

* /config/usb\_gadget/g1/strings/0x40\*/serialnumber

or
* /sys/class/android\_usb/android0/iSerial

Since you're rooted, you can easily change the number by writing to this "file" - which is really just a parameter that the driver will digest and export accordingly.

While you're at it, there are other cool strings there, like Manufacturer and Product , which you can mess with, and similar "files" containing USB identification, and controlling the device persona (Mass storage, MTP, PTP, etc)

# Answer
> 0 votes
I assume you are talking about the "Android ID". This Android ID is a 15 or 16 characters long ID exactly like the example in your question.

The Android ID is not device specific and is stored in the user data section. It is a random number, usually generated the device boots the first time. This also applies to the first time the device is booted after a factory reset because the factory reset has deleted all user data including the old Android ID.

> Why did this happen?

You did a factory reset.

> How do I go about returning it to its original SN?

The Android ID can not be changed on a regular non-rooted device. With root permissions it is easy, as it is stored in an SQLite database file on your system. - assuming you know the old Android ID. See also this question: How to back up my current Android ID?.

> How do I prevent it from happening again?

Do not perform a factory reset.

---
Tags: factory-reset
---


# Question
Title: Is deleting /system/bin/dex2oat file safe?
I was looking into a couple of Android tombstones files of an old Samsung phone running Marshmallow. Found a crash in every single one with the same culprit, `dex2oat`.

From my limited understanding it is a Compiler that takes arguments from Android Runtime and convert `dex` files to Android optimised ones in `oat` format.

I ran into the same issue even if I factory reset or freezing a lot of apps. I have this device rooted and decided to take a risky step. I backed up first and deleted `dex2oat` from `/system/bin`. Then I rebooted system with risk of bricking it.

So far it is working fine.

Due my lack of understanding I don't know how crucial is this `dex2oat` to system stability and I want to know what is the impact on it.

# Answer
Runtime is an environment in which programs written in a specific language run. Android Runtime (ART) is Java-like runtime which runs Dalvik Executable (DEX) bytecode (from `apk` files) in a Virtual Machine. Like other Runtime Environments ART can run the code in three different modes:

* Interpretation
* Just-in-Time (JIT) compilation
* Ahead of Time (AOT) compilation

In order to improve performance, JIT and AOT compilers translate DEX bytecode (during or before execution respectively) into native machine language. JIT compiler was part of DVM, readded to ART in Android 7. Since then AOT compiler also supports profile-guided background compilation. App profiles are created during JIT compiled executions.

While interpreter is part of ART libraries, `dex2oat` tool is used as JIT and AOT compiler. Documentation states:

> At install time, ART compiles apps using the on-device **dex2oat** tool. This utility accepts DEX files as input and generates a compiled app executable for the target device.

And here:

> JIT and AOT use the same compiler with a similar set of optimizations

On your Marshmallow ROM AOT compilation won't work in the absence of `dex2oat` which may adversely affect the apps performance. Also the `installd` native service and `PackageManager` Java service rely on `dex2oat` during app installation or profile update of previously installed apps. So they may break due to missing file.

To summarize, `installd` or `dex2oat` crashes are serious bugs in your ROM which need to be fixed. Deleting `dex2oat` binary isn't a solution but a workaround which is very likely to fail.

---

**RELATED:**
> 0 votes

---
Tags: dalvik, art, odex
---


# Question
Title: How to block websites from chrome using Google family link or similar
While using Google family link I am unable to block some websites. Maybe it's a bug, but for some reason for website like Instagram is blocked from being accessed but reddit is not. Does anyone have any idea why that might be

# Answer
I had the same problem with android. Clearing app cache and app data didn't seem to help. It started working after I went to Settings -\> Accounts -\> click on the account. Untick Sync Chrome. Go to chrome have a look in the settings to see if anything has changed. Go back to the account and retick Sync Chrome, I also have an option in the menu for Sync Now which I did.

Not sure which action solved this problem, but the chrome browser is now blocking and asking for permissions as expected. As an alternative to family link maybe you could use some monitoring software or parental control? Usually, those tools can block certain websites and apps.
> 1 votes

---
Tags: browser, internet, parental-control, content-filter
---


# Question
Title: Google Photos--disable grouping photos by day
The Google Photos App for Android groups photos by day. However, this feature becomes a problem when taking photos only occasionally. Only one photo per row is displayed, most of the time *(see screenshot)*.

Zooming out makes the app group by month, however the pictures appear much smaller then.

**Question:** Is There a way to disable grouping and just display the same amout of pictures per row?

There are lots of alternative gallery apps. However, only Google Photos can be used to view the gallery without downloading the images, as far as I'm aware.

# Answer
> 0 votes
Only synchronization options are available to us, users. As additional options you can enable grouping photos by faces and adding photos/videos from Google Disk to the gallery. No "turn off the date grouping notion" available. The only way to change the order is to edit the photo itself - this way, the files would be organized according to edit date

---
Tags: gallery, google-photos, android-10
---


# Question
Title: Nexus 7 (2012 Wifi) Custom kernel bootloop
I trying to build custom kernel for my Nexus 7 (2012 Wifi) device. Changed few things builded successfull, no bootloop. But I enable this in menuconfig: Device Drivers -\> Network device support -\> Wireless LAN -\> Ralink driver support. After flashing got bootloop. How can i get some log about a problem?

# Answer
Build with module it was a working path.
> 0 votes

---
Tags: boot-loop, kernel
---