# Question
Title: Is there a quicker way to change languages for speech-to-text?
I really love using speech-to-text in my SwiftKey keyboard, but I can't use different languages unless I go to Settings \> Speech-to-text \> Language. This is quite bothering and I hope there's a way to change language every time STT says "Speak now".

I don't want multilingual support like "Ciao, how are you?", I only want to choose STT language without going to Settings

Here's an example of what I want:

# Answer
Just one tap on the world icon to switch between languages:

Screenshot from Google Pixel 6 on Android 12 with Google keyboard.
> 0 votes

---
Tags: keyboard, voice-recognition
---


# Question
Title: How it happens that I can take a picture by voice on Samsung Galaxy s7?
On my Samsung Galaxy S7 I can start camera application and then if I say "take picture" (in Russian) it automatically presses shutter button.

Who does this? Camera application itself?

Where I can know full list of voice commands? Can I start video recording by voice?

# Answer
Each app can define voice commands it supports. Then whichever voice assistant you use will take care of matching your voice command to each app's intent. Eg see https://developers.google.com/voice-actions on how to register voice commands with the Google voice assistant.
> 1 votes

---
Tags: camera, samsung-galaxy-s7, voice-recognition
---


# Question
Title: Is there a fully secure way to do speech-to-text?
Is there a secure way to do speech-to-text that ideally uses end-to-end encryption and guarantees my privacy on an android phone? A solution that requires root access is acceptable, as is a solution that requires self-hosting a speech-to-text service (if so please specify).

It would be preferable if this speech-to-text solution was accessible by using the microphone icon on the android keyboard.

Thank you.

# Answer
As Izzy mentioned, PocketSphinx is the best solution. However, it is far interior to Google voice typing in terms of speech recognition, accuracy unless you are willing to train it on your voice and vocabulary. Anyway here's the link: https://cmusphinx.github.io/wiki/tutorialandroid/
> 0 votes

---
Tags: privacy, voice-recognition
---


# Question
Title: Switching Google Voice typing language and force offline mode?
I've been using Google Voice for quite some time as it's fast and convenient compared to typing on the phone keyboard. However, I speak multiple languages and when I use the Google Voice software, if I enable different languages, the software is supposed to "auto detect" the language I speak but it makes mistakes all the time.

One way for me to get around this is to only select the language I want to speak in and deselect the other languages, but it gets tedious to do. There are a lot of languages that Google Voice support now and to search for the language I want to speak can be a bit of a pain when I need to reply to several messages in a short amount of time in different languages.

My understand is that there is no "long press" or a simple "language toggle" button for Google Voice typing, but is there any way to set something like "favorite languages" so they can be displayed at the top so the languages are easier to find? I remember some of the older versions of Google Voice will go by the keyboard language that's on, so as I switch the keyboard language, Google Voice will only be picking up what I say in that language, which worked out much better for me.

At the same time, I notice that when I don't have the best internet connection, it can take FOREVER for the Google Voice typing to work. If I go offline (airplane mode, turn off data, etc.) then it works great because Google Voice goes to offline mode. Is there any way to force the phone to always be in offline mode for Google Voice Typing? Since we can download each diction library offline already, I would hope there's a way or some kind of code that can force the software to use the offline library rather than trying to connect to the server every time.

Thanks for any input. Hope this can help some others in similar situations as well.

# Answer
> 0 votes
The fastest one can switch between languages is tapping on the world icon:

Screenshot from Google Pixel 6 on Android 12 with Google keyboard.

---
Tags: google, languages, voice-recognition, offline
---


# Question
Title: How do I get back legacy non-adaptive icons?
I have a strong personal preference against adaptive icons. I hate how they make everything look the same and less distinctive. I know apps are required to have them, but most apps still also package a "legacy" icon that has a distinct shape. It seems like every launcher uses the adaptive icons if available though and the extent of their customization in regards to icons is choosing which shape you want every single app to be.

I also know some icon packs change the shapes of some apps, but I want the apps' styles, not the icon packs', and I want *all* icons with legacy icons to use them.

Is there any current way to have this option to not use adaptive icons? I'm on a Pixel, so fairly close to stock Android.

# Answer
Nova Launcher has an option to prefer legacy icons instead of adaptive ones. If it is installed on your device:

1. Open Nova launcher's settings, tap on Look & feel.
2. Tap Icon style.
3. On the Adaptive icons section, enable `Prefer legacy icons`.
> 1 votes

# Answer
As a backup alternative answer, I figured out how to easily create a icon pack of just your icons but non-adaptive.

Using this method requires that you to regenerate and install the pack every time you install a new app, but it will hopefully always would and will let you use any of the launchers supported by Icon Pack Studio. and then do the following steps periodically to create an icon pack that is just your icons but not adaptive:

1. Create a new "Adaptive icon" pack.
2. Go to "Background" and toggle off the shape.
3. Go to "Logo", then "Design, then change the "Type" to "Not adaptive" and change "Compositing" to "Overwrite".
4. Turn the size up to 100 to compensate for not having padding added all around it.
5. Hit "Preview", then "Apply", then "Overwrite", then "OK", install the resulting icon pack, and apply it.

Then voilà! Your icons should be back to their classic looks. This way also has the advantage of making even more icons non-adaptive than Nova Launcher's built-in option does, and it can be used in conjunction with it still.
> 1 votes

---
Tags: launcher, app-icons
---


# Question
Title: Missing languages (e.g. Portuguese) option on Google Pixel 6's Live Caption
According to Android Police - Google's Pixel 6 might play interpreter on your next vacation,

> The feature will get a dedicated location in Settings -\> System and will apparently support 55 different languages to varying degrees, most of which it will only support in a limited way via the camera. According to the list published, only Spanish, Portuguese, Japanese, Italian, German, French, and English will get particularly good support for Live Translate's various features.

Trying to download a Portuguese language file to use with live caption translation on Pixel 6, but I can only see: French (already installed so you can't see it in the screenshot), German, Italian, and Japanese.

I recall I saw on some forum that Portuguese is also an option. Does anyone know more about this?

# Answer
Live Transcribe currently supports Portuguese and many languages whereas live caption just supports 4 languages which don't include Portuguese.
> 0 votes

---
Tags: android-12, google-translate, google-pixel-6
---


# Question
Title: The notification area doesn't show up when I slide down on the notification bar. What could be the issue?
The notification area doesn't show up when I slide down on the notification bar. What could be the issue?

I use a Google Pixel 6 with Android 12

# Answer
I found the following workaround: locking and unlocking the screen seems to solve the issue Google Pixel 6 with Android 12. However this doesn't prevent the issue from appearing from time to time.
> 0 votes

---
Tags: notifications, android-12, google-pixel-6
---


# Question
Title: Some apps are too slow on my phone. What can I do to fix this?
Granted, at 2GB ram Mediatek MT6737, I don't have the fastest phone but why is it that I have 2 apps that are very sluggish while others are more, seemingly, graphic intensive yet much snappier? What can I do (besides the obvious - clean up the phone) to speed up these apps. I'm rooted.

Like this app: https://play.google.com/store/apps/details?id=com.blockfolio.blockfolio

# Answer
> 0 votes
Use any kernel tweaking app to speed up your processor Some advanced tweaking apps will have "game mode" where it increases performance to max on running specific apps and returns to normal when apps are closed.

---
Tags: applications, 7.0-nougat, lagging
---


# Question
Title: How to find an app is compatible with Intel based Android device or not?
Intel based Android devices are in the market now and I am drooling over new Asus Zenfone series (which packs Intel Atom processors). However, I am concerned with app compatibility issues.

If an app is developed using SDK, it'll run on Intel based devices, but if it's developed using NDK, it'll surely not run on Intel based devices as instruction sets are different.

Before purchasing any Intel based device, I want to see my favorite apps/games are compatible with it or not. How to get this info without really testing those apps in a virtual machine?

# Answer
Most application will work fine except the ones which rely on libraries and do not have compatible libs packed in apks. One quick way to check for a specific app is to open its generic-apk with 7z and check lib folder Structure of /lib directory inside APK archive is:

```
/lib
    /arm64-v8a
    /armeabi
    /armeabi-v7a
    /mips
    /x86
    /x86_64

```

if it does not have x86 or x86\_64 while it has libs in other folders, the chances are that it won't work on intel processors.

You can also use DroidInfo app from playstore to quickly check supported architecture for any installed app on current handset.
> 1 votes

---
Tags: applications
---


# Question
Title: A malicious file keeps appearing on my phone even if I have formatted it (1_unit_15x15_3_goldenFmt)
Some days ago, a keylogger was put in my phone by a hacker, and my phone got infected. After having formatted the phone, there is a file that keeps appearing on my phone and has not been deleted. The name of the file is `1_unit_15x15_3_goldenFmt` and this is the content of the file:

```
SensorGoldenCalTable:{   // SensorGoldenCalTable
   PixId:    3,
   SlimLscType:    0,
   Width:    0,
   Height:    0,
   OffsetX:    0,
   OffsetY:    0,
   TblSize:    0,
   IspLSCReg:    {0, 0xd048d035, 0, 0x00480041, 0},
   GainTable:    {

        0xd7, 0x73, 0xcb, 0x64, 0x84, 0x64, 0x3d, 0x63, 0x84, 0x61, 0xef, 0x55, 0x50, 0x55, 0xc9, 0x54,
        0x6b, 0x52, 0x2d, 0x49, 0x5e, 0x48, 0x21, 0x48, 0x7e, 0x48, 0x76, 0x40, 0xb4, 0x3f, 0x7d, 0x3f,
        0x6e, 0x41, 0x84, 0x3a, 0xa7, 0x39, 0xd1, 0x39, 0x71, 0x3c, 0xa8, 0x36, 0xae, 0x35, 0xdd, 0x35,
        0x80, 0x39, 0x66, 0x34, 0x66, 0x33, 0xb9, 0x33, 0x5f, 0x38, 0x91, 0x33, 0x83, 0x32, 0xe6, 0x32,
        0x89, 0x39, 0x47, 0x34, 0x3d, 0x33, 0x6e, 0x33, 0x58, 0x3c, 0x78, 0x36, 0x95, 0x35, 0x9b, 0x35,
        0x77, 0x41, 0x3c, 0x3a, 0x5d, 0x39, 0x4b, 0x39, 0xd2, 0x47, 0x02, 0x40, 0x25, 0x3f, 0x13, 0x3f,
        0x69, 0x51, 0x30, 0x48, 0x58, 0x47, 0x4e, 0x47, 0x50, 0x5f, 0x31, 0x54, 0x51, 0x53, 0xfa, 0x52,
        0xb0, 0x72, 0x51, 0x64, 0x96, 0x63, 0xde, 0x62, 0xf5, 0x69, 0x62, 0x5c, 0xef, 0x5b, 0x4b, 0x5b,
        0xb1, 0x59, 0x63, 0x4f, 0xdb, 0x4e, 0x56, 0x4e, 0x91, 0x4c, 0x02, 0x44, 0x6e, 0x43, 0x48, 0x43,
        0x2e, 0x43, 0xf1, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x57, 0x3c, 0x47, 0x36, 0x86, 0x35, 0xb3, 0x35,
        0x8b, 0x37, 0x7d, 0x32, 0xb7, 0x31, 0xcf, 0x31, 0xb2, 0x34, 0x5a, 0x30, 0x82, 0x2f, 0x9f, 0x2f,
        0xa7, 0x33, 0x99, 0x2f, 0xc8, 0x2e, 0xe1, 0x2e, 0xba, 0x34, 0x5f, 0x30, 0x89, 0x2f, 0x92, 0x2f,
        0x70, 0x37, 0x7a, 0x32, 0xad, 0x31, 0xdf, 0x31, 0x33, 0x3c, 0x18, 0x36, 0x4e, 0x35, 0x58, 0x35,
        0x8f, 0x42, 0x58, 0x3b, 0xc3, 0x3a, 0xbf, 0x3a, 0x61, 0x4b, 0xf3, 0x42, 0x62, 0x42, 0x11, 0x42,
        0xdd, 0x57, 0xb2, 0x4d, 0x1b, 0x4d, 0xc2, 0x4c, 0x55, 0x66, 0x45, 0x5a, 0xc3, 0x59, 0x1c, 0x59,
        0xa9, 0x5f, 0x09, 0x54, 0xc5, 0x53, 0xa2, 0x53, 0x03, 0x52, 0x8a, 0x48, 0x46, 0x48, 0x1c, 0x48,
        0xf9, 0x45, 0x12, 0x3e, 0xb1, 0x3d, 0x73, 0x3d, 0x30, 0x3d, 0xaf, 0x36, 0x38, 0x36, 0x10, 0x36,
        0xaf, 0x36, 0x80, 0x31, 0xf6, 0x30, 0xd6, 0x30, 0x04, 0x32, 0xf2, 0x2d, 0x48, 0x2d, 0x4b, 0x2d,
        0x1d, 0x2f, 0xe2, 0x2b, 0x45, 0x2b, 0x52, 0x2b, 0x08, 0x2e, 0x28, 0x2b, 0x7b, 0x2a, 0x8a, 0x2a,
        0x09, 0x2f, 0xd3, 0x2b, 0x2b, 0x2b, 0x47, 0x2b, 0xcf, 0x31, 0xec, 0x2d, 0x52, 0x2d, 0x60, 0x2d,
        0x4b, 0x36, 0x5b, 0x31, 0xd5, 0x30, 0xd1, 0x30, 0x6e, 0x3c, 0x51, 0x36, 0xd2, 0x35, 0xcf, 0x35,
        0xf5, 0x44, 0x4d, 0x3d, 0xdf, 0x3c, 0xc2, 0x3c, 0x46, 0x50, 0x2b, 0x47, 0xdb, 0x46, 0xc2, 0x46,
        0xea, 0x5c, 0xe7, 0x51, 0xa2, 0x51, 0x23, 0x51, 0x1c, 0x58, 0x86, 0x4d, 0xc5, 0x4d, 0x21, 0x4d,
        0x25, 0x4c, 0x4f, 0x43, 0x3d, 0x43, 0xe1, 0x42, 0xd4, 0x40, 0xa4, 0x39, 0x82, 0x39, 0x1d, 0x39,
        0x48, 0x38, 0xc5, 0x32, 0x7e, 0x32, 0x3b, 0x32, 0xed, 0x31, 0xb8, 0x2d, 0x57, 0x2d, 0x3b, 0x2d,
        0x26, 0x2d, 0x23, 0x2a, 0xb6, 0x29, 0xb3, 0x29, 0x48, 0x2a, 0x0b, 0x28, 0x9d, 0x27, 0x9c, 0x27,
        0x2a, 0x29, 0x4c, 0x27, 0xd8, 0x26, 0xd9, 0x26, 0x0a, 0x2a, 0xf5, 0x27, 0x83, 0x27, 0x9d, 0x27,
        0xe8, 0x2c, 0x04, 0x2a, 0x95, 0x29, 0xac, 0x29, 0x80, 0x31, 0x8c, 0x2d, 0x24, 0x2d, 0x2b, 0x2d,
        0xac, 0x37, 0x63, 0x32, 0x13, 0x32, 0x06, 0x32, 0xc0, 0x3f, 0x06, 0x39, 0xc5, 0x38, 0xa0, 0x38,
        0x5f, 0x4a, 0x3a, 0x42, 0x2d, 0x42, 0xd7, 0x41, 0xb4, 0x55, 0xeb, 0x4b, 0xcf, 0x4b, 0x5c, 0x4b,
        0x1c, 0x53, 0x47, 0x49, 0x75, 0x49, 0x02, 0x49, 0xa0, 0x47, 0xa4, 0x3f, 0xb0, 0x3f, 0x2b, 0x3f,
        0xaa, 0x3c, 0x5e, 0x36, 0x6d, 0x36, 0xf3, 0x35, 0x66, 0x34, 0xc2, 0x2f, 0xa5, 0x2f, 0x59, 0x2f,
        0xef, 0x2d, 0xb8, 0x2a, 0x86, 0x2a, 0x61, 0x2a, 0x5a, 0x29, 0x2a, 0x27, 0xec, 0x26, 0xe3, 0x26,
        0x63, 0x26, 0x08, 0x25, 0xc4, 0x24, 0xc7, 0x24, 0x4e, 0x25, 0x44, 0x24, 0xf0, 0x23, 0x05, 0x24,
        0x3e, 0x26, 0xeb, 0x24, 0x93, 0x24, 0xaa, 0x24, 0xf8, 0x28, 0xfb, 0x26, 0xb1, 0x26, 0xbe, 0x26,
        0x84, 0x2d, 0x79, 0x2a, 0x3a, 0x2a, 0x3d, 0x2a, 0xe1, 0x33, 0x52, 0x2f, 0x3b, 0x2f, 0x17, 0x2f,
        0xe2, 0x3b, 0xc2, 0x35, 0xaa, 0x35, 0xb5, 0x35, 0x2e, 0x46, 0x9e, 0x3e, 0x97, 0x3e, 0x8b, 0x3e,
        0x68, 0x50, 0xb7, 0x47, 0xe7, 0x47, 0x96, 0x47, 0x4b, 0x4f, 0x4a, 0x46, 0x99, 0x46, 0x45, 0x46,
        0x4b, 0x44, 0xf7, 0x3c, 0x22, 0x3d, 0xd3, 0x3c, 0xcb, 0x39, 0x1b, 0x34, 0x27, 0x34, 0xe9, 0x33,
        0x82, 0x31, 0x86, 0x2d, 0x9b, 0x2d, 0x4d, 0x2d, 0x0f, 0x2b, 0x8f, 0x28, 0x7a, 0x28, 0x58, 0x28,
        0x6a, 0x26, 0xe9, 0x24, 0xd0, 0x24, 0xca, 0x24, 0x96, 0x23, 0xd5, 0x22, 0xa4, 0x22, 0xaa, 0x22,
        0x8f, 0x22, 0x06, 0x22, 0xd9, 0x21, 0xe7, 0x21, 0x6b, 0x23, 0xac, 0x22, 0x7f, 0x22, 0x8e, 0x22,
        0x11, 0x26, 0xbe, 0x24, 0x93, 0x24, 0xb3, 0x24, 0x7e, 0x2a, 0x2d, 0x28, 0x16, 0x28, 0x25, 0x28,
        0xee, 0x30, 0x23, 0x2d, 0x1f, 0x2d, 0x03, 0x2d, 0x0a, 0x39, 0x77, 0x33, 0x92, 0x33, 0x5b, 0x33,
        0x49, 0x43, 0x0e, 0x3c, 0x26, 0x3c, 0xd6, 0x3b, 0xaa, 0x4d, 0xc5, 0x44, 0x16, 0x45, 0x9a, 0x44,
        0x1f, 0x4d, 0x91, 0x44, 0xf7, 0x44, 0x82, 0x44, 0xae, 0x42, 0x91, 0x3b, 0xe5, 0x3b, 0xab, 0x3b,
        0x18, 0x38, 0xac, 0x32, 0xdc, 0x32, 0x95, 0x32, 0x91, 0x2f, 0x04, 0x2c, 0x24, 0x2c, 0xe9, 0x2b,
        0x2b, 0x29, 0x1c, 0x27, 0x20, 0x27, 0x04, 0x27, 0x9f, 0x24, 0x8d, 0x23, 0x7c, 0x23, 0x87, 0x23,
        0xcd, 0x21, 0x5d, 0x21, 0x48, 0x21, 0x69, 0x21, 0xbe, 0x20, 0x8e, 0x20, 0x7a, 0x20, 0x92, 0x20,
        0x9a, 0x21, 0x41, 0x21, 0x29, 0x21, 0x3d, 0x21, 0x29, 0x24, 0x47, 0x23, 0x3a, 0x23, 0x43, 0x23,
        0x96, 0x28, 0xd0, 0x26, 0xc6, 0x26, 0xb4, 0x26, 0xf3, 0x2e, 0xb4, 0x2b, 0xd1, 0x2b, 0xb3, 0x2b,
        0x0c, 0x37, 0x11, 0x32, 0x3f, 0x32, 0x09, 0x32, 0x00, 0x41, 0x7c, 0x3a, 0xcf, 0x3a, 0x7f, 0x3a,
        0xb4, 0x4a, 0x18, 0x43, 0x75, 0x43, 0x08, 0x43, 0x96, 0x4c, 0xbc, 0x43, 0x4f, 0x44, 0xff, 0x43,
        0x04, 0x42, 0xec, 0x3a, 0x59, 0x3b, 0xf8, 0x3a, 0x41, 0x37, 0x08, 0x32, 0x58, 0x32, 0x11, 0x32,
        0xd4, 0x2e, 0x6e, 0x2b, 0xbb, 0x2b, 0x84, 0x2b, 0x50, 0x28, 0x83, 0x26, 0xa8, 0x26, 0x98, 0x26,
        0xc7, 0x23, 0xf3, 0x22, 0x00, 0x23, 0x06, 0x23, 0xfb, 0x20, 0xb6, 0x20, 0xb9, 0x20, 0xc2, 0x20,
        0x0b, 0x20, 0x08, 0x20, 0x05, 0x20, 0x04, 0x20, 0xd6, 0x20, 0xa9, 0x20, 0xa5, 0x20, 0xb2, 0x20,
        0x59, 0x23, 0xb4, 0x22, 0xae, 0x22, 0xb2, 0x22, 0xc1, 0x27, 0x2d, 0x26, 0x3f, 0x26, 0x44, 0x26,
        0x16, 0x2e, 0x13, 0x2b, 0x44, 0x2b, 0x26, 0x2b, 0x1e, 0x36, 0x73, 0x31, 0xb1, 0x31, 0x6d, 0x31,
        0x15, 0x40, 0xb4, 0x39, 0x16, 0x3a, 0xd1, 0x39, 0xd5, 0x49, 0x3f, 0x42, 0xcf, 0x42, 0x39, 0x42,
        0x4e, 0x4c, 0xcf, 0x43, 0x75, 0x44, 0x0a, 0x44, 0x97, 0x41, 0xd4, 0x3a, 0x5a, 0x3b, 0xf4, 0x3a,
        0x1f, 0x37, 0x2c, 0x32, 0x89, 0x32, 0x26, 0x32, 0xe1, 0x2e, 0x9a, 0x2b, 0xe2, 0x2b, 0x9d, 0x2b,
        0x67, 0x28, 0x9a, 0x26, 0xc5, 0x26, 0xb9, 0x26, 0xea, 0x23, 0x10, 0x23, 0x33, 0x23, 0x2c, 0x23,
        0x2e, 0x21, 0xed, 0x20, 0xfc, 0x20, 0x0c, 0x21, 0x34, 0x20, 0x2d, 0x20, 0x36, 0x20, 0x49, 0x20,
        0x0b, 0x21, 0xdb, 0x20, 0xe8, 0x20, 0xf1, 0x20, 0x88, 0x23, 0xd3, 0x22, 0xec, 0x22, 0xe8, 0x22,
        0xeb, 0x27, 0x4c, 0x26, 0x73, 0x26, 0x6b, 0x26, 0x48, 0x2e, 0x3b, 0x2b, 0x8e, 0x2b, 0x50, 0x2b,
        0x99, 0x36, 0xa2, 0x31, 0xf8, 0x31, 0xcf, 0x31, 0xbb, 0x40, 0x16, 0x3a, 0x71, 0x3a, 0x39, 0x3a,
        0x90, 0x4a, 0xa2, 0x42, 0x2b, 0x43, 0xc4, 0x42, 0xeb, 0x4d, 0x27, 0x45, 0xd1, 0x45, 0x34, 0x45,
        0x18, 0x43, 0xd7, 0x3b, 0x5a, 0x3c, 0xe9, 0x3b, 0x6a, 0x38, 0x15, 0x33, 0x81, 0x33, 0x2b, 0x33,
        0x0c, 0x30, 0x6d, 0x2c, 0xbb, 0x2c, 0x95, 0x2c, 0x8f, 0x29, 0x6b, 0x27, 0xa8, 0x27, 0x8a, 0x27,
        0xf3, 0x24, 0xe4, 0x23, 0x04, 0x24, 0x07, 0x24, 0x41, 0x22, 0xcf, 0x21, 0xdd, 0x21, 0xf4, 0x21,
        0x49, 0x21, 0x16, 0x21, 0x2a, 0x21, 0x30, 0x21, 0x09, 0x22, 0xa6, 0x21, 0xbe, 0x21, 0xc4, 0x21,
        0x97, 0x24, 0xab, 0x23, 0xc8, 0x23, 0xcd, 0x23, 0x06, 0x29, 0x29, 0x27, 0x65, 0x27, 0x4d, 0x27,
        0x87, 0x2f, 0x20, 0x2c, 0x77, 0x2c, 0x37, 0x2c, 0x96, 0x37, 0x83, 0x32, 0x08, 0x33, 0x9a, 0x32,
        0xa7, 0x41, 0x00, 0x3b, 0x8a, 0x3b, 0x23, 0x3b, 0x5c, 0x4b, 0xb3, 0x43, 0x60, 0x44, 0xa9, 0x43,
        0x75, 0x51, 0x7b, 0x47, 0x37, 0x48, 0x9b, 0x47, 0xa2, 0x45, 0xe7, 0x3d, 0x73, 0x3e, 0x1b, 0x3e,
        0xb4, 0x3a, 0xd1, 0x34, 0x2e, 0x35, 0xe2, 0x34, 0x20, 0x32, 0x1c, 0x2e, 0x74, 0x2e, 0x28, 0x2e,
        0xad, 0x2b, 0x0b, 0x29, 0x47, 0x29, 0x27, 0x29, 0x11, 0x27, 0x8f, 0x25, 0xad, 0x25, 0xad, 0x25,
        0x53, 0x24, 0x7c, 0x23, 0x95, 0x23, 0xa3, 0x23, 0x38, 0x23, 0xb4, 0x22, 0xc4, 0x22, 0xce, 0x22,
        0x05, 0x24, 0x45, 0x23, 0x61, 0x23, 0x5b, 0x23, 0xa1, 0x26, 0x57, 0x25, 0x73, 0x25, 0x6e, 0x25,
        0x2e, 0x2b, 0xe0, 0x28, 0x10, 0x29, 0xe9, 0x28, 0x9d, 0x31, 0xc0, 0x2d, 0x19, 0x2e, 0xc7, 0x2d,
        0xad, 0x39, 0x3e, 0x34, 0xbe, 0x34, 0x4b, 0x34, 0x0b, 0x44, 0xee, 0x3c, 0x88, 0x3d, 0x17, 0x3d,
        0x20, 0x4e, 0xd5, 0x45, 0x96, 0x46, 0xe6, 0x45, 0xc5, 0x54, 0x22, 0x4b, 0x1f, 0x4c, 0x5b, 0x4b,
        0xd8, 0x48, 0xf7, 0x40, 0xa4, 0x41, 0x29, 0x41, 0xc1, 0x3d, 0x7a, 0x37, 0xeb, 0x37, 0x94, 0x37,
        0x55, 0x35, 0x9d, 0x30, 0xeb, 0x30, 0x9c, 0x30, 0xe5, 0x2e, 0x8f, 0x2b, 0xc0, 0x2b, 0x92, 0x2b,
        0x2d, 0x2a, 0xf4, 0x27, 0x1b, 0x28, 0x12, 0x28, 0x5d, 0x27, 0xeb, 0x25, 0xfc, 0x25, 0xfd, 0x25,
        0x50, 0x26, 0x28, 0x25, 0x3b, 0x25, 0x2a, 0x25, 0x12, 0x27, 0xc1, 0x25, 0xdb, 0x25, 0xd1, 0x25,
        0xc7, 0x29, 0xd8, 0x27, 0xeb, 0x27, 0xd4, 0x27, 0x5e, 0x2e, 0x50, 0x2b, 0x8a, 0x2b, 0x43, 0x2b,
        0xb5, 0x34, 0x38, 0x30, 0x9b, 0x30, 0x2f, 0x30, 0xe5, 0x3c, 0xd7, 0x36, 0x42, 0x37, 0xcb, 0x36,
        0x8a, 0x47, 0xed, 0x3f, 0x70, 0x40, 0x01, 0x40, 0x14, 0x52, 0x53, 0x49, 0xf7, 0x49, 0xf0, 0x48,
        0x5b, 0x5b, 0xf5, 0x4f, 0x05, 0x51, 0x5f, 0x50, 0x1c, 0x4e, 0x3c, 0x45, 0xcc, 0x45, 0x44, 0x45,
        0x0b, 0x42, 0x29, 0x3b, 0x92, 0x3b, 0x11, 0x3b, 0x7c, 0x39, 0xf1, 0x33, 0x47, 0x34, 0xfa, 0x33,
        0x21, 0x33, 0xd3, 0x2e, 0x06, 0x2f, 0xda, 0x2e, 0x60, 0x2e, 0x43, 0x2b, 0x62, 0x2b, 0x42, 0x2b,
        0x79, 0x2b, 0x31, 0x29, 0x3f, 0x29, 0x1b, 0x29, 0x5e, 0x2a, 0x67, 0x28, 0x6d, 0x28, 0x58, 0x28,
        0x27, 0x2b, 0xf3, 0x28, 0x0f, 0x29, 0xea, 0x28, 0xe2, 0x2d, 0xfc, 0x2a, 0x1a, 0x2b, 0xdd, 0x2a,
        0x82, 0x32, 0x85, 0x2e, 0xcc, 0x2e, 0x54, 0x2e, 0xd5, 0x38, 0x75, 0x33, 0xda, 0x33, 0x4f, 0x33,
        0x1e, 0x41, 0x59, 0x3a, 0xd7, 0x3a, 0x1d, 0x3a, 0x49, 0x4c, 0x17, 0x44, 0xa3, 0x44, 0xd0, 0x43,
        0x88, 0x57, 0x03, 0x4e, 0xc5, 0x4e, 0xa7, 0x4d, 0x87, 0x63, 0x15, 0x57, 0xd6, 0x57, 0xf7, 0x56,
        0x76, 0x54, 0xf4, 0x4a, 0x7f, 0x4b, 0xdb, 0x4a, 0xc5, 0x47, 0x10, 0x40, 0x75, 0x40, 0xf2, 0x3f,
        0xb5, 0x3e, 0x55, 0x38, 0xb6, 0x38, 0x34, 0x38, 0x4b, 0x38, 0xf4, 0x32, 0x27, 0x33, 0xe0, 0x32,
        0x92, 0x33, 0x6a, 0x2f, 0x84, 0x2f, 0x46, 0x2f, 0xb9, 0x30, 0x3d, 0x2d, 0x40, 0x2d, 0x22, 0x2d,
        0x79, 0x2f, 0x6d, 0x2c, 0x71, 0x2c, 0x4d, 0x2c, 0x3b, 0x30, 0x03, 0x2d, 0x16, 0x2d, 0xd7, 0x2c,
        0xfe, 0x32, 0x17, 0x2f, 0x3c, 0x2f, 0xe3, 0x2e, 0x72, 0x37, 0x95, 0x32, 0xd3, 0x32, 0x65, 0x32,
        0xc9, 0x3d, 0xc8, 0x37, 0x25, 0x38, 0x6e, 0x37, 0x9d, 0x46, 0x2d, 0x3f, 0xb5, 0x3f, 0xec, 0x3e,
        0x88, 0x52, 0x90, 0x49, 0x2e, 0x4a, 0x39, 0x49, 0x3b, 0x5f, 0xaa, 0x54, 0x8b, 0x55, 0x1e, 0x54,
        0x41, 0x6d, 0xb9, 0x5f, 0x9d, 0x60, 0x43, 0x5f, 0xe2, 0x5c, 0xdb, 0x51, 0x88, 0x52, 0x9a, 0x51,
        0xaf, 0x4e, 0xee, 0x45, 0x5f, 0x46, 0x90, 0x45, 0x00, 0x45, 0x9d, 0x3d, 0xca, 0x3d, 0x54, 0x3d,
        0x33, 0x3e, 0xc6, 0x37, 0xfa, 0x37, 0x96, 0x37, 0x1c, 0x39, 0xdd, 0x33, 0x07, 0x34, 0xae, 0x33,
        0x4d, 0x36, 0xb1, 0x31, 0xbc, 0x31, 0x66, 0x31, 0xe9, 0x34, 0xd0, 0x30, 0xd7, 0x30, 0xa4, 0x30,
        0xa8, 0x35, 0x59, 0x31, 0x66, 0x31, 0x2d, 0x31, 0x63, 0x38, 0x7b, 0x33, 0x9c, 0x33, 0x3e, 0x33,
        0xe3, 0x3c, 0x30, 0x37, 0x6f, 0x37, 0xd7, 0x36, 0xb9, 0x43, 0xba, 0x3c, 0x25, 0x3d, 0x6a, 0x3c,
        0xec, 0x4c, 0xa1, 0x44, 0x2c, 0x45, 0x4b, 0x44, 0x12, 0x5a, 0x29, 0x50, 0xc9, 0x50, 0x8b, 0x4f,
        0x27, 0x69, 0x40, 0x5d, 0xeb, 0x5d, 0x68, 0x5c,
   },
},

```

I don't know if it has happened to anyone here, but I'd be grateful if someone could tell me if this is a threat and I should worry about it or not.

# Answer
This is not a threat. If you google filename it shows up on androidhost and scribd which is highly likely to be created by some app for its functioning and not a malware script.
> 0 votes

---
Tags: malware, files, virus
---


# Question
Title: How to obtain real VPN connection status (it claims to be connected in airplane mode / without internet)?
My Google Pixel 5 claims to have a VPN connection, although I enabled the airplane mode. How can I ever be sure that the VPN connection is really working then if I have an internet connection?

I would expect "not connected" and not "this device is connected with ...":

# Answer
The VPN status only reflects whether any app has created a TUN device via VpnService.Builder API (i.e. all or selected traffic is routed to that app), not whether the VPN connection established by that app is actually working/connected.
> 1 votes

---
Tags: privacy, internet, vpn, airplane-mode
---


title: is RPMB Fuse Set a factory state?

text:
# Question
Title: is RPMB Fuse Set a factory state?
I bought a Galaxy Tab S6 and I'm going to verify if it is really brand-new.

I personally haven't alter the device and the above picture is from this device's Download mode screen immediately after my purchase. It reads:

* RPMB fuse Set
* KG STATUS : PRENORMAL

I have no idea whether `RPMB fuse Set` is a factory state. Is it?

Concerning `KG STATUS` being `PRENORMAL`, I don't think this as a factory state (it seems the seller has already tried to flash an unofficial ROM or perhaps tried to flash back the official ROM from Android 10 to 9)

Do you see any clue that could be used to prove that this device is not in factory state and not brand-new?

# Answer
**What i know:**

*RPMB fuse* \- should be set, not blown

*Current binary* \- is samsung official which is to be expected (if there was something else it would say something like "Custom (0xE03)" instead)

*FRP lock* \- is off, which should be that way, it's factory reset protection which means that FRP protected device even after factory reset will require you to log into your google account

*OEM lock* \- is on, this means the bootloader is locked (should be locked)

*Warranty void* \- is 0, this is knox counter and if you try to flash anything on a new device it will trip and always show 0x1 in download mode. Right now afaik there's no way to set it back to 0x0

**What i don't know:**

RPMB provisioned - RPMB is replay protected memory block (or something like that) and provisioned seems to be its normal state, but from what i could find it relates more to memory integrity than to flashing, so it probably will not change after you install something

KG status prenormal - KG is knox guard, and on my new device i think it was prenormal already, checked on other new device - it was "completed". I don't know what exactly does this status mean, only thing i know is that with prenormal status you can't flash custom roms/recovery/etc

Qualcomm secureboot and secure download - were always enabled for me, and i honestly have no idea if you can even change that

SPU\[VALID\]:5 - don't know what it is, quick googling gave zero results, i guess it's good that it is valid

**Conclusion:**

I'd say your device is brand new and with stock everything, but i don't know if there are any clues of it being refurbished, so no hints on that
> 2 votes

---
Tags: rom-flashing, factory-reset, samsung-knox, warranty
---


# Question
Title: Fast Roaming Protocols (802.11k, 802.11r, 802.11v)
Does Android support the 802.11 specifications that allow fast roaming, i.e. prevent dropouts as you move between access points? If so, on what hardware and in what version?

**802.11k** assists the device in its search for nearby APs that are available as roaming targets by creating an optimised list of channels. When the signal strength of the current AP weakens, device will scan for target APs from this list.

**802.11r** authenticates more quickly through Fast Basic Service Set Transition (FT).

**802.11v** allows the network’s control layer to influence client roaming behaviour by providing it the load information of nearby access points. Device takes this "BSS transition management" information into account when deciding among the possible roam targets.

Apple's iOS does, as documented here and here. Windows 10 does if the WiFi adapter supports it as documented here and here (suspect latter is currently out of date with respect to PSK & open networks).

Some Samsung models do, as documented here.

But I can't find anything on stock Android (Google Pixel).

# Answer
> 4 votes
Having now created 802.11r, k & v infrastructure firstly with Unifi and then OpenWRT, I can now say definitively that at least the Google Pixel 6 & 7 Pro running Android 12 & 13 do. I can walk from one side of my house to the other without dropping a WhatsApp/WiFi Calling/Teams/Skype call.

Based on my experience, OpenWRT is the best way to get to this point but have to say that it has been tricky. The advantage of open source vs. Ubiquiti shenanigans; not needing a controller; and having freedom of choice wrt cost-competitive equipment (BT Home Hub 5A, Xiaomi 4A Gigabit edition & TP-Link EAP235 & EAP615) and the control outweighs the more challenging & less guided learning curve.

The biggest benefit for me came from Fast Transition (802.11r) (Note that this now works for WPA3 too). And that WPA2-PSK allows `Over the DS` in addition to `Over the Air`, as each access point can derive the required required PMKR1 on its own (i.e. without non-standardised CAPWAP communication). Although Andrew McHale's 802.11k/r/v testing concludes `Over the DS` isn't as good as logic might suggest, as does my own (rather less rigorous) testing.

Neighbourhood Reporting (802.11k) must be helpful but I can't say that I really notice the additional benefit and does require some interAP communication or careful configuration to set up. I found https://github.com/simonyiszk/openwrt-rrm-nr-distributor very useful and instructive.

802.11v reports as working, but the benefit at least in my scenario is not at all clear.

# Answer
> 2 votes
Each of those amendments you listed above include a collection of methods/mechanisms/features that have been incorporated into the IEEE 802.11 standard to achieve particular goals/improvements. Whether or not these are supported on a device will depend on the following:

1. Specific feature/mechanism
2. Android version
3. Device vendor implementation and drivers

Also, keep in mind that in order for these features to work, they not only need to be supported on the client device but also supported and enabled at the infrastructure level (e.g. access points).

Another thing specific to 802.11r (FT) is that it will improve transition times when using 802.1X/EAP (WPA-Enterprise) security. On a preshared key (WPA-Personal) network, the difference will be negligible at best.

Last but not least, even if all those mechanisms are supported and enabled you could still experience roaming issues. That's because a wireless network needs to be designed at Layer 1 (RF) so as to provide for a good roaming experience, among other things.

---

These could be of help:

Crowdsourced client device 11v support list: https://clients.mikealbano.com/home

More info about WLAN roaming: https://community.ubnt.com/t5/UniFi-Wireless/Wireless-LAN-Roaming-FAQ/m-p/1825118

---
Tags: wi-fi, roaming
---


title: Turn Screen Upside Down Horizontal

text:
# Question
Title: Turn Screen Upside Down Horizontal
I need to turn my android phone horizontal, but have the "up" side be the side that is closer to the ground. How does one do this?

# Answer
I assume you mean 180° rotation - lots of screen rotation apps, like Ultimate Rotation Control, can be set up to do that.

The bonus point of the one I linked to is that, after setting up properly, it will seamlessly integrate with the built-in rotation switch of the OS.
> 2 votes

# Answer
This app does exactly what you are asking for https://play.google.com/store/apps/details?id=com.pranavpandey.rotation

StackExchange will not approve my answer unless I add more information, so here's a 1:1 citation of what the app author writes:

```
Rotation is a tool to manage the device orientation. It offers all the modes that Android supports and can be configured according to the apps or various events like call, lock, headset, charging and dock. Let's give it a try to explore its other features.

FEATURES

Orientations
• Auto-rotate on • Auto-rotate off
• Forced auto-rotate • Forced portrait • Forced landscape
• Reverse portrait • Reverse landscape • Sensor portrait • Sensor landscape
• Forced full sensor • Lock Current – Lock current orientation

Conditions
• Call orientation • Lock orientation • Headset orientation
• Charging orientation • Dock orientation • App orientation
• Events priority - Customizable events preference in case of two or more events occur simultaneously.

On demand
# Change orientation of the foreground app or events with a fully customizable floating head (or notification or tile) available on the top of supported tasks.

Themes
• A dynamic theme engine with background-aware functionality to avoid any visibility issues.

Others
• Start on boot • Notification • Vibration and more.
• Widgets, shortcuts and notification tiles to perform various operations.
# Rotation extension to automate over 40 actions via Locale / Tasker plugin.

Support
• Quick setup to configure major features at once.
• Dedicated support section to troubleshoot general issues.
# Perform backup and restore operations to save and load the app settings.

Features marked with # are paid and Rotation Key is required to use them.

LANGUAGES
English, Deutsch, Español, Indonesia, Italiano, Português, Русский, Türkçe, 中文 (简体), 中文 (繁體)

PERMISSIONS
Internet access – To display ads in free version.
Retrieve running apps – To detect foreground app.
Usage statistics (Android 5.0+) – To detect foreground app.
Modify system settings – To change display orientation settings.
Draw over other apps – To change foreground orientation.
Read device state and identity – To change the phone call orientation.
Run at startup – To start service when device boots up.
Control vibration – To vibrate device when orientation changes.
Modify USB storage (Android 4.3 and below) – To create and restore backup.

ACCESSIBILITY
It uses an accessibility service to provide a better experience and to force the lock screen orientation on Android 8.0+ devices. It will not access window content or any other sensitive data.
Rotation > Conditions > Events > Accessibility.

------------------------------

- Buy Rotation Key for more features and to support the development.
- In case of bugs/issues, please contact me via email before making any review.
- Some apps might not work properly when forced to work in certain orientations. Use Auto-rotate on/off from conditions to use system settings for those apps.
- Reverse portrait is disabled on some Xiaomi (MIUI) devices with default launcher. Please try any other launcher (home screen) to make it work.

```
> 1 votes

---
Tags: lock-screens, screen
---


# Question
Title: Where is the trash that the stock camera/photos app moves to?
In Android 10, if you take a photo with the stock camera/photos app (which identifies itself as either "Camera" or "Photos" in the app switcher¹) and then view it afterwards, one of the "buttons" is a trash can. If you tap it, the phone prompts you with,

> Move to trash? It will be removed from all folders.
> \[Trashcan\] Move to trash

Where is the "trash" that this is being moved to, and how do I access it?

(The device is a Pixel 3a purchased directly from Google, so it should be free of the sort of junk many carriers load onto phones.)

¹The app whose icon is:

# Answer
According to How can i find my recycle bin on Android? - Google Photos Community

> ... trash bin and the files inside it are **not actually present on your Android device**, which is why you can't find the files.

(Emphasis added)

By implication, they are stored on cloud and that is where you restore them from if needed. You can locate them at https://photos.google.com/trash as mentioned in How to recovery the google photos deleted from trash - Google Photos Community.

I guess if you turn off sync for photos, deleted photos should be directly deleted without moving to Trash and obviously you won't find them at the location linked above.
> 1 votes

# Answer
> Where is the "trash" that this is being moved to, and how do I access it?

Latest version of Photos App, *Version 5.71.0.416067338*:

**Photos App -\> Library -\> Trash**
> 0 votes

---
Tags: photos
---


# Question
Title: What's turning on Bluetooth every hour on my OnePlus 6?
I noticed something has been turning on Bluetooth on my OnePlus 6 automatically. I googled online and learned to turn off Bluetooth scanning (for location-based features).

However, the problem persists. Something keeps turning on Bluetooth every hour, at the 37th minute, i.e.

* I turned Bluetooth off. Then at 2:38 pm, I hear the sound that my phone connected to my Bluetooth speaker.
* I turned it off again. Then at 3:38 pm, I hear the sound that my phone connected to my Bluetooth speaker.
* I turned it off. The same thing happened at 4:38 pm.

What is doing this?

# Answer
Thanks a lot to Firelord's response.

I followed the leads they gave and ended up finding the culprit is the smart lock I installed for my home that requires bluetooth.

I found this line in `android.log` file: `BluetoothManagerService: enable(com.august.luna)`.

With OnePlus 6, I didn't have to use adb, I was able to:

* turned on Developer Option,
* turned on Debug level logging (the log line of answer is debug level),
* turned on Save Log (didn't reboot though. don't know if it actually mattered),
* and then shared the log (uploading it to my Google Drive).
> 1 votes

# Answer
On my OnePlus 6 running OxygenOS 10.3.11 (Android 10) I can find out the culprit using the following commands:

```
adb shell
dumpsys bluetooth_manager | toybox sed -ne '/abled.*due.*to.*APPLICATION_REQUEST.*/p'

```

Example:

```
$ adb shell
$ dumpsys bluetooth_manager | toybox sed -ne '/abled.*due.*to.*APPLICATION_REQUEST.*/p'
  01-05 13:31:04  Enabled  due to APPLICATION_REQUEST by **com.arlosoft.macrodroid**
  01-05 13:31:18 Disabled  due to APPLICATION_REQUEST by com.android.systemui
  01-05 13:31:27  Enabled  due to APPLICATION_REQUEST by com.arlosoft.macrodroid
  01-05 13:32:22 Disabled  due to APPLICATION_REQUEST by com.arlosoft.macrodroid
  01-05 13:34:24  Enabled  due to APPLICATION_REQUEST by com.arlosoft.macrodroid
  01-05 13:39:22 Disabled  due to APPLICATION_REQUEST by com.android.systemui

```

As you can see the command queries Bluetooth Manager service and filters out information relevant to us. If you want to find out where this information is in the full log/dump, look for the heading `Enable log:` in the full dump of `bluetooth_manager` using `dumpsys bluetooth_manager`. This information may prove useful if my dumpsys query fails to produce output.

The string after `by` is the package name of the app that requested Bluetooth be enabled or disabled at the given time. To find the app name from the package name you can use my answer for the question "How to find app based on package name?"

---

One can also find out this information (package name) by filtering the logcat

```
adb logcat | grep -i 'bluetooth.*packageName'

```

Demo output:

```
01-05 13:32:22.305  1193 16018 E BluetoothManagerService: [CW] addActiveLog, reason: 1, packageName: com.arlosoft.macrodroid, enable: false
01-05 13:32:22.305  1193 16018 D BluetoothManagerService: [CW] Bluetooth Manager Service, enable: false, reason: 1, packageName: com.arlosoft.macrodroid

```
> 1 votes

---
Tags: bluetooth
---


title: Couldn't Connect Private DNS (Own DNS)

text:
# Question
Title: Couldn't Connect Private DNS (Own DNS)
I have created my own DNS resolver for blocking some web pages and I can't figure out how to use it on Android. If I configure the DNS of any other device to use my DNS, it works like a charm (I've tested this both Windows and Ubuntu).

I tried configuring it in the Private DNS section of an Android, but it keeps saying "Couldn't Connect". If I use `1dot1dot1dot1.cloudflare-dns.com` instead, it works.

So, my question is: What are the requirements for a DNS Provider to be configurable in the Android's Private DNS section?

# Answer
> 0 votes
*I don't have the rep to just use the comment so this is likely a far cry from a good answer.*

The verbiage where you can specify does state hostname so (without rooting?) we have to let the system resolve the hostname. You could use `one.one.one.one` as well, for the sake of less typing.

I would suspect it's just a typo but you might also check if you entered `-com` or `.com` in your device. If you're using the address as entered in the OP, it should be `1dot1dot1dot1.cloudflare-dns.com`.

I could be mistaken but, since Android 9, it seems like any private DNS app on the branded Play Store requires the use of VPN tunneling contrivance, on the device. It also looks like the only check it makes is that the TLD field does not begin with a number, as far as how it decides to validate it.

---
Tags: settings, connection-issues, dns
---


# Question
Title: Pop up message from some apps stay on screen and get in the way
Some apps either while in the app or when I leave the app put a pop up on the bottom of my Pixel 3 XL phone. This pop up times out after awhile but sometime gets in the way of typing. Does anyone know how to turn off this option?

# Answer
> 0 votes
To turn off those toasts you need to find out the package name of the app that is causing that Toast to show up. One way to find it out is to setup and issue this command:

```
adb shell
dumpsys appops --op TOAST_WINDOW | sed -n -e '/Uid/p' -e '/Package/p' -e '/TOAST_WINDOW/p' -e '/Access/,/Reject/p'

```

Demo output from an Android 12 AVD image:

```
   Op TOAST_WINDOW:
  Uid 1000:
    Package android:
      TOAST_WINDOW (default):
    Package com.android.settings:
      TOAST_WINDOW (default):
  Uid u0a135:
    Package **com.android.systemui**:
      TOAST_WINDOW (default):
          **Access**: [pers-s] 2022-01-08 00:16:10.431 (-16m30s716ms) duration=+4s97ms

```

You can filter the output further for only `Access` times. Note down or recall the approximate last time when you saw that toast on your screen. Then compare that with the datetime in the `Access` field for a given `Package` from the above output. For example, in the above output the package `com.android.systemui` had access time for `TOAST_WINDOW` permission at 00:16:10 (12:16 AM) which is approximately the time I could recall when I tested a Toast for this package. Since I could correlate the `Access` time here, I decided to issue the following command to stop that app from showing these Toasts *ever* again.

```
adb shell appops set PKG_NAME TOAST_WINDOW deny

```

Replace `PKG_NAME` with the the package name you noted in the above output against which you successfully compared `Access` time. In my case, the package name is `com.android.systemui`. In your case it might be something else.

That's it. In future if you want to revert the changes, you can either uninstall and reinstall the app, or issue the following adb command:

```
adb shell appops set PKG_NAME TOAST_WINDOW default

```

---

An easy but temporary solution is to just force-stop the offending app. For that you need to find the app's name first. To do that, find its package name using my aforementioned solution. After that, use my answer here to find the app name for the corresponding package name. After that, go into Settings app, find/search your app, and force stop it.

---
Tags: google-pixel-3-xl
---


# Question
Title: Pixel 4A ArcaneOS removal/Sideload USB debugging/ unlock bootloader
So I've swapped my Redmi for a used Pixel 4A which has this ArcaneOS installed.

The issue is that there is no build number in about phone section so I can't really flash anything.

My question is if I can somehow either enter EDL mode, sideload USB debugging or unlock bootloader in any way?

# Answer
If you haven't found out by now, You have been conned... In a big undercover action the FBI sold phones to criminals. The operation was a huge success. One of the consequences was that a lot of these pixel 4 were dumped for very attractive prices.... If the price is too good to be true......

As far as I know there's not much you can do. Best option is to buy a phone with a broken display and swap parts...
> 0 votes

---
Tags: fastboot, bootloader, usb-debugging, google-pixel-4a
---


title: Connect Xiaomi Mi Box to Hotel Wi-fi

text:
# Question
Title: Connect Xiaomi Mi Box to Hotel Wi-fi
I need to connect my Xioami Mi Box (Android TV) to my hotel wi-fi. The hotel wi-fi requires you to open a browser and sign in to an agreement page before it will connect a device. How can I get the mi box to do this? I have a fresh Mi Box and I need to perform initial setup.

# Answer
I had the same issue. I was able to solve it by the help of multiple tools. Here is how I solved it

What you need.

1. A mobile with active data connection.
2. A USB mouse (may be Bluetooth or WiFi mouse will also work)
3. A USB to transfer browser apk file to Mi Box(if you are running ES File explorer in your mobile or if your phone is detected as USB mass storage in Mi box, you don't need another USB.)

Here are the steps. During all these steps you can connect USB mouse and make use of it if needed and supported.

1. Connect Mi Box on your android mobile hotspot to access internet through your data connection. First create a hotspot on your mobile and then in Mi Box, go to "Settings =\> WiFi =\> Select your hotspot name and enter password to connect"
2. Select Google play store **in Mi Box** and download **ES File explorer** app. Mi Box is not having any file explorer(we need this to install a browser apk in Mi box). I think there is no alternative to this step.
3. Download any browser apk in your PC/mobile. I used MIUI 7 browser(find link provided at end). Search in google for browser apk file(chrome apk, firefox apk etc. somehow firefox didn't install, may be a bad download)
4. Transfer downloaded browser apk to Mi Box (if you can access and install from downloaded storage, you need not to copy it to Mi Box. Make use of ES file explorer both on mobile and Mi Box).

You may need a USB to transfer it(Copy to USB from PC/mobile, connect it on Mi Box, use installed ES file explorer to copy it on Mi box.

If you are running ES file explorer in your mobile, you can make use of options under Network tab of ES file explorer(LAN, FTP, and may be the best is Sender).

5. Open ES file explorer in Mi Box, Explore and Select copied browser APK file and chose install option. For this you should enable "Unknown sources to On" in Mi box. To enable Unknown sources = On, Go to "Settings =\> Security & restrictions =\> Unknown sources"
6. Now we will switch back to hotel WiFi from hotspot. In Mi Box Go to "Settings =\> WiFi =\> connect to your hotel WiFi( select your hotel WiFi name). You can turn off your hotspot in mobile if needed.
7. After installing open the browser. The browser is not designed for Android TV so it will not be displayed in home screen. Find the browser under "Settings =\> Apps =\> Downloaded apps" Make use of your USB mouse and to select address bar. Once you select the address bar, On screen keyboard will be displayed. Enter the url or some search keywords to connect to your Hotel Wifi. Rest of the procedure is depending on your connection method.

Now your Mi Box is connected to internet and enjoy the shows. Install Kodi and add addons for more shows.

If you are using MIUI browser apk, It may show some Chinese. Don't worry the language of app is in English. I always prefer desktop mode for MIUI browser. To set for desktop mode - Click on options button on extreme top right corner, select "Settings" from drop down menus, Scroll down and find "Advanced" menu, Scroll down and select "User agent string" to "Desktop".For all these you need a mouse.

MIUI 7 Browser
> 2 votes

# Answer
Follow these steps:

1. connect your mouse USB to the MI BOX
2. make sure it's connected and working i.e. move around your mouse where you can se that in the TV screen
3. connect to the hotel WIFI page, and enter the username and the password
4. move the mouse curser to the box where indicate to agree and T&C . Click yes , assuming you agree to them.
5. login, and you are all set
> 0 votes

# Answer
I used zank remote. First downloaded it with my own hotspot, after installation used with the wifi from hotel, they will find eachother before registration is done
> 0 votes

---
Tags: xiaomi, android-tv
---


# Question
Title: My Galaxy S3 refuses connection to home WiFi
I first go into settings then I go into and turn on Wi-Fi but every time I try to connect to my Wi-Fi it say "connecting, authenticating, disabled " and all my other devices connect perfectly

# Answer
1. Forget the Wifi Network you are trying to connect to from your mobile.
2. Turn Off your Router & Turn it ON.
3. Try connecting to this Wifi Network again
> 0 votes

# Answer
For **other users than asker:** First, try if other devices have the same problem.

If not, then simply:

* Disable and re-enable connection. (I know, restarting is against Linux philosophy)
* Delete the WiFi network from your list.
* Re-add the WiFi network. It is possible that some settings were messed up, or that a WiFi configuration has changed.
> 0 votes

# Answer
As other said,

* Reboot the Router and remove the plug from socket to cut off the power for a few seconds (say 5 seconds)
* Forget the Wifi Network on your device.
* Restart your device as well.

Now try to connect. If not connecting, share the screenshot.
> 0 votes

---
Tags: wi-fi, samsung-galaxy-s-3, settings, connection-issues
---


# Question
Title: Block PUBG completely from working in Android mobile
My relative's child is addicted to PUBG. She needs to block PUBG completely. Is there a way to block it from getting connected to PUBG servers, or crashing the app every time it opens?

Please note: My relative is not very tech-savvy. The simpler method, the more helpful it would be.

# Answer
Either use the Parental Control in the PlayStore or simply remove the Network access in the App Settings.

If possible, ask them to spend some time with that kid. This addiction is not a serious issue if you can spend some good time with kid.
> 1 votes

# Answer
There are some methods that actually work for me.

1. Lock the game/app with an app or from the android if you have that function.
2. Go to Google Play--\>Settings---\>Parental controls. Once opened, you will be able to set up the restrictions you want.
3. Restrict the internet access to the game. You can do it from your system if you have this feature. Otherwise, just get an application from Google Play, search for "app internet restriction" for example.
> 0 votes

---
Tags: applications, internet, parental-control
---


# Question
Title: How to setup a Xiaomi Mi Band without an internet connection?
I have a phone with no internet connection and I want to pair it with a Xiaomi Mi Band.

Is there any way to do that since the Xiaomi app asks for online registration? Or at least, can I use the internet just for the activation and then keep using it offline normally?

# Answer
> 4 votes
You must login to your Mi account before pairing Mi Band for the first time. Thereafter you only need Bluetooth connection.

Yes you can use Xiaomi Mi Band offline. It asks for connection only for login. After login it will never ask for internet connection.

Xiaomi Mi Fit App provides for syncing data with Google Fit, WeChat, Facebook and many others. But all that sharing requires internet connection.

I have used MiBand in offline mode for 10 months.

# Answer
> 0 votes
After you connect to your Mi Account (with internet) and connect your band, it will work fine for 1 month.

After that, it is not possible to use the band without connecting to the Mi Account again.

---
Tags: xiaomi
---


# Question
Title: Prevent headphones from starting Google Assistant
Like many headphones, my headphones have a button that calls up the phone's voice assistant. The phone is a Fairphone 3, stock OS, which is their own variant of Android, but looks much like any other Android. So the default voice assistant would be Google Assistant. I don't use Google Assistant, or any other voice assistant.

Unfortunately, the assistant button of the headphones is pretty easy to press by accident. That stops the music and tells me to set up Google Assistant when it is safe to do so. This is accompanied by a pop-up saying "Your Google Assistant is ready to help you get things done TURN ON". Furthermore, the question is asked in a deafeningly loud voice, seemingly uncorrelated to any of the volume levels.

What I've found;

By turning off everything I could find in the Google Assistant settings, I've managed to stop it from doing anything if the phone is locked. If the phone is unlocked, I still get the popup. Why the Google Assistant settings matter when the assistant is set to None confuses me.

A solution that worked by modifying the response to signals from headphones or by removing the Google Assistant would be great. Rooting the phone is not a problem.

# Answer
> 1 votes
If disabling Google Assistant does not prevent, then try also disabling Google app as it gives access to the Google Assistant via its settings (open Google app, press on your account, select Settings -\> Google Assistant). Get started with the Google Assistant on Pixel 4 & later states that:

> To use the new Google Assistant, you need a Pixel 4 and up with:
>
> * The Google app with version 10.73 and up.

The above is also true for other phones brands and models. So disabling Google app should prevent the Assistant from starting when you insert the headphones.

---
Tags: headphones, google-assistant, headset-controls
---


# Question
Title: Can I get Voice to Text to spell my daughter's name correctly?
Let's say my daughter's name is Danny. But she/we spell it Dani. Every time I use her name in VTT it is misspelled Danny and I have to correct it. PITA. I've tried adding the name correctly spelled to the dictionary but that doesn't help. She is in my contacts and if I say "text Dani" it works correctly. But on VTT no dice.

I have LG G4 running Android 6.0 version LS991ZVI using Gboard. Yes I know it's an old phone but I love it and hate that the newer versions don't have the omnifunction button on the back.

Can someone please help?

# Answer
With Gboard, there's currently no option to correct the voice typing directly so that saying "Danny" writes "Dani".

The closest option is to add some entry in the Gboard personal dictionary to fix the already transcribed text (screenshots from Android 12 + Pixel 6 to fix "Frank" into "Franck", thanks user1874594 for showing me this trick):

Then you'll see the fixed word as a suggestion (only after the voice typing stopped being active):
> 0 votes

---
Tags: keyboard, voice-recognition, dictionary
---


# Question
Title: How to mount Andoid 10 file system on Ubuntu 20?
On the phone, I did

> Settings --\> Developer Options --\> Default USB Configuration --\> Transferring files / Android Auto

Hoping that would mount its filesystem on `Ubuntu 20` when connected USB. But it didn't, at least it doesn't show in the file browser.

Is there something else I need to do?

# Answer
> 3 votes
Well, you can mount it the same way as Android 9 on Ubuntu 18 (or any Android \> 4 on almost any Linux distribution) – utilizing ADB. I use **adbfs-rootless** for that. True, you need to compile it yourself – but that's pretty easy, with instructions in the readme. That done you can easily mount the storage of your Android device at the command line – and access everything that's accessible without root powers as if it were locally available on your Linux machine.

---
Tags: usb, linux
---


title: Hide notch on Android 11

text:
# Question
Title: Hide notch on Android 11
I just got my Fairphone 4, and, overall the device is nice, but I can't get used to the notch.

Since the display aspect ratio is super tall anyways and I can use a bit more bezel on the bottom as well (for a keyboard attachment that I built and used on my last phone), I figured, I'd use `wm size` over adb to just reduce the screen's vertical resolution and thus create bezels on top and bottom.

But after I did that, this is what happened:

Sorry for the bad picture quality.

What happened is, it didn't remove the rounded corners and/or the notch, it just moved them farther down. So apparently, the OS doesn't seem to render the pixels behind the screen cutouts at all, and when I made the used screen area smaller, it just moved those dead zones with it. Even if I shrink the vertical resolution to 1000 pixel (which is less than half), the behaviour stays the same.

Is there a way to disable that functionality?

I want to end up with just a square display area.

It would be best if I can get that only with adb/onboard stuff. If you are recommending an app for that, it should be one that doesn't have ads/microtransactions.

# Answer
> 2 votes
Accidentally, I had a similar problem myself recently. I believe I see USB debugging is enabled on your phone. Go into developer options and scroll 3/4 of the way down to the *Drawing* section. In there you have a setting called *Display cutout*. Change that to *hide*.

Alternatively, you can root your phone and install Magisk. Inside Magisk you can install a module called *None Display Cutout* by MlgmXyysd. After installing, go to the same setting under developer options and select *No display cutout*. This module let's your phone think it doesn't even have a notch. You can play around with this but probably the first option will work best for you.

---
Tags: adb, screen, android-11, fairphone-4
---


# Question
Title: How can I install Slack app on an old Galaxy S6 phone?
I am near certain that Slack works (or worked) on Galaxy S6 phones back in the day, but now when I try to install it, it's not available as supported in the Google Play store. Is there any way I can still get the app image and install it onto my S6 phone?

Thank you!

# Answer
The recent version of Slack v22.01.11.0 for Android I can see on apkpure.com defines in it's AndroidManifest.xml `android:minSdkVersion="26"` so this app requires at least Android 8.0.

The Galaxy S6 comes (according to gsmarena.com) with Android 5.0.2 (Lollipop), upgradable to Android 8.0 (Oreo). So if your device is fully upgraded to Android 8 you should be able to install Slack from Google PlayStore or from a web site that provides the APK like https://apkpure.com https://apkmirror.com ...
> 1 votes

---
Tags: applications, installation
---


title: How to access hosts file?

text:
# Question
Title: How to access hosts file?
I am following these instructions to modify the `hosts` file (map IPs to names) and it says it is under `/system/etc`. When I went into my Android file browser, I did not find that directory. Is it because the phone is not rooted and how can I access that file?

# Answer
You can try using an app like Hosts Go that doesn't require root and allows you to set custom host entries.

The app is available from Google Play.
> 1 votes

---
Tags: file-system, hosts
---


# Question
Title: How to fix LineageOS 18.1 bootloop on Sony Xperia XZ3?
I installed LineageOS 18.1 following official guide and also installed MindTheGapps. Now I am stuck in infinite loop of booting: LineageOS logo flashes for few seconds and phone reboots same thing happens over and over again. How can I fix this? I tried reinstalling the LineageOS again, but same thing happens.

# Answer
Remove the SD card when, that will stop the bootloop. When you've booted up again, insert the SD card and continue as usual :)
> -1 votes

---
Tags: boot-loop, lineageos, sony-xperia
---


# Question
Title: Syncing Android 'Contacts' with an Office 365 mail account
My Android contacts used to sync with my Office 365 (exchange server) mail account, but this stopped working.

More details: I have a Samsung S10 phone running Android 11 (up to date as of this posting). I use the native 'phone' app (green background, white phone symbol) which in turn uses the native 'contacts' app (orange background, white 'person' symbol, version 12.1.20.11). Up until recently, after making a call to a new number, I could choose to 'create contact' from the 'recents' list, and that name / number would automatically show up in my Office365 account online and in my windows 10 outlook installation within minutes. Similarly, contacts added in Outlook on my laptop would show up in the Contacts list on the phone within minutes. But recently, that stopped happening. I spent days researching, experimenting, and finally today I got it working again, but I'd like to see if others agree with my conclusions and also, provide info for others who may have run into this. (See my answer posted below).

# Answer
> 1 votes
I recently had a similar issue on my Samsung Galaxy S21 with Android 12.

For months the built in Contacts app would sync correctly with Office 365 via the Outlook app, but suddenly it stopped working, my contacts all disappeared, and wouldn't update.

Contacts showed that the last sync had just happened.

Things that did NOT help:

* List item
* Restarting phone
* Toggling "Sync \[office365\] account" in Contacts
* Clearing Contacts cache
* Clearing Contacts storage
* Checking Sync Faults in the Folders menu of my desktop Outlook client

**What did work:**

*See screenshot for matching steps.*

0. Open Outlook app on your phone.
1. Press the top left icon to get the menu.
2. Press the gear icon in the bottom left.
3. Press the account you're having issues with.
4. Toggle "Sync contacts" off. Close the app, and re-open. (Not sure if closing and opening again was necessary, but I did it).
5. Toggle "Sync contacts" on.

Hope this helps!

# Answer
> 0 votes
To address the issue, I first fully removed the Office365 / 'Microsoft Exchange ActiveSync' account at the 'settings' / 'accounts and backup' / 'manage accounts' screen (choosing 'remove account' from within the account entry). I then re-added the account in the same area, using the 'add account' option, and then choosing 'microsoft exchange ActiveSync' option. Once added, I verified that 'sync on for all items' was shown for this account. NOTE - removing and re-adding the account caused some orphan contacts that were in the phone but not office 365 to be deleted, so be warned.

I then went to the phone app, 'recents' list, and chose an unsaved number from the list; I then chose 'add to contacts', 'create new contact'. THIS IS THE IMPORTANT BIT ... the option is presented to 'save contact to', and it offers (in my case) 'Phone', 'Google', 'Microsoft Exchange Active Sync' (the list of options will reflect the number of accounts you have configured on your phone). It also has choices for 'just once' and 'always'.

At this point, before proceeding, I wanted to discuss this screen. In my mind, if you have a 'sync' solution for contacts, you should only ever have to 'save' a contact to the 'phone', since that's what 'sync' is there for - to sync the phone to whatever outside services you may have. You shouldn't be asked if you want to 'save contact to' (eg) Exchange ActiveSync. But if you in fact choose to save the contact to 'phone', what I believe this means is, save contact to phone ONLY and DO NOT SYNC (even though you've elsewhere told the phone to sync contacts!). And if you choose to 'save contact to' Exchange ActiveSync, you are actually telling the phone to save the contact to the phone, and also sync the contact to Exchange ActiveSync. This further implies you can only sync contacts with one outside account, despite having multiple accounts configured on the phone.

Secondly, and still on this screen, the choices of 'just once' and 'always' are crucial. If you choose 'just once', you get to make the same choices next time you try to save a contact (and could choose to save / sync the contact to a different account), but if you choose 'always', that's it - you will never be asked again (until you delete the accounts, or some other 'reset' condition that I'm not aware of).

So - if you choose 'phone' as the 'save contact to' location, and assume (incorrectly) that sync will occur thanks to having chosen to sync contacts elsewhere, and then choose 'always', you will forever be saving contacts ONLY to the phone and sync will never occur again!

I chose 'save contact to' / 'microsoft exchange activesync' / always, and now everything is working as expected again ... but I feel that the logic behind this setup is a bit dubious.

Also, as an aside, during my experimenting I tried adding the office 365 mail account a totally different way, and 'things worked' but appeared differently. Instead of adding back the office 365 account using settings / accounts and backup / 'manage accounts', I used the Android Outlook App, and chose to configure the mail account there. In this case, when in the phone contacts app, and choosing to save the contact, the 'save contact to' screen showed the account as 'Outlook', not 'Microsoft Exchange ActiveSync' (same exact mail account).

---
Tags: email, sync, exchange
---


# Question
Title: Android phone cannot access internet when connected to bridge mode router
1. I have 3 routers in the house. 2 are using bridge mode (for wi-fi coverage) and 1 main router
2. My other devices work fine (either connect to the main router or bridge mode routers)
3. All routers use the same wi-fi identifier
4. When I move my phone closer to the main router, it works fine
5. When I change my IP to static instead of DHCP and keep everything else the same, it says connected, but actually no internet
6. My phone can always access the router's UI. And in the GUI I can see my phone is connected to it even though it's the only one that can't access the internet
7. I have tried restarting the phone
8. I have tried "forget network" and reconnect
9. No proxy used

I generally don't like to use static IP as it can create conflicts. It is so strange so please help me! My android version is 8.0.0

# Answer
> 0 votes
Ok, I have tried switch mode with access point, same results. I disabled IPv6 option in the secondary router and it works. I guess android 8.0.0 doesn't support IPv6. Not sure why the router still honors IPv6 since it's in bridge mode or switch mode.

Again other devices always work. My assumption is this android somehow honors the IPv6 option in the secondary router even though the router is not in router mode.

---
Tags: networking, wi-fi, router, internet
---


# Question
Title: How can one adjust the brightness when taking a panorama picture?
I use Google Pixel 6 with Android 12. I don't see where to adjust the brightness when taking a panorama picture. How can one adjust the brightness when taking a panorama picture?

# Answer
> 0 votes
Reddditu user MarsR0ver\_ mentioned it is currently not possible to adjust the brightness when taking a panorama picture:

> You can't. Just another small detail that will piss you off. Expect more.

---
Tags: camera, photos, android-12, google-pixel-6
---


# Question
Title: How can I change the shutter speed when taking a picture with my Google Pixel 6?
I use a Google Pixel 6 with Android 12. How can I change the shutter speed when taking a picture?

# Answer
> 1 votes
Changing the shutter speed when taking a picture is not possible with the default camera application on a Google Pixel 6 with Android 12. However, one can use this mod: https://www.celsoazevedo.com/files/android/google-camera/dev-MWP/ (root not needed).

On the left side, bottom part, there's an option to change the exposure time.

There's a native long exposure mode:

---
Tags: camera, images, android-12, google-pixel-6
---


# Question
Title: How do you extract an App's data from a full backup made through "adb backup"?
I have been backing up my Nexus 7 with `adb backup` to back up all files into an encrypted backup. I see that you can restore from a backup with `adb restore`, but that would wipe all my existing data on the device.

How exactly would I extract one App's data from this encrypted backup file?

# Answer
### How to extract ab files

There is an open source project under the Apache 2.0 license, written by Nikolay Elenkov that will allow you to extract the .ab in to a tar file.

Usage:

```
java -jar abe.jar unpack <backup.ab> <backup.tar> <password>

```

### Background

Just for reference of others, here is some background on the .ab file format.

The Android Backup (\*.ab) file is a compressed TAR file. It is compressed using the DEFLATE algorithm. On top of that, there can be AES encryption used. This is determined when you create the backup, if you enter a password then the backup is encrypted, otherwise; there is no encryption, it is only compressed.

The HEADER of the file is a little different than a normal DEFLATE archive. It contains information about the backup and looks like the following:

```
ANDROID BACKUP
1
1
none

```

The first line is the "Magic" line. The next line is the version of the Android Backup file format. The next line is a boolean (true or false, 1 or 0) indicating if the file is compressed. The last line is the type of encryption. This example is not using any encryption. If there was a password, the line would read "AES-256". After that is the encryption cipher. If no password, then the DEFLATE "archive" starts.

It is compressed using the Java Deflater. Which, from a developers perspective, causes issues if you want to use anything besides Java to extract it. I haven't been able to find anything that can deflate it using the same algorithm, even though all that I have found (for like C#) are supposed to follow the "SPEC".

If you are not sure how to really use that (which is beyond the scope of this answer) Droid Explorer since v0.8.8.7 (available here) allows you to do exactly this, and more, right from Explorer. You can read more about the features on my blog (yes, i know, shameless plug. I do that when it fits the question)
> 142 votes

# Answer
Or with a one-liner:

```
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 backup.ab ) |  tar xfvz -

```
> 120 votes

# Answer
One more option is to use `bash`, `cat` and `gunzip` (`gzip`).

The full process could be this (**with an unencrypted backup**):

1. backup one app's data (for example "Override DNS for KitKat"):

```
$ adb backup -f net.mx17.overridedns.ab -noapk net.mx17.overridedns
Now unlock your device and confirm the backup operation.

```
2. extract the compressed data

```
$ dd if=net.mx17.overridedns.ab bs=1 skip=24 > compressed-data
1285+0 records in
1285+0 records out
1285 bytes (1,3 kB) copied, 0,00745877 s, 172 kB/s

```
3. decompress the compressed data

```
$ printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" \
    | cat - compressed-data | gunzip -c > decompressed-data.tar
gzip: stdin: unexpected end of file

```
4. "untar" the tar file

```
$ tar xf decompressed-data.tar

```
> 37 votes

# Answer
Based on the information by others, now I know that the backup file is just a prefixed Deflated (GZip) stream, based on this information this simple program can unpack it for you:

```
import java.io.*;
import java.util.zip.*;

/** Run: javac unab.java && java unab backupfile.ab */
public class unab {
    private static final int BACKUP_HEADER_LENGTH = 24;
    public static void main(String[] args) throws IOException {
        InputStream in = new FileInputStream(args[0]);
        try {
            OutputStream out = new FileOutputStream(args[0] + ".tar");
            try {
                if (in.skip(BACKUP_HEADER_LENGTH) != BACKUP_HEADER_LENGTH) {
                    throw new IOException("Unexpected end of file while skipping backup header.");
                }
                byte[] buffer = new byte[100 * 1024];
                int count;
                InputStream zip = new InflaterInputStream(in);
                while ((count = zip.read(buffer)) > 0) {
                    out.write(buffer, 0, count);
                }
            } finally {
                out.close();
            }
        } finally {
            in.close();
        }
    }
}

```

I wrote this because I don't have any of the Unix tools mentioned above, and it was easier than installing Cygwin or other tools.

**Advantages**:

* cross-platform
* simple (no esoteric parameters)
* no need for piping tools

**Disadvantages**:

* need a JDK (which you likely already have because you're messing with Android SDK)
* no support for encrypted backups
* need something to extract the resulting tar file (I use Total Commander)

To make it a command line tool create `unab.bat` with contents: `java -cp "%~dp0." unab %*` and the directory to `PATH`.
> 10 votes

# Answer
As the implicit question is also, "how to restore a single apps data", I would like to mention this nifty script, that splits a given full-backup.ab in single-app.ab files.

It requires these jar files: abe.jar and tar-bin-split.jar.

At least for my testcase, it worked using the referenced resources.
> 6 votes

# Answer
Another option is using the Perl AdbBackupRoutines from this XDA thread. They have a few requirements, though: Perl obviously, plus `libterm-readkey-perl`, `libcrypt-cbc-perl`, and `libcrypt-pbkdf2-perl` (if your backups are unencrypted, you can skip the last dependency by simply commenting out line 103 of `backupdecrypt.pl` where it's included -- worked fine for me).

Usage is quite easy:

```
./backupdecrypt.pl [options] <backupfile.ab> <outfile.tar>

```

The resulting `.tar` file then can be investigated like any other tarball. Its structure is quite interesting in at least one aspect: it does not reflect the real paths where the files have been taken from (e.g. not `/data/data/com.app.name/databases/whatever.db`, but instead `apps/com.app.name/db/whatever.db`) -- which indicates an app backed-up on one device/ROM *might* be restored to any other device/ROM without trouble, as `adb restore` must figure out the real paths itself.
> 4 votes

# Answer
To add another option here's a Windows PowerShell version of the header manipulation:

```
$file_in = (Get-Location).Path + "\backup.ab"
$file_temp = (Get-Location).Path + "\temp.tgz"
[int32[]]$header = 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00
$bytes = [System.IO.File]::ReadAllBytes($file_in)
$bytesout = $header + $bytes[24..($bytes.Length - 1)]
[System.IO.File]::WriteAllBytes($file_temp, $bytesout)

```

You can try to use the tar executable in current Windows 10 versions 17063 or later to extract the file, however it seems that it currently doesn't handle the misformed file produced in this process as well as the linux version. YMMV:

```
tar -xvzf $file_temp

```

To get the full contents you can manually extract with 7zip or similar. Or could combine with one of the answers from Native .tar extraction in Powershell.
> 4 votes

# Answer
Just to add to other answers, I *finally* got it using nelenkov's app and the instructions from here. I was trying to avoid the extra 800mb disk space for Java. Most phones are moving toward encrypted by default, and I think nelenkov's app is the only solution that works well with encrypted.

Here is a direct link to nelenkov's compiled jar release. Please check if its the latest, then follow the instructions from the link above. It has more info about Helium and Splitting an ab file up in to individual app files. And also a way to change apps not set to use adb backup without root. Substitute `abe-all.jar` if using this release file.

> 1. Convert the original adb backup to tar format:
>
> `java -jar abe.jar unpack nexus7.ab nexus7.tar <password>`
>
> 2. Extract the contents of the tar archive. This should be done on a filesystem where the permissions of the files inside the tar are preserved, for example using linux, mac or bsd. Up to two folders may appear, apps and shared:
>
> `tar -xvf nexus7.tar`

Now you should have new folders to look in. Now you can see which apps are backed up and which arent.

BTW, Izzy's answer is good, but his script requires several perl modules to be installed, the 3rd of which I couldnt find easily. His app is full featured, but find `adb2tar` in `Adebar-master/tools/`. Again, it doesnt work with encrypted ab files though.
> 1 votes

# Answer
This worked for me in Linux environment:

```
dd if=backup.adb skip=1 bs=24 | zlib-flate -uncompress | cat > somewhere.tar
tar xvf somewhere.tar

```
> 0 votes

# Answer
You can download the latest binary of the Android Backup Processor. Once downloaded, extract the zip file and run:

`java -jar abp.jar unpack <backup.ab> <backup.tar> <password>`

###### Commands

```
Usage:
    info:       java -jar abp.jar [-debug] [-useenv=yourenv] info <backup.ab> [password]
    unpack:     java -jar abp.jar [-debug] [-useenv=yourenv] unpack <backup.ab> <backup.tar> [password]
    pack:       java -jar abp.jar [-debug] [-useenv=yourenv] pack <backup.tar> <backup.ab> [password]
    pack-kk:    java -jar abp.jar [-debug] [-useenv=yourenv] pack-kk <backup.tar> <backup.ab> [password]

```
> 0 votes

---
Tags: backup, adb, restore
---


# Question
Title: Connecting to OpenVPN running on OpenWrt from Android
```
OpenVPN 2.5.3 aarch64-openwrt-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD]
library versions: OpenSSL 1.1.1l  24 Aug 2021, LZO 2.10

```

I installed OpenVPN on the latest OpenWrt 21.02.1

The client config and server conf files both have these lines at the top:

```
user nobody
group nogroup
dev tun
..
..

```

I installed the OpenVPN for Android app on my Android phone. When entering the client config file... am I supposed to comment out or delete the first two lines since there is no user called: nobody and no group called nogroup in my Android. At least I didn't see anything in `/etc/group` and \`/etc/passwd in Android OS.

I see in the OpenVPN manual that the --user option lets you: *"Change the user ID of the OpenVPN process to user after initialization, dropping privileges in the process. This option is useful to protect the system in the event that some hostile party was able to gain control of an OpenVPN session."*

I can connect from the Android client to OpenVPN server by commenting out those two lines but is there a way to obtain the benefit of running as user "nobody" and group "nogroup", or some such unpriviledged user, when connecting to OpenVPN server on OpenWrt from an Android phone?

From a Terminal to my phones Android OS if I do `ls -l` I can see user and group of all files is: `u0_a252` so should I make a user an group of `u0_a252` on the server running OpenVPN and then use that as the user and group in you are dropping root privileges on the client with --user and/or --group the client and server config files? My phone is not rooted so I guess running as user `u0_a252` will be the same thing as running OpenVPN unprivileged?

Lastly do I NEED to define a user AND a group or is one or the other enough? The OpenVPN manual is a bit ambiguous on this point because it also states: *"\[if\] you are dropping root privileges on the client with --user and/or --group.."*

Cheers,

Flex

# Answer
I asked the creator of the OpenVPN for Android app.

That app ignores the OpenVPN --user and --group options and it runs as an unpriviledged user which can be confirmed by installing Android Debug Bridge (ADB) on a computer to which the phone is attached via USB cable. Then run commands such as these:

```
# adb shell
sunfish:/ $ top | grep openvpn
20901 shell        20   0  10G 2.8M 2.1M S  0.0   0.0   0:00.00 grep openvpn
20901 shell        20   0  10G 2.8M 2.1M S  0.0   0.0   0:00.00 grep openvpn
19186 u0_a253      20   0  14G  96M  49M S  0.6   1.7   0:02.23 de.blinkt.openvpn:openvpn
19186 u0_a253      20   0  14G  96M  49M S  0.3   1.7   0:02.25 de.blinkt.openvpn:openvpn
19186 u0_a253      20   0  14G  96M  49M S  0.6   1.7   0:02.26 de.blinkt.openvpn:openvpn

```

So in my case the client connecting to the OpenVPN server has user id: **u0\_a253** and not root.

Regarding my original question.... my understanding is that **u0\_a252** is the UID of the Terminal process.

Cheers,

Flex
> 0 votes

---
Tags: permissions, openvpn, google-pixel-4a
---


# Question
Title: Use or access large NTFS cluster sizes (e.g. 2048 kb / 2049 kb / 2M or 2MB) in an Android (or Linux) OS?
I have an external media storage drive where I (*believe that I*) have formatted the partitions as 2048 kb (or 2,048 kb for any Googlers searching) cluster sizes and there are a couple of smaller clustered partitions on the same USB drive. This might be termed as 2049 kb or 2,049 kb ( or 2M / 2 M / 2MB / 2 MB ) in some places, but 2048 is the number that Windows provides when you format.

I'm pretty sure that is the number that I chose when I formatted them. However, the actual number in the cluster report is 2097152 or 2,097,152 from this command:

```
fsutil fsinfo ntfsinfo [drive]

```

**However, whenever the physical device is correctly recognised by Android operating systems, it will not recognise the large cluster partitions. Is this an Android-specific fault, or is it working as designed, and wasn't ever supposed to read clusters / file allocations of that size?**

I have (I believe exhaustively) searched for answers on this (at 2048 and 2049), but as you can appreciate, I get a lot of unrelated stuff. I'm aware of how to Google well (quotes, brackets, intitles, etc), and have searched this network, too, and have not found a solution. This is a bit of a pain, is all, as it means that my drive can essentially only be used on my Windows computers, and then (I think) only a couple of them.

On Android, I've tried ES File Explorer on a Shield, and CX on a Galaxy Tab S4. I can't afford the NTFS plugin for Total Commander, but I would guess it's an OS restriction, not an App one. KODI doesn't see the partitions, and I'm not sure where to go next, to be honest.

I mention Linux in the title because my router (stock TP-Link Archer C1200 v2) also won't recognise the large clustered drives. I'll be testing on a Pi, later, to see if that gives me any joy, and a Mint box at my parents, when I can.

Windows 10 devices have no issues with the drive, I have a VISTA box that I can test, but I have a feeling that it won't recognise the drive as I may have tested it months ago. (This post has been in draft for a *long* time. ;-)

With the greatest respect (and I think Stack avoids this well, but still) let's not delve into *why* I chose NTFS or these cluster / file allocation sizes.

---

2 *LARGE* File size drives at this configuration *NOT* seen by Android devices:

```
Bytes Per Sector  :                512
Bytes Per Physical Sector :        4096
Bytes Per Cluster :                2097152
Bytes Per FileRecord Segment    :  1024

```

1 *SMALLER* File size drives at this configuration *ARE* seen by Android devices:

```
Bytes Per Sector  :                512
Bytes Per Physical Sector :        4096
Bytes Per Cluster :                32768
Bytes Per FileRecord Segment    :  1024

```

2 *EVEN SMALLER* File size drives at this configuration *ARE* seen by Android devices:

```
Bytes Per Sector  :                512
Bytes Per Physical Sector :        4096
Bytes Per Cluster :                4096
Bytes Per FileRecord Segment    :  1024

```

# Answer
> 0 votes
I believe you should stick with a max size of 64 kilobytes for the best interoperability. Windows 10 expanded the maximum cluster size from 64 to 2048 kilobytes (2097152 bytes per cluster) in the Spring of 2018.

The open-source world patched util-linux almost immediately to be able to read the partition structures off of such disk, but it will take a while for that to propagate through all Linux-based products (routers, backup software, Android, etc).

---
Tags: file-system, windows, ntfs
---


# Question
Title: Adding 'Subscriptions' as default page in YouTube app
I use YouTube a lot in my phone, and specific in what I watch. I control this mainly using 'subscribing' channels what I really wanted to watch.

Now the problem is YouTube app has it's own default page called 'Home' which I totally hate it since it pollutes the feed by adding their own 'suggested' videos and I'm lost into videos that I wouldn't have watched otherwise.

Is there a way/app to set 'Subscription' page as the default?

Or is it possible to create a deep-link into my desktop so that that page opens directly !?

Or what are the better alternate to the official YouTube app ?

# Answer
I installed the Automate app and created a new flow which I named "YouTube Launcher":

1. For the "Flow beginning" step, choose the option to "Install from home screen shortcut". Additionally, you can hide the official YouTube app from your app drawer so that you do not accidentally revert to old habits.
2. Add an "App Start" step and choose the YouTube app as the package.
3. Add a "Delay" step for 1 second.
4. Add an "Interact Touch" step and set the `Screen X0` value to 50% and the `Screen Y0` step to 90%. This step simulates tapping the subscriptions tab.

From there, each time to tap the new home screen shortcut the YouTube app will launch and automagically navigate to the Subscriptions tab.
> 1 votes

# Answer
If you tap long on the Youtube shortcut icon, then some options are appear in a popup list including Subscriptions.

If you tap long on any of these options, then you can drag it and drop somewhere on your Home screen for make a shortcut for that. You can use this trick for avoid the Home screen on your Youtube app, but it works with other apps too.

Note: it worked for me on Android 9 with Samsung One UI 1.0, but it could work on other versions too.
> 1 votes

---
Tags: youtube
---


# Question
Title: Can't copy files from Windows to Android?
I have a Galaxy 5s with a 32GB external card, which I connect to my Windows 7 x64 PC with a USB 2.0 cable. I can copy files **from** my phone to the PC all day long with no problems. Copying files **to** the phone from the PC is virtually impossible, however.

I can open the phone's card in Windows Explorer, and look at all the files. But trying to copy anything onto the card hangs explorer. Right now I'm trying to copy a 42MB MP3 file from my PC to the phone - it's telling me "27 minutes to go" and it's already taken half an hour.

I checked this question from 2013 which seems like the same problem, but basically the answers were "you can't get there from here." Was wondering if anyone had a solution for this.

# Answer
> 1 votes
As a fast solution I would recommend FTPServer as mentioned above.I had a similar problem and that was the drivers from Samsung.Maybe a little driver upgrade would solve your problem . Google USB Driver

# Answer
> 1 votes
I've got 3 possible solutions.

1) If your drivers and Android OS are up to date, I would simply purchase a microSD card adapter and insert it directly into your PC. This avoids the problem alltogether.

2) On the free side of things, you can upload the file you want from your PC to google drive (or other cloud service) and download it to your phone.

3) The problem might be with your SDcard. You might want to verify that it is the capacity it says it is. Sometimes cards are counterfeit and will be only 2gb or less in size. You can use H2testw to verify what the actual size is.

Hope I helped!

# Answer
> 0 votes
Windows 7 to Samsung A32 Card: I can copy files from a USB stick inserted in the Windows 7 PC to the Android card. I cannot copy files directly from the PC hard disk to the Android.

So I can copy from the PC to an inserted USB stick and then from the USB stick to the Android!

---
Tags: file-transfer
---


title: Samsung A8 KG State prenormal

text:
# Question
Title: Samsung A8 KG State prenormal
I have problem with KG State prenormal on my Samsung Galaxy A8.

So, I installed TWRP, after I installed SaboorROM, and after connect to WiFi, the device set's the KG state to Prenormal and I was unable to boot into TWRP or into SaboorROM. So I installed Stock ROM (AP: A530FXXSBCTC4 | CSC: A530FODXBCTC2). After install I enabled Developer settings and OEM was already unlocked. So I tried to "date|time changing experiments" to reach KG state checking, but nothing worked. Than I was about 500 hours if KG state will change, nothing :/

OEM: unlocked FRP: unlock KG: prenormal Binary: 11 Android: Pie

**How to change KG state?**

# Answer
> 1 votes
Apart from not rebooting in a week there's another method that worked for my device (not galaxy a8) but i don't know if it will for you.

So, you need to:

* First flash (reflash) official stock firmware, i'd try to flash the version your device had when you bought it, but if you can't, try latest.
* Then boot and proceed with the setup. Skip connecting to the internet so you finish it faster.
* After you finished the setup, connect to the internet and wait. Enable OEM unlocking in developer settings if needed.
* Next log into any valid google account on your phone and wait some time (i waited about an hour).
* Reboot to odin mode and kg status should be checking.

If this doesn't work, try factory resetting after that (keeping the bootloader unlocked) and doing everything again but without even enabling developer options.

# Answer
> 0 votes
\[...\] Sadly there is no workaround just yet. 1 week no reboot is useless if you are on Bootloader 7 (Android 10 or latest android 9 update) https://forum.xda-developers.com/galaxy-a6/help/official-released-binaries-allowed-to-t4102447 :(

---
Tags: samsung, samsung-knox, samsung-galaxy-a8-2018
---


# Question
Title: How to restrict internet access for Work Profile and Parallel Apps using Netguard?
I have switched from AFWall+ to NetGuard recently. I see that unlike AFWall+ NetGuard doesn't have a feature to restrict internet connectivity for Work profile apps and Parallel Apps (feature in OnePlus devices) profile apps.

What do I have to do to restrict internet connectivity for apps installed in Work Profile and Parallel Apps profile?

I have a rooted OnePlus 6 running OxygenOS 10.

# Answer
> 2 votes
NetGuard has to be installed separately for Work profile. After that, open Netguard app in Work profile and manage therein the internet connectivity for apps installed in Work profile.

As for Parallel apps profile installing and running Netguard in it breaks internet connectivity for all apps in main profile as well as Parallel apps profile.

In order to restrict internet connectivity for apps installed in Parallel apps profile these are the requisites needed and the steps to be followed:

1. the app must be installed in **both** main profile and parallel apps profile. Keeping an app installed only in Parallel apps won't work with NetGuard.
2. Netguard must be installed **only** in the main profile. Installing it in Parallel apps would cause only headache later on.
3. Open the Netguard installed in the main profile. If you restrict or allow internet connectivity for apps installed in main profile then the **same** apps installed in Parallel apps would be affected the same.

For example, if you install Firefox in both main and Parallel apps profile and you restrict internet connectivity for Firefox in Netguard for main profile, then your Firefox in Parallel Apps would also not get internet connectivity!

If you plan to keep an app installed only in Parallel apps, then you're gonna be disappointed. You won't be able to manage to get internet connectivity in it so long as Netguard runs in either main profile or Parallel apps profile.

OnePlus' implementation of Parallel apps user is not akin to how a Work profile is implemented. That's why having Netguard installed in Parallel apps would break internet connectivity for all apps. It is not Netguard's fault if you must know.

I tested my solution on a OnePlus 6 running Android 10.

---

1. *How to install any app as a parallel app in OnePlus 6?*

---
Tags: netguard
---


# Question
Title: How to root samsung galaxy s6 SM-G920F android 7
I want to root my phone **Samsung S6 SM-G920F android 7**. I have tried app like *kingroot, kingoroot, z4root, towelroot*... but none of this work

Thank you for your help!!!

# Answer
for samsung devices patch whole AP\_\*.tar.md5 ROM file with Magisk (instead `boot.img`)
> 0 votes

---
Tags: root-access, samsung-galaxy-s
---


# Question
Title: Will installing a boot image modified by Magisk wipe all my data?
I'm sorry for asking a questions that's been asked before, but I have read conflicting information, so I want to be absolutely sure about this before I proceed.

I am aiming to *ROOT* my Pixel 4a (5G) with Android 12.

Will flashing a boot image modified by Magisk wipe all my data? (I have installed Magisk Canary because of Android 12, correct?)

I have already unlocked my bootloader, and of course that wiped my data. I don't want to go through that again. I don't want to have to reconfigure my setup again. (Some apps didn't automatically install for some reason. A few more of them lost their configurations. And system settings...)

Anyway, can someone please give me an **authoritative** answer?

Many Thanks, ---Mark

# Answer
> 0 votes
I'd conclude it as no. It should not cause data wipe on your bootloader unlocked Pixel device.

Most well known triggers of data wipe are:

1. bootloader unlock and relock,
2. manually triggered factory reset,
3. automatically triggered factory reset

The third one is something harder to talk about. In your case your device is a Pixel device running closest to what vanilla Android has to offer. There is no known (not to me) feature wherein a vanilla Android automatically triggers a factory reset if it detects boot image tampering **on a bootloader unlocked device**. Furthermore, while I am not certain I don't think Android OS provides a way to device administrator or owner apps to ascertain if the boot image has been tampered with since last boot. As such while a device administrator app can issue a data wipe, it has no reason to. I do suggest that you go into Security settings of your device and see if there is a device administrator app that is enabled as device admin and also has "Data erase / Factory reset" permission. If it does have that you would want to revoke device admin permission from this app before continuing with the process of boot image modification.

As for non-Pixel device owners, all I can say is that you do some related search on your nearest search engine to see if something comes up. A very simple search query such as "*flashed modified boot image on my XYZ device Data wiped factory reset*" might bring up some useful results if your stock ROM is configured by your vendor to automatically erase user data on detection of boot image modification **even on a bootloader unlocked device**. Having such configuration enforced for a bootloader unlocked device does not make sense though, and I have not really come across any such case either.

Over and all, you have no reason to worry about at this point. Your device's bootloader is already unlocked so (1) would no longer be triggered. You are not going to trigger (2) because you actively don't want to. And there is no known feature in vanilla Android that would trigger (3), so go ahead, modify or hack the boot image as you see fit.

**A strong suggestion:** when dealing with hacks and modifications in Android it is best to take a reliable backup of your current state of device and **store it in PC**. When I say backup I'm not talking about what Android natively offers. That thing is very inconvenient and unreliable. Instead, use a custom recovery such as TWRP which takes backup in a manner you would expect from a backup tool. You give the command to backup and a custom recovery obeys that religiously with superuser privileges. When you ask it to restore a backup it does that too very religiously.

A less powerful alternative to a custom recovery was sugested in the comments. Izzy mentioned that the app SeedVault works better than Android's native backup and restore solution. Here's the relevant excerpt from his comment:

> ...luckily, Seedvault (the replacement integrated with e.g. LineageOS since Android 10) is way better \[than Android's builtin backup and restore solution\]. I had to perform a clean flash to upgrade to Android 11, and almost everything came along. Wherever an app had opted out from backup, data was gone – but at least the APK was carried over, regardless of its source: F-Droid, XPosed repo, sideloads – that was a positive surprise.

Go ahead with that solution that suits your requirements of data backup and restore, be it native solution, custom recovery solution, SeedVault, or something else you would come across.

# Answer
> 0 votes
No it won't. Flashing bootloader image wipes bootloader only.

---
Tags: rooting, magisk, android-12
---


# Question
Title: Websites still detecting VPN/proxy even after I uninstalled VPN apps
4 months ago I used VPN on my Android 7.0 mobile like OpenTunnel, SocksIP. Now, I've uninstalled the VPN, but when I use certain websites, they said VPN/proxy detected and I can't sign up there.

One more thing I want to share is that the VPN proxy detecting issue is just on my Zong SIM. When I use the internet on Jazz SIM, then I don't face this issue.

Someone guide me as to how can I solve this issue.

# Answer
When you install proxy/vpn apps they create a vpn on phone if you delete the app, vpn may still be there until you remove it manually

From Settings\>

* Select Connections or Wireless & Networks
* Scroll down to More Connection
* Settings Select VPN
* Tap on the blue settings cog next to the VPN name
* Select Delete VPN profile

and you should be good to go!
> 0 votes

---
Tags: 7.0-nougat, vpn, proxy
---


# Question
Title: Make all apps use system volume level setup on Android
I sit in a quiet library room and want to see online videos with my smartphone. I turn the volume down with side volume button. But after I open a video App, like YouTube, Bilibili, TikTok, my phone will remember the volume level the last time i used on this App. The sound volume exploded out and everybody looked at me. I'm using Huawei Nova 3 and Android OS 9. I don't know why the App on this phone don't use the system volume level I set for now, or retrieve the last time volume setup. Hope people here can help me.

# Answer
> 0 votes
Keep the phone in silent when you start the app then gradually increase volume. Most applications which may not respect system volume and modify it directly would still respect the silent mode.

You can also use "system volume limiter" apps from play store

---
Tags: volume
---


# Question
Title: How to upgrade Pixel 3's internal storage to more than 64 GB
I have a Pixel 3 that has been fine, but its 64 GB internal storage frequently gets full, and I don't like needing to connect the device to my computer with a physical cable (it blows my mind that it's 2022 and I'm still using cables for file transfer) and move files to my PC just to free up space on my phone to keep is usable.

I see that there were versions of the phone that featured 128 GB of storage.

How could I buy a \>=128 GB internal card (or whatever it's called) and install it in my device, replacing the 64 GB one?

# Answer
The Pixel 3 does not have a slot for inserting an Micro-SD card. Therefore you can not upgrade your device.

The 64GB memory chip is built-in soldered to the main board of the phone. Replacing it is next to impossible.

The only workaround would be using an USB flash memory stick with USB-C connectors (or an USB-A version + adapter cable) and manually copy data from/to the flash memory stick.

But I would not recommend doing so as it increases the chance to break your USB port making it in the end impossible to charge without wireless charger.
> 4 votes

---
Tags: internal-storage, google-pixel, google-pixel-3
---