text:
Does Android allow incoming connections?
Some posts explain, that Android OS has all ports open by default with a policy to accept all incoming connections. But od a "NetGuard" Android project they mention "Android does not allow incoming connections".
So, how is it and what is the default configuration of a netfilter in Android OS? Thank you in advance!

If open ports are accessible depends on the used interface. Wifi is usually not a problem, unless the phone is acting as mobile hotspot. The cellular interface should theoretically also work but 99.99999% of all users don't have a plan with a public IP so nobody really knows...

Yes. The default policy for INPUT chain is ACCEPT. As of Android 13, the Net Daemon - which is responsible for managing firewall rules - nowhere calls iptables --policy, so leaving it to default. But it doesn't make much difference when you don't have any listening ports on public interfaces and you are behind (CG)NAT (which is usually the case as Robert mentioned).

Thank you for your replies! I don't see any issues when using cellular network. However it sound to me as a protentional vulnerability when using WLAN - it is basically the same situation as with ordinary PC (https://www.techrepublic.com/article/hundreds-of-popular-android-apps-have-open-ports-making-them-prime-targets-for-hacking/) there may be apps listening and vulnerable.
What confuses me is the quotation from NetGuard – my guess is, that Android maybe acts differently to the incoming connections when using VPN? (even when it’s not tunneling anywhere like in the NetGuard implementation)

In my opinion the chance of encountering an app that opens a port is lower than on PC. On a PC program any program can open a port and keep it open at any time. On Android this is only possible while the app is in foreground. For keeping a port open and provide a service on it it is a bit more difficult as to my knowledge you have to implement a background service. Thus the number of apps that open up ports (without user consent) is not very high.

All right, I've contacted the author of NetGuard and he states, that Android rejects incoming connections by default (and it has nothing to do with VPN). @Irfan Latif Are you sure about the ACCEPT policy? Robert is probably right about the probabalities, but considering the article mentioned above I am still interested in knowing how does it work.

@M_Ryan I've an almost always-active SSH server running on one of my phones which I use for CLI access and file sharing with my PC. And I always run FTP servers on my phones for data sharing with each other. I never changed firewall policy, which is utterly out of questions on un-rooted phones. I already gave you the link to the source code. You can check that iptables --policy is called nowhere. Furthermore you can uninstall all VPN / firewall apps, restart the phone and check if the policy is set to DROP, or if the incoming connections are ACCEPTed or not.

But note that I'm talking about stock Android. Any OEM or custom ROM developer may change the default policy.


text:
Prevent AdColony advertisements automatically opening the playstore?
Basically, AdColony is an advertising provider for games, however they use predatory tactics, one of these being an automatic redirect to the playstore the second the ad finishes without any clicking or interaction.
Is there a way I could stop getting these playstore opens?

You can try a local VPN based ad blocker (VPN client and server are on the same phone) like https://blokada.org

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
I need help finding Lucky Patcher's mysterious files
I am using a Samsung A10s with 32gb of storage, running Android 11 and One UI Core 3.1.
I was fiddling around trying to install a ~700mb game through LP. It says storage not sufficient even though i have  2,6gb of storage left, so i decided to open it through Zarchiver.
My mistake was not realizing it was an .APKS file, not .APK and opening it straight from the data folder (Android/data/LP directory). I clicked install. Realizing i have made a mistake, i closed Zarchiver.
Guess what? I lost 700mb worth of space! I tried looking everywhere for the files, even tried deleting the system trash files but it didn't work. Now i have 1,8gb. Haven't gave up, i tried to reinstall via LP.
This time, it showed an error message "Failed to allocate 7-something (file size) because only 6-something (storage) allocatable". I lost even more space. Now i only have around 1.2gb.
In total, i lost 1,4gb and i couldn't find the culprit.
I need help finding the files because storage is very important for me. Please.

Try downloading the app SD Maid, the free version should work for you. It can find file duplicates and delete them. This is the only way I know of, so you are gonna need space to download it. It is pretty lightweight though.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Pixel 6a cellular connectivity problems - calls to some phone models (older) won't go through
I just bought a new Google Pixel 6a (recently priced lower than pixel 5a) and after a few days of use I am starting to wonder if there is a fundamental system (either hardware or firmware) flaw with Pixel 6a: I am NOT able to connect to certain phones. The symptom is very similar to "poor network connectivity" but it's only on my Pixle 6a. When I try calling my room-mate who has a rather older Samsung model, majority of the time it goes to voicemail without connecting at all while he is in the house and is able to receive calls from all other phones (including my old Samsung s7). Same in either direction. Other phones we use (all Samsung) and my other room-mate's pixel 5a do not have this problem. We've carefully verified it, very clear and repeatable problem verified on two older separate older Samsung model phones. Both were mostly unreachable from my Pixel 6a going straight to voicemail or silence and call dropping all together. We've troubleshooted with T-mobile and tried switching the phone preference from 5G to LTE etc. on the phone preferences, no difference. I have been looking around but don't see anything specific on this. Anyone else have cellular wireless connectivity issues with Pixel 6a?

I have not experienced this on my 6a and I got it launch day... I use Verizon (US Mobile Warp 5G) and have never had an issue like you describe and I do a lot of voice calls as it doubles as my work phone.

Thank you @acejavelin - the specific problem we are experiencing is pixel 6a's ability to call older phones - We have a number of Samsung s5 's for example. You can try calling an s5 and see how it goes - we can send text but no voice connection.


text:
When I connect my phone to my laptop using USB connection, I can't get either of them to recognize the other?
I've tried turning on usb debugging and updating usb drivers from device manager and nothing happened. I've also tried connecting the phone to an Acer Chromebook 15 that I own and still can't get the phone or the laptop to recognize other. Only the charging worked in both cases.
There isn't any notification in the notification areas.
The phone in question is the Pixel 4a with Android 13 and the laptop is the Lenovo Ideapad 3 15ALC6 with Windows 11.

You might want to try different USB cables: Google Pixel 4 doesn't work with some USB cables (Update: Google responds)

I've tried connecting it with the cable that comes in the box and the only thing that happens is that the phone starts to charge.

For Windows, you possibly need to install Google USB driver. However, Chrome OS shouldn't require additional configuration, so the cable might really be the culprit, even if it's the one from the box.

I've tried with a Samsung Galaxy A12 from a friend and the Samsung recognized it as soon as I plugged it in and show me popup about data and file transfer access on both the Acer and the Lenovo.


text:
Charging problem in lineageOS 17.1 galaxy J7 elte
I have installed lineageOS 17.1 on galaxy J7 elte. Charging speed is very low. First time I plugged the charger, in 87% charging stoped and second time in 80%. It was showing charging symbol in the status bar but charging was stoped. How can I repair this problem?
NOTE: I have rooted lineage with magisk.

It seems that you use an unofficial LineageOS version as Galaxy J7 is not in the official list of supported devices. As always with third party developer custom ROMs problems may occur. Best contact the author of the used custom ROM.

I downloaded it from http://lineageosroms.com/j7elte. Is not it official?

The official download site from LineageOS is https://download.lineageos.org LineageOS has already dropped support of most devices of your age so I don't know who is operating the site you got your ROM from (only a twitter contact is mentioned which is a bit shady).

So I can't find the developer. I ask others to help me. Thank you


text:
Android alarm for calendar events?
Is there any kind of app that creates alarm-clock style alarms for calendar events?
I use the alarm feature in the built-in clock Android app all the time to notify myself of repeating events.
I also use Google Calendar to remind myself of repeating events.
However, for some bizarre reason, Google has refused to implement any link between the two, nor create any usable kind of alarm feature for their calendar. They have an email and popup notification, but these are worthless. Unless you check your email every 5 minutes, or have the calendar web app open in a desktop browser 24/7, you won't see either notification.
This means I miss a lot of calendar events.
I can't be the only person who has this problem.
How do you link the calendar to the alarm clock so if you have an import event scheduled a couple weeks out, you can say, "blare an audible alarm on my phone 10 minutes before this so I don't forget about it"?

I use Business Calendar app.  I use the paid-up version but you can use the free version.

It will link to many Google accounts and bring all the calendar entries into one view, where you can choose to view them together or separately.
It's a two-way link, so any appointments made on it will go to Google.
It will also dynamically notify you at the appropriate time (appointment time - reminder time).
It has numerous settings for the display.
It has a widget as well (I use it for a permanent display on my second home page).

App
This is the multi-account view.

I am not associated with it in any way.


text:
What type of data is excluded from the "media only" file permission in Android 12?
Starting from Android 11, there are 2 levels of file access permission, i.e., "files, media, and everything" permission and "media only" permission.
What is the difference between the two, and what is excluded from the "media only" permission?

Dupe of Difference between "manage all files" and "access media only"? (but not yet answered properly).

@AndrewT. I have already seen that post, but it doesn't have a good answer, that's why I posted another question

Understood, that's why this hasn't been closed as a duplicate yet. It's just no one has posted an answer while the info/references/sources are already there in the comments.

Let's try to answer this question, may be with the combined experience of the community we can verify if the following is correct:
According to media store documentation there are four different media categories:

Images, including photographs and screenshots, which are stored in the DCIM/ and Pictures/ directories. The system adds these files to the MediaStore.Images table.
Videos, which are stored in the DCIM/, Movies/, and Pictures/ directories.
Audio files, which are stored in the Alarms/, Audiobooks/, Music/, Notifications/, Podcasts/, and Ringtones/ directories. Additionally, the system recognizes audio playlists that are in the Music/ or Movies/ directories, as well as voice recordings that are in the Recordings/ directory.
Downloaded files, which are stored in the Download/ directory.

To my understanding the first three media types should be included in "media only" category. Not sure about the Downloade files type.


text:
Airplane mode as homescreen shortcut?
On Android 12, can I have the Airplane mode button as a homescreen shortcut? I want a way to quickly turn it on, without first swiping down from the top.

It seems to me you can add a file shortcut to your home screen by long pressing the file and then click on the 3 dots to then add shortcut and choose the location for it, namely your home screen.  Then somehow you edit that shortcut to be a toggle for the ADB commands shown in this thread: https://stackoverflow.com/questions/20130530/use-adb-to-check-if-airplane-mode-is-turned-on/26906472#26906472

@Archerbob You can not execute adb commands from within a home screen entry. Toggle Airplane mode is pretty complicated on an unrooted phone. See for example this discussion how to do it using Tasker: https://www.reddit.com/r/tasker/comments/f27e7x/can_tasker_enable_airplane_mode_when_my_wifi_is/

@Robert Can you run ADB commands indirectly then? Have the shortcut run another file?

@Archerbob To my knowledge this is possible in general, but it requires you to connect the phone to a PC and execute same special commands via adb to make it accessible from within an app like Tasker. And you have to do this after every phone reboot.


text:
Where are my files in the Explorer when I move them in the Secure Folder [SAMSUNG]
When I connect my phone (Samsung) to my computer, I see an image in DCIM\Screenshots. When I enable Secure Folder and move the image there, the image disappears in Windows Explorer. When I look at the path where the image is, it still says DCIM\Screenshots but it's not there.
Does anyone know where these files are stored then?
Are they stored somewhere else at all, or are they simply invisible in Explorer?
I already installed ADB and enabled USB debugging on the phone. I think it's the path I'm giving.
I don't know how to specify the drive in the path, or does it not have to be done?
I have already tried these commands:
adb shell ls -la /phone/DCIM/Screenshots
adb shell ls -la user/phone/DCIM/Screenshots
adb shell ls -la "Dieser PC/user/phone/DCIM/Screenshots"
Then I get the error twice that the path is not found.
Is it because the path contains a space?

You simply tried the wrong paths. The paths shown in Explorer starts with a virtual path that only exists when accessing device via MTP so they don't exist via adb. Instead of /sdcard you can try /storage/emulated/0. This should work unless your device is very old or Samsung has modified the system to use a different path.

It works partially now. It says the folder exists but doesn't contain any files. If the folder outside of the Sercre folder contains a file in the folder of the same name, only this will be displayed, but a total of 500 will be counted. Can I also display them in the Serce Folder?


text:
Block 'Explore' feature on Google Docs for users under Google Family Link
I tried to put my boy under my supervision on Google Family Link. I put a limited number of apps on his phone, only what he needs without a browser at all. One of the apps it has is Google Docs. Google Docs on smartphones has an option called 'Explore', where you can search the Internet, and it simply links you to Google and acts as a real browser.
To try: open a sample document > enter edit mode (when the cursor is flashing) > click on the drawing of the three dots > Explore
The whole idea was to block the browser so that it would be impossible to surf the Internet, but Google forgot a small hole in their security.
I haven't even found a way to contact Google themselves, but I think that even if I contact them, no one will really care about me.
Does anyone have an idea how to block it?

Where exactly do you see the explore option in Google Docs? Also, what device are you doing this on?

Open a sample document > enter edit mode (when the cursor is flashing) > click on the drawing of the three dots > Explore. I am using OnePluse 5t & huawei p smart 2019

I tried this on my Pixel 6, and it works, I guess you should have a proxy set up on the browser. You should also be able to see what he is searching and looking at through your Family Link app, so you will still be able to see what sites he goes to.
Hope this helps!

I want to block it completely. I am not interested in following the child

Well, I don't think you will be able to get rid of that. As far as I know, there is no way to not allow that Explorer window that comes up. The one thing I can think of (if they need the app) is you can proxy the browser, or use a proxy that has already been set up.


text:
Samsung Galaxy timeout changes to "parentheses" (or zero)
When I restart my Samsung Galaxy S9, the screen timeout value changes to "()".
Notice that's not a zero; it's two parentheses. That's literally what appears in the settings. However, the phone must think of it as a zero, because the screen goes dark immediately when I'm not touching it (and then I have to enter my password again).
This setting change also happens if I have the Power Mode in "Maximum Power Saving" and I switch to a different Power Mode.  I don't think it happens in Safe Mode.
This started happening a few months ago. It also happened with my old Galaxy S7; my solution was to get the S9. (JK, I had other reasons too.)
EDIT: Yes, Cody: I can set the timeout to any value, but when the phone restarts or comes out of "Maximum Power Saving", the timeout is reset to "()".

Do you use this phone with a work profile linked to your company? If so, it may be a security attempt to defeat non-privileged users. The immediate lock is drastic. If unsure, check for device administrators that are running you may not be familiar with.

Possibly similar case (Samsung Galaxy Note 2, 2013): Android Central Forum - Screen timeout disables itself?

@AndrewT. That's not a similar case -- it's the same case!  It doesn't explain the issue, but I guess Stay Awake might be a good workaround.

@wbogacz I did have a work profile. I went to Settings --> Apps --> Special Access. Under "Device Admin Apps", nothing was active. I thought it might be under "Optimize battery usage", but there are hundreds of system-related apps; turning off "Work Profile" and "Work Setup" didn't work and I don't know where to start with all the others. Will try "Change system Settings" next

Following @wbogacz's lead, I went to Settings --> Apps --> Special Access --> Change system Settings. I discovered that Avast Battery Saver had control over the timeout, so I revoked that privilege. (I think I could also have done it in the Avast app itself.)
That solved it.

So, when you have set the timeout to be a longer length of time you see this issue? I assume you have tried rebooting your phone and trying software updates. If all else fails, you could try resetting the phone.

Let's try to diagnose and correct the problem short of nuking it right away, eh?

Yes, @cody-b, that's what happen, and I've rebooted it many times. The software is up to date.


text:
Google Play: "Developer has responded to your review" notification but no response
These questions

Where can I see if a developer responded to my comment on the Google Play?
Google Play allows publishers to respond to users' comments?

Are very old, but they both suggest that I would get an email when a developer responds.
I have not received an email, but I did get a notification on my phone "Developer has responded to your review". I clicked the notification and got taken through to the app that I recently reviewed.
I can see my review, but no developer response.
So where has the developer response gone?! Is there a way I can see it?

Possibly related: Where in the Play Store can I see reaction from an app developer (2022)

Yes that looks like the same issue, though their issue was solved by updating their phone to Android 11. I'm already on Android 11 (as well as upgrading an operating system not being a satisfactory answer!)

This is insanely frustrating. If you "view all reviews" and scroll until you see yours, you will see the developer response. But sometimes that takes forever or you just don't find yours.  Why the $#@& is the response not visible under "your review" on the main page... The one the notification takes you to?!

@THEJOATMON I have noticed that as well.  I consider Google's Play Store to be a bug-filled disaster with horrible UX.  I recommend using F-Droid whenever you can, and communicate directly with open-source developers in their public code repositories.

So this happened to me last night and when I clicked the Android notification I was actually taken directly to my review and could see the developer's response. I'm not sure if this was a fluke or if they changed something. Will see if it happens again.


text:
Debug receiving intents
I have a Mi Band smart watch and I'm using the Notify for Mi Band app that adds a lot of great extra functionality.
One thing that I haven't been able to get working is triggering Tasker intents when I press buttons on the watch. I can confirm that the button presses are being detected (the app shows a message for debugging purposes).
There is a setting that should cause the app to fire a Tasker intent on button press. I've enabled this setting and followed their documentation on receiving this intents, but the task is never called. Is there any way I can see all the intents Tasker is receiving for debugging purposes?

Are you interested in this: https://tasker.joaoapps.com/userguide/en/activity_runlog.html ?

@Firelord Unfortunately that doesn't help since my task doesn't run. I want to see what intents are received so I can check that I have the intent names correct.


text:
Can a school wifi certificate track me at home?
At my school, when logging into wifi for the first time, we enter our ID & password into a normal wifi login page, then we download a certificate. I cannot confirm if the certificate changes depending on which student logs in. After downloading the certificate, we must install it as a Trusted Root CA Certificate. My Samsung phone says that "your network may be monitored" after installing this certificate.
My main question is if this can:

Allow the school to see what websites i visit
Cause security vulnerabilities
Slow down my web browsing
Route my internet traffic through a middle man

Thanks everyone for the help

I think there is a pretty big disconnect between what is theoretically possible and what a school is likely to be doing. If you are that worried about it then something is obviously wrong

@James Im not worried, I am just curious. In the day and age where some schools (in the news some time ago) gave punishments to students for actions students did at home using the camera and microphone of a school-issued laptop, I am curious just how much privacy my school could take from me, in theory. I am in a very good school district and am not saying this is likely, but I want to know what is possible.

@James Also, Ive heard that such certs can open up issues with MITM attacks and slow down traffic. If these are true, these are inherent flaws with the system, not an action the school is deliberately taking. If such issues are true, then I'll consider using my limited mobile data.

It is unclear what the school says the certificate is for. It may be for WPA-Enterprise Wi-Fi authentication. It may also be for HTTPS interception. Please expand on that. Surely there’s some information on why you’re supposed to install the certificate…?
I will provide an answer about installing a CA certificate in the trusted root CA store. Going by the fact that it goes into the trusted root CA store, the certificate would not be unique per student.

There are two environments to consider. Your school network and other networks.
When you are connected to the school network, your school

can intercept your connections, even when encrypted (see also last bullet)
could accidentally leak the certificate’s private key
can slow your web browsing either way
can route your traffic any way they like, middle man or otherwise

Routing is unrelated to any certificates. Certificates are for trust. Having a CA certificate provided by the MITM installed makes security warnings go away, because you now trust the MITM.
When not connected to the school network

the school cannot see where you browse
the CA makes you more vulnerable (see above)
browsing speed is unaffected
the school cannot redirect or intercept your traffic

If you do not trust the school to properly manage this security-critical data, you should not trust their CA. This will probably make using their Wi-Fi impossible.

Considering that nearly all Android apps don't trust user CAs (each app has to explicitly trust user CAs) the likeliest choice is the WPA enterprise authentication.

It is for HTTPS. You can use the wifi without the certificate, but HTTPS will not work without thr certificate. A common issue among less tech-oriented students who do not install the certificate correctly is that on HTTPS websites, the "this website has a bad certificate” error comes up in the broswer, and it also can block external images from loading on webpages.

The school certificate is probably to authenticate the connection. The school can't do anything other than that unless it has been enrolled in the organization.

Or this could be just a web certification. Most schools require their devices to have a certificate located in the computers internal storage so the network can verify that its a trusted device and knows it's allowed to connect.


text:
How would you verify Android battery stats apps?
This is more a question about diagnosing battery and battery hardware, than it is specifically about Android. If there is a better StackExchange site for this question to belong to, please tell me, I will repost there instead.
There are apps like Battery Guru and Kaspersky Battery Life which are very effective at taking battery sensor data and breaking it down for you, and explaining the health of the battery to you.
I want to know how do I verify the veracity of the information that Battery Guru is reporting myself. I understand that I could write an Android app that does what Battery Guru does. I am assuming that these apps take the information that standard Android APIs provide to the user and present it to them and do some math on that data provided by Android.
I am assuming these apps are basically just reading BatteryManager and presenting it to the user meaningfully. Is there any other way besides writing my own app to verify that the information provided is accurate? Is there anything like a hardware device that can be used to test the battery directly (implying that I would be opening up the device)?

Get hardware info directly from kernel through sys interface: /sys/class/power_supply/battery/.


text:
How to secure files in SD card by using adoptable storage?
I asked this question before, and this is a follow-up.
I am trying to encrypt my SD card for data security (I don't want some random guy to be able to access my photos/documents/downloads by just plugging the SD card into another device in case my phone is lost or stolen). This is a frustrating missing feature in Android. The only way I could find to achieve this is by using SD card as internal storage.
I don't mind if SD card breaks and data is lost because I keep backups. Also I don't mind a bit slower phone as long as the data is encrypted. And also, it's fine if the SD card storage is merged with the internal storage and it acts like one single storage.
In this it says-

whatever real internal storage you had will become invisible to both
mtp and normal (non-root) file management apps, and even then, it can
only be accessed with considerable difficulty as a mounted storage.

I don't fully understand this. Does this mean I cannot normally browse my files?
So in summary, I am trying to have an encrypted SD card and be able to browse the files and use them in different apps. Is it possible? If so, how?
Thanks.

assuming phone comes with 64 GB total, 45 GB are reserved for app data + media and you have 23 GB free disk space - in the moment of redirecting media to external MicroSD Card via adoptable-storage, these 23 GB become unavailable to you (wasted disk space)

@alecxs Sorry for the long delay, somehow your comment missed my radar. Is it something like this example: phone storage currently: 32 GB total, 10 GB free; after adding new 64 GB SD card as adoptable: 96 (32+64) GB total, 64 GB free (this 64 GB is from the SD card, and the old 10 GB is gone)?


text:
adb install-multiple: Update to package <pkg> doesn't support multi arch
I'm attempting to install Chrome 100.0.4896.127-489612710 (arm-v7a, Android 6.0+) on a Pixel 3 running Android 9.  It's a .apkm file so I unzipped it and ran
adb install-multiple -r -d *.apk

However, I got the error message

Failure: [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Update to package com.android.chrome doesn't support multi arch]

The relevant lines from logcat are
W PackageParser: Unknown element under <manifest>: uses-sdk at /data/app/vmdl286680564.tmp.split_extra_icu.apk Binary XML file line #3
W PackageParser: Unknown element under <manifest>: module at /data/app/vmdl286680564.tmp.split_extra_icu.apk Binary XML file line #5
W PackageParser: Update to package com.android.chrome doesn't support multi-arch

Seems like adb tries to install the APK files as update even if you specified -r (replace) argument. Or this happens because Chrome is installed as system app and thus if you try to install it, it is always an update installation. The only apps I know that could be named "multi-arch" are non-split APK files (single APK file installable via adb install).

I wonder if -p (partial application install) will work in this case? Otherwise, you might need to check Chrome's version code to see the installed variant (the last 2 digits).

The currently installed version is 71.0.5378.99.  The versionCode is 357809952.

I think it's 71.0.3578.99 and 357809952 refers to (arm64-v8a + armeabi-v7a, Android 7.0+, nodpi) variant, the one with native 64-bit libs. Perhaps try the corresponding variant, 489612723? Though, the original is a single APK, not a bundle...

@AndrewT., that successfully installed.  That's strange because getprop ro.product.cpu.abilist shows arm64-v8a,armeabi-v7a,armeabi.

Well, I guess that solves the issue, but I'm still not sure 100% about the cause, so anyone else is still free to investigate further and post an answer.

apkm is just a split apk file distributed by apkmirror
apkpure has an equivalent called xapk
try to install using this command
adb install-multiple base.apk split_extra_icu.apk split_config.en.apk

As you can see from the question, that’s what I did.


text:
Check if developer options were active before?
Is there a reliable way to figure out when developer options were turned on the first time or ever?
It'd be fine to use adb for that task, if I could see if developer options were active previously. Getting a precise timestamp would be even better.

I don't think this information is preserved anywhere. When developer options button is toggled all that happens is that a value in settings_global.xml file is toggled ( 0 or 1), and then an intent is broadcasted. Intents are not saved. And the above file gets overwritten by other changes in Settings app, so its last modified timestamp is not reliable either.

A faint hope. You could look into /data/misc/adb/adb_temp_keys.xml. If contains log of all the PCs authorized to issue adb shell commands on your phone. It has lastConnection "epoch" timestamp. If adb was earlier enabled in the device and a different PC was used to issue adb commands, then this might give you something.


text:
Can't Send Texts to Some Phones unless Internet Turned on on my Pixel 5
I have a Google Pixel 5 phone, am running Android 13, and use Verizon as my carrier. I'm trying to use the internet less so I usually keep my internet off, including turning off my data and wifi connections.
I've noticed that when my internet is turned off I can't send texts to some people until I turn my internet back on. The send text message button on my phone is grayed out when trying to text some people until I turn the internet back on. I can send text messages to some people with the internet turned off, including to some iPhone users.
Is this issue most likely caused by trying to send texts to a person's iPhone and they have iMessage turned on?
I'm aware that if an iPhone user turns on iMessage then they must keep their internet connection on or they can't send texts from their phone.

Which messaging app are you using?

Andrew T. I'm using the default Android Text messaging app called "Messages" on my phone.

The internet of most phones usually will include cell connections, too. If your trying to email other users on Iphone, it uses a standalone service specific to apple and its cell network thus not requiring verizon's cell service hece apples own cell service can process the request at much higher speeds. But if whom you are sending to isn't on apple's own network or icloud, It cant use the apple servers because they are not built to communicate with other clients directly and has to use another server which requires a cell connection / wifi to connect with those client servers

I meant to say that I turn 2 things off on my cell phone most of the time:

Mobile data.
Wi-fi.

Sorry for not being clear about that.

If this is the case, simply DONT turn off mobile data if you want to text non-iphone users not over wifi


text:
No dating social apps in the Play Store?
I installed Android Studio for testing purposes and checked the Nexus 5 and Nexus 5X device images for the emulator. One thing I've noticed is that there are no dating social apps available in the Play Store like Badoo, Tinder, OkCupid, etc. you get the idea.
Is this because of some settings that I haven't configured or are these apps blocked for some reason?

Never mind, it was an issue with the Google account I used in the emulator. It didn't have permissions to 18+ content.


text:
Are there any microphone access logs?
Is there a way to figure out when a microphone was active in the past and what app used it?
The requested timespan is 2 weeks and the device presumably was never in USB debugging. The device runs Android Pie (9).
My first idea was to extract logcat logs, but those are deleted once the device has been restarted, except for errors which are hold on for longer.
I'm currently researching with my personal device (Android 12). I can read my detailed logcat since the beginning of the device session (incl. all errors of this year) using:
adb logcat -d -T '2022-01-01 00:00:00.000'

But I cannot spot any entries that indicate my voice messages in Telegram, for instance. What do I have to look for? Unfortunately, this method is useless if the device was restarted recently, since I only can retrieve errors this way.
I can also print the last 50 events recorded by the RecordActivityMonitor using:
adb shell dumpsys audio

I probably need a few hundred times as many entries to retrieve the entire last 2 weeks, but I suspect that a restart would reset this log as well.

You can get a timestamp of when an app last used the microphone. History is stored in /data/system/appops/history/. Get it using appops get <PKG> RECORD_AUDIO or my app PMX (see this comment).

@IrfanLatif Yes, I tested appops get org.telegram.messenger.web RECORD_AUDIO and sadly, this gives me only the last data plot, I really need all activity in the past 2 weeks, is there no other way?


text:
Can an Android app with device management and microphone permissions spy in background secretly?
As far as I know, since Android 12 an app needs to have a Foreground Service Worker (with an active permanent notification) to run in all the time without being stopped when no activity is in foreground. The guide to background work also states that the only real alternative is to use scheduled tasks. My question is, can those tasks initiate microphone recording and most importantly, will this be visualized in the notification bar so the user would spot the recording?
I know that it is possible to achieve the same level of spying with permanent location tracking permissions, but I'm pretty sure nothing of the kind exists for microphone permission. How strict is Android in this regard? Will an app stop recording as soon as no Activity is in the foreground? Can the app bypass this limitation if it has full device management permissions?
My current research tells me that background recording is impossible since Android 9 and a visual indicator in the right-top corner is shown when any recording is active since Android 12. I would love to get more insight in the specifics.
In this regard, I do not want to discuss the possibility of zero day exploits, but de-facto working methods that spy-ware can make use of in the Android threat model.


text:
Draw security pattern using usb c to hub with hdmi
Not sure if it's a note 10 issue or an android issue. My note 10 screen no longer works. I connect it to usb c to usb hub with hdmi. The monitor now shows clock and lock. The time is correct. I press the buttons on my wireless mouse and move it around but no lock screen pattern.
With my note 9 I pressed the page up button and was able to see home screen. Samsung says the phone needs to confirm on the screen. Note 9 did not do that. Another rep say its a power issue again the time is correct. They don't have a correct answer for me. Another says older phones showed lock pattern on monitor and new ones don't.
I seen youtube videos of people accessing the lock screen on monitor. They just draw the pattern using mouse.
How do I move from the clock and lock icon to the lock pattern draw screen?

Pattern lock is always a bad choice when the screen breaks. Password and PIN can be entered blindly using USB keyboard. The newer phones don't show pattern on external monitors could be a security measure to avoid automated attacks on the used pattern. If you still see the mouse cursor you may try to draw the pattern blindly. Otherwise accessing the phone will get complicated.

@Robert will look for the mouse arrow but don't see it. My note 9 by passes by pressing mouse back button but note 10 does nothing. Could it be the wirless mouse? What can I do to get to pattern screen?


text:
Firefox for Android refuses loading any website
I wanted to give Firefox for Android a try (I'm a long-time Chrome user), but after installing it from the Play Store, I discovered it refuses to load any website, always showing this security warning that cannot be ignored:

This happens on all sites and only on Firefox for Android, the same sites load correctly in Chrome and also load correctly in Firefox running on a Windows computer that is on the same network as my Android device.
Any clues as to why this is happening? I'm running Firefox 105.1.0 on Android 12.

Check the system date. If it is wrong HTTPS connections will fail because the used certificate is not yet or no longer valid.

AFAIK, Firefox uses its own certificate store, not the Android native certificate store. What happens if you try setting security.enterprise_roots.enabled to true on about:config?

@Robert: thanks but date was ok, problem was a different one, check my answer for details

@AndrewT. Thanks for the comment, it pointed me in the right direction to solve the issue, see my answer for details

@Master_T So your device is rooted (-> not mentioned in question)? because otherwise you could not have installed a root CA certificate.

@Robert reading the AdGuard's official documentation, looks like root is not needed.

@AndrewT. That description can only work for Chrome. For apps this can not work as they don't accept user installed certificates. May be AdGuard only applies HTTPS interception to Chrome and other white-listed apps.

@Robert: no it's not rooted, you can manually install a ca certificate on any modern operating system, android included. Also, apps can use them just fine, it's just that in Firefox they're excluded by default, but if you check the link in my answer you will see how to enable if via the advanced options menu

@Master_T Yes you can install certificates but Google has changed the behavior starting with Android 6. All apps that target this version or newer have to explicitly opt-in user certs in their config. Otherwise such certificates are treated by the standard Android functions as untrusted (like the cert is not installed).

@Robert: indeed I needed to opt in with Firefox. What I don't know is why it's a hidden setting in the debug menu, but whatever, it works and that's the important thing

Have you tried Pale Moon Web Browser, it's based on Firefox source code but is not affiliated with Mozilla, that is my limited understanding of it.  The only time I've seen that sort of error your getting is for using an outdated version of a browser

After doing more digging, it seems the problem was my adblocker (AdGuard). It uses a locally installed CA certificate in order to filter HTTPS traffic. By default Firefox ignores local CA certificates, it has its own list of trusted CAs. Quite dumb in my opinion, but luckily local CA certificates can be enabled by following this guide:
https://kb.adguard.com/en/android/solving-problems/firefox-certificates

Instead of using a VPN app you can avoid issues like this by setting your private DNS to their server. https://adguard-dns.io/en/public-dns.html

@Tanath: that is not nearly as effective though, a lot more ads get through if you only use DNS filtering...

It's DNS filtering either way, and my experience has barely any ads getting through. It's even the same provider so the filters should be the same.


text:
My phone was stolen and ended up in a prison,
My cell phone was stolen ended up in a prison, I have my email for Gmail, but they have changed my password and my security questions, I had to change my phone number because when I reported it stolen to my phone carrier and had it transferred to another phone they kept getting back in because they knew my phone number so I just had to change the phone number. I was wondering if I have the IMEI number for the phone can I access all my information?

No the IMEI does not allow you to access anything as a end user. There are some services that might allow to get the position of the phone (ab)using the SS7 network and some malicious actors may be able to redirect SMS messages also using SS7 but that all has nothing to do with Andorid.

Next time protect your phone using a 6 digit PIN, and also make sure the used passwords for Google and other services can not be guessed.


text:
Why is the camera / photo quality of 2021 Moto g stylus 5g is worse than my 2016 samsung s7?
I just upgraded my Samsung s7 to moto g stylus 5g (2021). Moto g stylus 5g 2021 has 4 camera's advertising a 48MP camera - but to my jaw dropping surprise the quality of pictures coming out of this 2021 camera is nearly equivalent, on the worse side than my 2016 S7? When I zoom into the pictures (I have made sure conditions are normalized and equivalent for taking the photos for each camera) the s7 images for the same 12MP resolution look sharper and clearer hands down. What good is the additional 3 cameras on Moto g? Where is the rest of the power of this 48MP camera (vs s7's lone 12MP sensor)? What could the reason be for this surprising lack of improvement (more like digression) from the 2016 technology with far fewer sensors? I am completely baffled. Am I missing something fundamental about perhaps limitations posed by the Android OS on the camera systems (I have tried every conceivable camera setting, so that's not an issue)? Any insight would be greatly appreciated.

Kind of related: How does software affect photo quality on different Android devices even though they have the same camera sensor?, Does camera clarity vary with to the app?. Hardware is not the only thing that matters. Also the comment discussion on Can any Google Pixel smartphones take 12MP or better photos in 16:9 aspect ratio?.

May be because your new phone is much cheaper than your old phone? And having multiple cameras does not imply that one of them is making great pictures. Especially on low light cheap cameras tend to make low quality pictures.

Thanks @Robert - I can understand the "cheaper" vs "more expensive" argument to some extent.  Moto g stylus 5G maybe  cheaper, but not in the hello kitty kids phone category either. Considering the fast evolving technology space like phones and cameras and number of years in between these phones,  I feel like the time gradient (2016 vs 2021)  should've easily beaten the price gradient. Something still doesn't quite  feel right that Moto g Stylus 5G class phone claiming a 48MP camera in 2021 is unable to produce as good a picture as the 2016 s7's 12MP camera.


text:
Access Phone with broken screen
I've recently broken the screen of my Samsung Galaxy S7 (model number: SM-G390F). USB debugging should be enabled, however MTP seems to be disabled as data cables (work for file transfer with other phones but not for this one) are able to charge it (vibrates when plugged in), but neither the file explorer nor the adb list of devices features it.
Are there any way to force the recognition, to get around it not being detected, to mirror the screen or use a different output, to check if the touch is still active or both screen and touch are broken? To figure out where one would need to do blind presses to enable the necessary permissions?
So far I've tested several cables and are in possession of data micro-USB cables for data transfer, I tried to access it via adb and failed, I tried to do this power, home, vol up or down, but I don't see a result with screen broken. I've read several post on this topic but they are either outdated or weren't successful. Are there any options that come to mind on how to access and recover the data on the phone?
Edit: The only response left from the screen is that the pseudobuttons left and right from the home button light up when I press the home or power button. Also the light in the top left is occassionally blue or red (when charging). Attempts to take screenshots on an sd card (unfortunately only inserted after the screen stopped working) have not been successful, though that could just be a me issue and not a phone issue, I'll keep trying later).

Does your phone has a pin/password/pattern? MTP usually does not work when the phone is in locked state (lock screen is shown). So you have to first enter your PIN/password using an USB keyboard. Also adb access may be limited before the first time you have entered lock screen password, because after reboot most user files are still encrypted and thus not accessible.

Good point. Since I removed the sim card there should only be a swiping pattern left to guard it (I still know that pattern). It might be difficult but possible to apply that. Though so far I haven't gotten positive or negative feedback from trying that. Also while detecting the cable and loading is possible when plugged in and never touching it, the cable was never particularly well adjusted in the socket, switched to induction loading because of that, so might take a few attempts for that as well. So far I wasn't particularly successful with that, but thanks very much for the tip.

I would recommend trying to mirror its screen, for if its only the internal screen then it should have no problem giving an output. Then, if the touch screen still works. Either check settings, Get a new screen, Or try factory reset
See HERE for MicroUSB to HDMI adapter

I checked my local electronics shop and they argued that micro-usb and normal usb have no video out. Then I checked the internet and found that to be bullshit. However there are differences and apparently the phone needs to support Mobile High-Definition Link (MHL) and as far as I can find the Galaxy S7 did no longer support that, thought accounts may vary.

Would it be possible for you to get the model number?

Probably no I don't have the manual ready and I can't access the phones menu. Is there a way to tell from specs or exterior?

Well... I mean you could get a couple of useful bits of information from cracking the phone open (personally i have a phone which just pops off.

The S7 is not among those that can be easily opened without tools and damages (at least not as far as I am aware off) but apparently the model number is listed on the case it seems to be SM-G390F


text:
How to download raw files from Google Play Store using my account?
Suppose I want to download any apps from Google Play Store, but what I want is not "automatically installed" but instead, I will get output files directed to the choosen storage, for instance whether it's the internal storage or using an SD card.
So, basically, I'm expecting to be able to get the raw "apk" file or any other extensions if it's a bundled app that can be installed manually.
Also as I've mentioned in the title i.e. using my account, so if I join the beta system, I will still be able to enjoy the beta feature before anyone else and always receive the latest version and download the "apk" or "apks" file or whatever from Play Store.
Is that possible? Evozi doesn't work, I've tried that.

what the hell is evozi?

Google Play Store has no official interface for downloading apps to storage instead of directly installing it.
Backup app from device
The only workaround is to install an app and then copy the APK files using an app like Amaze File manager (the built-in "App Manager" supports a backup functionality for apps). However this way has one major disadvantage: Modern apps consist of multiple APK files that allows to adapt the app to the device (CPU architecture, display density, language...). The backup will thus only contain the APK files that match your device. Compared to APKs files you can download from various app download pages like apkmirror.com which often contain APK files for all architectures, display density and language.
Direct download from Play Store using third party programs
But there are unofficial tools which simulate an Android phone that has your selected Google account installed. One of those tools is Raccoon4 a Java program which has to be executed on a PC (does not work directly on Android). Registering a certain phone model with your account can work or not (Google is constantly changing something on backend side).
As Raccoon4 uses the configured Google account it might be possible to download even beta apps you are registered for, but I am not sure if anybody has ever tested this. So this will most likely only work if downloading beta software does not require using a special API on backend side.
See also this old question How can I download an APK file from the Play Store?


text:
<scrcpy> adb server version () doesn't match this client ()
I'm getting very contradicting messages trying to run scrcpy wirelessly.
$ adb connect 192.168.1.200:5555
connected to 192.168.1.200:5555
$ adb devices
List of devices attached
192.168.1.200:5555  device

$ scrcpy
scrcpy 1.24 <https://github.com/Genymobile/scrcpy>
adb server version (41) doesn't match this client (39); killing...
* daemon started successfully
ERROR: Could not find any ADB device
ERROR: Server connection failed

$ scrcpy --tcpip
scrcpy 1.24 <https://github.com/Genymobile/scrcpy>
ERROR: Could not find any ADB device
ERROR: Server connection failed

$ adb devices
adb server version (39) doesn't match this client (41); killing...
* daemon started successfully
List of devices attached

At some point I succeeded to connect and run scrcpy. I disconnected and tried to run it again but no luck this time. I can't wrap my head around what's causing this.
$ whereis adb
adb: /usr/bin/adb /usr/share/man/man1/adb.1.gz

$ adb version
Android Debug Bridge version 1.0.41
Version 28.0.2-debian
Installed as /usr/lib/android-sdk/platform-tools/adb

I connected via USB to reenable adb over TCP/IP. Device IP doesn't show up. Previously device ID and IP were listed.
$ scrcpy --tcpip
scrcpy 1.24 <https://github.com/Genymobile/scrcpy>
INFO: Switching device J6AXB763C036R6E to TCP/IP...
ERROR: Device IP not found
ERROR: Server connection failed
$ adb tcpip 5555
adb server version (39) doesn't match this client (41); killing...
* daemon started successfully
restarting in TCP mode port: 5555
$ adb devices
List of devices attached
J6AXB763C036R6E device

I tried again and failed.
$ adb kill-server
$ adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully
$ adb devices
List of devices attached

$ adb connect 192.168.1.200:5555
connected to 192.168.1.200:5555
$ adb devices
List of devices attached
192.168.1.200:5555  device

$ scrcpy
scrcpy 1.24 <https://github.com/Genymobile/scrcpy>
adb server version (41) doesn't match this client (39); killing...
* daemon started successfully
ERROR: Could not find any ADB device
ERROR: Server connection failed

What output do you get by the command /usr/bin/adb --version? -> Please edit your question and add the output there not here in comments.

Some scrcpy distributions include an own adb version. If on your system adb is already present e.g. because you have installed Android SDK or a different tool that includes adb this can result in a adb version conflict as you have noticed.
To resolve this issue you can create the environment variable ADB and in it specify the path to the adb binary you want to use with scrcpy.
I assume on your system the newest adb version is the one installed to /usr/bin/adb so executing
export ADB=/usr/bin/adb

should solve your problem.
Windows users can do the same and add a new environment variable ADB that points to the latest adb.exe that should be used.

adb wasn't installed with scrcpy. Nevertheless, I've done what you suggested. Here is what happened.

$ export ADB=/usr/bin/adb
$ adb connect 192.168.1.200:5555
adb server version (39) doesn't match this client (41); killing...

daemon started successfully
connected to 192.168.1.200:5555

$ scrcpy
scrcpy 1.24 https://github.com/Genymobile/scrcpy
exec: No such file or directory
ERROR: Command not found: [/usr/bin/adb], [start-server]
ERROR: (make 'adb' accessible from your PATH or define its fullpath in the ADB environment variable)
INFO: You may install 'adb' by "apt install adb"
ERROR: Could not execute "adb start-server"
ERROR: Could not start adb daemon
ERROR: Server connection failed

@Pavel But you have multiple adb versions present on your system. You should find them and only keep one adb version (usually the latest).

I can't find multiple versions. Only one.

I purged adb and now > $ adb connect 192.168.1.200:5555
bash: /usr/bin/adb: No such file or directory

@Pavel adb server version (41) doesn't match this client (39); shows that you have one adb of version 41 and one version 39 installed. Find it e.g. using find / -name adb 2> /dev/null. And in your case I would keep the version installed via OS package manager.

/usr/bin/adb
/usr/share/lintian/overrides/adb
/usr/share/doc/adb
/usr/share/bash-completion/completions/adb
/usr/lib/android-sdk/platform-tools/adb
/snap/scrcpy/386/usr/bin/adb
/snap/scrcpy/386/usr/lib/android-sdk/platform-tools/adb
/snap/scrcpy/386/usr/share/bash-completion/completions/adb
/snap/scrcpy/386/usr/share/doc/adb
/snap/scrcpy/386/usr/share/lintian/overrides/adb```

Your scrcpy distribution contained adb as I told you: /snap/scrcpy/386/usr/bin/adb The environment variable may not work because of snap. Make sure you set the environment variable so that it is applied also inside a snap.

Robert, thank you very much! I reinstalled scrcpy, adb and android-sdk-platform-tools-common. It works now.

For future readers who might have this problem and are using Ubuntu OS, do as @Robert said. You just have to:

Remove the one in the OS: apt remove adb
Then get the path of your adb: which adb
For me, it was /home/bilal/Android/Sdk/platform-tools/adb because I had Android Studio installed
Then export ADB=/home/bilal/Android/Sdk/platform-tools/adb
And voila, scrcpy should work

don't have enough reputation to upvote @Robert answer, incase your are wondering why i didn't


text:
What causes HARDWARE_FEEDBACK usage of vibration?
Not infrequently I'll experience vibrations seemingly without cause on my Android 13 Pixel 6 Plus. After a particularly busy period, I had dumpsys vibration_manager tell me what had been happening; I excerpt the most relevant portion below. Something seems to be repeatedly triggering, for about 200Ms each, vibrations for hardware feedback. What does the usage HARDWARE_FEEDBACK describe? How can I track that description further back to the original cause (and hopefully stop it).

  Previous vibrations for usage HARDWARE_FEEDBACK:
    startTime: 09-25 08:45:43.540, endTime: 09-25 08:45:43.742, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:45:46.269, endTime: 09-25 08:45:46.470, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:45:47.900, endTime: 09-25 08:45:48.101, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:02.346, endTime: 09-25 08:46:02.547, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:03.918, endTime: 09-25 08:46:04.118, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:05.221, endTime: 09-25 08:46:05.422, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:06.199, endTime: 09-25 08:46:06.400, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:07.245, endTime: 09-25 08:46:07.445, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:08.254, endTime: 09-25 08:46:08.455, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:09.263, endTime: 09-25 08:46:09.464, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:10.559, endTime: 09-25 08:46:10.760, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:11.508, endTime: 09-25 08:46:11.709, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:12.674, endTime: 09-25 08:46:12.875, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:13.731, endTime: 09-25 08:46:13.932, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:14.875, endTime: 09-25 08:46:15.076, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:16.051, endTime: 09-25 08:46:16.253, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:17.036, endTime: 09-25 08:46:17.238, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:18.181, endTime: 09-25 08:46:18.381, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:19.473, endTime: 09-25 08:46:19.674, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:20.492, endTime: 09-25 08:46:20.693, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:21.470, endTime: 09-25 08:46:21.671, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:22.776, endTime: 09-25 08:46:22.976, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:24.071, endTime: 09-25 08:46:24.272, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:24.994, endTime: 09-25 08:46:25.194, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:26.043, endTime: 09-25 08:46:26.244, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:27.461, endTime: 09-25 08:46:27.661, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:29.043, endTime: 09-25 08:46:29.244, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:30.564, endTime: 09-25 08:46:30.765, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:32.144, endTime: 09-25 08:46:32.345, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:33.742, endTime: 09-25 08:46:33.943, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:34.842, endTime: 09-25 08:46:35.043, durationMs: 202, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:35.872, endTime: 09-25 08:46:36.072, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:36.916, endTime: 09-25 08:46:37.117, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:37.932, endTime: 09-25 08:46:38.132, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:38.966, endTime: 09-25 08:46:39.167, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:40.707, endTime: 09-25 08:46:40.908, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:41.973, endTime: 09-25 08:46:42.174, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:42.982, endTime: 09-25 08:46:43.183, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:44.573, endTime: 09-25 08:46:44.774, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:46.281, endTime: 09-25 08:46:46.482, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:47.642, endTime: 09-25 08:46:47.843, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:48.636, endTime: 09-25 08:46:48.837, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:49.972, endTime: 09-25 08:46:50.172, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:50.968, endTime: 09-25 08:46:51.169, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:52.785, endTime: 09-25 08:46:52.986, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:53.937, endTime: 09-25 08:46:54.138, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:56.573, endTime: 09-25 08:46:56.773, durationMs: 201, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null
    startTime: 09-25 08:46:57.560, endTime: 09-25 08:46:57.761, durationMs: 200, status: finished, effect: Mono{mEffect=Composed{segments=[Step{amplitude=1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, originalEffect: Mono{mEffect=Composed{segments=[Step{amplitude=-1.0, frequencyHz=0.0, duration=200}], repeat=-1}}, scale: 0.00, attrs: VibrationAttributes: Usage=HARDWARE_FEEDBACK Audio Usage= USAGE_UNKNOWN Flags=0, uid: 1027, opPkg: com.android.nfc, reason: null

"What does the usage HARDWARE_FEEDBACK describe?". Hardware keys, navigation keys, fingerprint sensor, NFC sensor, charging started, device wake up etc.

Well, drat. That doesn't narrow it down very much at all. I was hoping for a better lead.

Your log clearly indicates that all vibrations are due to uid: 1027, opPkg: com.android.nfc. So it must be the NFC sensor causing vibrations.

I did not see that's what it was plainly telling me. That is a /great/ lead!

@IrfanLatif, do you want to write that up as the actual solution, so I can credit you for it?


text:
There's only 5.5 gb of stuff on my GalaxyTab A, why is my storage almost full?

I've deleted as much as I can. I only have a handful of apps and two pictures.

In this list the OS and other system-internal partitions are missing. Usually you have two OS partitions as well as some vendor and other internal partitions.

Does this answer your question? How disk space is used on Android device?


text:
issues sending SMS over ADB on a 'screenless' android system
I recently picked up a android based AP/WWAN device - basically one of these. It has a Qualcomm Snapdragon 410 (MSM8916) and android 4.4.4 (as per adb shell getprop ro.product.board and adb shell getprop ro.build.version.release  in the form factor of a bulkier LTE dongle. There is no screen or way to interact with the machine directly. There's a limited web UI which dosen't expose much functionality so anything I need to do is likely over ADB. I'm not intending to reflash it to debian at the moment
I've checked it has the iSMS service as below. There's a full list of supported services here
0       sip: [android.net.sip.ISipService]
1       phone: [com.android.internal.telephony.ITelephony]
2       isms: [com.android.internal.telephony.ISms]
3       iphonesubinfo: [com.android.internal.telephony.IPhoneSubInfo]

I've tried using the instructions here to send an SMS - I've adjusted the service number appropriately and it seems to fail cause of permissions issues
geek@testbox31:~$ adb shell service call isms 2 s16 "com.android.mms" s16 "+55512345" s16 "+55523456" s16 "Test" i32 0 i32 0
Result: Parcel(
  0x00000000: ffffffff 00000062 00700055 00610064 '....b...U.p.d.a.'
  0x00000010: 00690074 0067006e 006d0020 00730065 't.i.n.g. .m.e.s.'
  0x00000020: 00610073 00650067 006f0020 0020006e 's.a.g.e. .o.n. .'
  0x00000030: 00630049 003a0063 004e0020 00690065 'I.c.c.:. .N.e.i.'
  0x00000040: 00680074 00720065 00750020 00650073 't.h.e.r. .u.s.e.'
  0x00000050: 00200072 00300032 00300030 006e0020 'r. .2.0.0.0. .n.'
  0x00000060: 0072006f 00630020 00720075 00650072 'o.r. .c.u.r.r.e.'
  0x00000070: 0074006e 00700020 006f0072 00650063 'n.t. .p.r.o.c.e.'
  0x00000080: 00730073 00680020 00730061 00610020 's.s. .h.a.s. .a.'
  0x00000090: 0064006e 006f0072 00640069 0070002e 'n.d.r.o.i.d...p.'
  0x000000a0: 00720065 0069006d 00730073 006f0069 'e.r.m.i.s.s.i.o.'
  0x000000b0: 002e006e 00450052 00450043 00560049 'n...R.E.C.E.I.V.'
  0x000000c0: 005f0045 004d0053 002e0053 00000000 'E._.S.M.S.......')

I've dumped out the permissions list - it'll be too large and noisy to post here, but you can find it here on pastebin and I can't find the android.permission.RECEIVE_SMS in the list
Is there any additional setup which will allow me to send SMSes from this device?


text:
Floating Icon on Home - What is this called?
My volume keys are dead because of some of my stupid mistakes. So I have downloaded a Volume button assist app, that always displays + and - buttons that simulate the volume button behaviour.

I checked and the app is sharing my activities with some other org and I dont want that.
I thought it can be easily built. I want to know what it is called so that I can read some documentation.

I assume it is not an Activity

My guess is that those buttons are placed on a system overlay window that is shown always on top.

Okay. And how do we create a system overlay window?


text:
How to enable ethernet tethering via shell (android 12) [for a start-up script]
I've read numerous threads on doing it with USB Tethering, and I feel confident I could do that. However, I need it for ethernet. I can use Magisk + shell script at /data/adb/service.d. Any other scripts inserted in there I can do, but I do not know what the command is. Not too many people seem to have this question, as it's a recently-introduced feature of Android 11. Phone is a Pixel 3A with the latest PixelExperience Plus (Android 12). Ethernet tethering device is ASIX-based USB-C w/PD passthrough power. The other end of the ethernet connection goes to the router WAN port.
For USB Tethering:
See: https://stackoverflow.com/questions/65800955/programmatically-enable-usb-tethering-on-android-11 and Activate USB tethering from the command line
For how to make a Shell script at boot:
See: https://stackoverflow.com/questions/7873615/how-to-run-script-at-boot-time

Solution that uses the Automate app: https://android.stackexchange.com/a/228258/379837


text:
How can I dump internal storage of formatted Poco X3 Pro for video and image recovery - or any other available method
I have accidentally formatted my Poco X3 Pro when it was stuck in a bootloop due to power button problem. It was thinking power button was pressed.
I did RMA it, fixed and received the phone today
So what are my options to recover image and video files that were on the internal storage?
Currently phone is locked and I will be able to unlock it in 7 days
Can you list my options currently available and after unlocking and if necessary rooting it
I can wait 7 days before using the phone
I really want to recovery as many as possible images and videos which are my baby daughter photos and videos
By the way I use windows. I have already installed ADB and drivers. ADB works but I can't see the device in the connected devices list
Thank you

By formatted you mean factory reset? If yes then all your data is gone. Your phone as are leased 2021 with Android 11 which means it uses File Based Encryption for all user data. A factory reset erases the used encryption keys which makes all data unrecoverable.

@Robert yes factory reset. Then I shouldn't waste time to recover any?

If the implementation by Poco is correct there should be no chance to recover anything.

you can only recover what is in mi cloud or google cloud

@Robert alecxs ty for replies


text:
Why is it that I get texts when both wifi and cellular data are turned off?
Just wondering if everything is normal on my cell phone... It's an LG and they stopped updating, but I don't remember this behavior before...

The old cellular voice and SMS services have nothing to do with data (internet) services. SMS has been available since the early days of GSM when phones didn't have internet. GSM / 3G networks still support these old services.

You do not need cellular data to send text messages (SMS). Networks use a different method to send and receive text messages. SMS uses GSM and ISDN networks to send text messages. You are limited to 160 characters of text. The limitation reflects the speed of the network.

There is SMS (Short Messaging Service) and MMS (Multimedia Messaging Service). SMS messages are 160 characters or less, meaning 1120 bits or less (each character is 7 bits). MMS messages (pictures or messages longer than 160 characters), however, require data. So even if you have data turned off, that will not effect SMS messaging. To turn that off you'll have to use airplane mode.


text:
How can I block factory reset on a phone?
is there a way to block factory reset on a phone? Like delete the functionality, make it totally impossible. Thanks!
Note: Not something like Factory Reset Protection, something that doesn't let you wipe the phone in the first place.

To deter a  third party from doing factory reset you'd need to do three things: (1) setup protected lock screen so that factory reset cannot be done using Settings app unless your lock screen credentials are known to the party; Additionally, use 2FA on Google account or remove Google account from your device, or at least disable Google Play Services (2) modify kernel image and remove the part which loads recovery or modify it so that so it become non-trivial to do anything with it...

...(3) disable access to low-level interfaces that can factory reset your device -- this is a bit hard. How to disable access to fastboot mode or the mode that is used to flash MTK device? 3. is most problematic to do with no surety at the end.

@Firelord I want to make it that it can't be reset from the settings app.


text:
Which Android virtual device is based on ARM system image?
Android Studio has a feature where you can emulate an Android device -- tablet, phone, etc. -- but it crashes the virtual machine (Ubuntu) I am using.  Depending on which VM platform I am using, it sometimes lets me know what went wrong.  Here are the four options:

Troubleshoot
Unfortunately, your computer does not support hardware accelerated virtualization.
Here are some of your options:
1) Use a physical device for testing
2) Develop on a Windows/OSX computer with an Intel processor that supports VT-x and NX
3) Develop on a Linux computer that supports VT-x or SVM
4) Use an Android Virtual Device based on an ARM system image
(This is 10x slower than hardware accelerated virtualization)

I like the fourth one.  So, which Android virtual device is based on ARM system image?
Original pop-up dialog:

Although not recommended due to performance issues, the Android SDK manager still provides ARM system images for the Android SDK emulator:

Open "Virtual Device Manager"
Click the "Create device" button
On "Select Hardware", select an existing device or create a new one, then click the "Next" button
On "System Image", switch to the "Other Images" tab
Download and select an ARM system image (ABI starting with "arm"), then click the "Next" button
Click the "Finish" button to create a new virtual device with an ARM system image

It is also possible to download the system images directly from the SDK Manager:

Open "SDK Manager" (Appearance & Behavior - System Settings - Android SDK)
Switch to the "SDK Platforms" tab (if it's not selected by default)
Tick the "Show Package Details" checkbox
Under the Android version to be used, expand the details
Tick respective ARM system images to download (e.g. "ARM 64 v8a System Image")
Click the "OK" button


text:
MAC address when discovering networks
When your Android (11) device is in the process of discovering available Wi-Fi networks (e.g. before you actually connect to one of them), is your Android device exposing its MAC address to these hotspots/routers or is this search for networks done without utilization of MAC address? And if MAC is used, is it also randomized like it is by default when connecting to the network or is in this case using real MAC?

Wifi hotspots that are not hidden (SSID broadcast is enabled) can be determined by passive sniffing (nothing is sent so no MAC is used). Only if you have at least one saved hidden WiFi Android actively ping for this network. But nowadays I think Wifi should make use of a randomized MAC in such a case.


text:
Accessibility: controlling Android and typing via eyes
I have seen a video where a person with amyotrophic lateral sclerosis (ALS) could type on a screen using their eyes (the software used eye tracking software).
But there are also many disabled people who are partially paralyzed or have handicaps where their limbs give away to spasms or have stiff or impaired parts (but can use their eyes).
Wouldn't it be nice, if, all of these, could have some arm attached to their wheelchair or bed or chair or table, with Android on it, and could use their eyes to open up YouTube and key in some search videos, scroll, and watch YouTube or other media?
Why doesn't Android offer this accessibility feature?
Thanks.

Android actually does have this feature (I didn't know it either before today). Camera Switches via the Accessibility Suite is widely available since 30 September 2021 as mentioned on this page.
As stated here:

Camera Switches is a new Android accessibility feature that makes it possible to navigate a smartphone using eye movements and facial gestures. It uses the front camera as a switch to set up one action to scan and another to select an item.
Choose a combination of two facial gestures such as looking in a specific direction, smiling, raising your eyebrows or opening your mouth.

Here is how to set it up

Once you have the app, you can start setting up facial gestures. Here’s how:

Go to Settings > Accessibility > Switch Access.
Turn on Switch Access, then tap Allow to grant it permissions.
Go back to Settings and select Camera Switch.
Select Two switches (recommended) to set up two gestures.
On the next screen, choose your scanning mode. Linear scanning moves through items one at a time. Let’s select that one.
Now select two gestures from a list. One to scan and one to select.
Go to Settings > Accessibility > Switch Access > Settings to customize your gestures, set up gestures for global actions and more.
Now you can use gestures to navigate your phone. An icon at the top of your screen lets you know when Camera Switches are active.

There is also Project Activate. As mentioned here:

Project Activate, a new Android application, lets people use these same facial gestures to quickly activate customized actions with a single gesture — like speaking a preset phrase, sending a text, making a phone call or playing audio.

But it is not, for now, available worldwide:

Project Activate is available in the U.S., U.K., Canada, and Australia in English

Sources:
How to control your Android phone with just your eyes
Two new tools that make your phone even more accessible
Camera Switches

Hi, I was able to download Project Activate in Italy. I believe it may now be available worldwide.

However, I don't know whether I can type using camera switches. How can I navigate one letter to the left with eye left movement, one letter to the right with eye right movement, and enter a letter or press the send button by opening my mouth? It would also be nice if a blue circle were displayed on the keyboard as a "cursor", highlighting the current letter or send button, as I navigate on it. This might be a bit slow, but crucial, for who, can only navigate, using the eyes. Perhaps to make it faster smiling could move you to the text prediction area of the keyboard. Thanks.

As an alternative, the camera could compute what part of the screen the eyes are looking at. But I don't know whether camera switches does this, or just interprets what face gestures it sees. Thanks.


text:
Force boot to bootloader (device always boots to recovery)
I was trying to flash TWRP onto my Android tablet (Lenovo TB-X306F), but something went wrong and it failed. Now, every time I boot, no matter what I do (sending adb commands or pressing physical buttons), it goes to the (now broken) recovery.
I'd like to know if there's a way to forcibly boot into the bootloader so I can use fastboot and flash the stock recovery (I have the original images for everything).
I tried flashing it using flash_image recovery /path/to/recovery.img through adb shell (which is accessible within that "zombie" recovery), but it failed with: failed with error: -1. I've looked up online and couldn't find the meaning of such error, but I suspect it's related to trying to flash the recovery while being in the recovery?
Thank you in advance.

One thing I just noticed though: the tablet is in fact the X306F (shown in Android's system info and it corresponds to the Lenovo M10 HD I bought on the store), but in adb's shell, the prompt is X606FA:/ #. According to some XDA threads I saw, the 606 series corresponds to the M10 Plus models. Not sure what's going on here.

adb reboot bootloader

no matter what I do (sending adb commands

Does this answer your question? adb device doesn't listed on cmd {Lenovo K8 Plus}

I finally solved this conundrum!
After digging around a bit more, I found this blog post on someone's website (thank you!) and tried it out.
In my case, I had /dev/block/platform/bootdevice/by-name/recovery but it still worked wonders.
In case that blog ever goes down, what you have to do is check that path and see if it matches. Like the post suggests, you can do DEV=$(ls /dev/block/platform/*/by-name/recovery); echo $DEV.
Then, it's a matter of using dd to dump the image onto that path, like this: dd of=$DEV if=/path/to/recovery.img (I put mine in /sdcard with adb push).
Finally, just reboot using adb reboot ... or using your device's physical buttons.
Hope this helps!

How does this "Force boot to bootloader"? your answer is about flashing stock recovery from shell, which seems unrelated to question

Well, yeah, looking back at it, it certainly sounds contradictory, but the issue was in fact the broken recovery which seemed to "trap" the boot sequence. I couldn't boot to anything with adb, fastboot or physical buttons whilst in that broken recovery and a normal reboot would always get me stuck on the recovery again. AFAIK the boot sequence is bootloader -> recovery -> system, so it repeatedly got locked in that second step.
Flashing the proper recovery by hand like that allowed me to break this cycle and get proper access to the bootloader again. Thus, it solved my issue.

if TWRP would be broken, you wouldn't be able to use it. there is no trap, system was sending into recovery after unsuccessful boot

As you can see in this XDA thread, TWRP seemed to be very much broken.


text:
Can't cast android to tv with Chromecast
I'm trying to cast my android to non smart tv with Chromecast but I really can't.I've tried so many apps like Google Home,Miracast,EzMira but Chromecast does'n show up in the Google Home app at all.This is the Screen on Tv that I get link
Is the chromecast broken?
Edit:I've managed to cast with another Xiaomi phone but I think the Chromecast it' broken because it stays connected for only 2 or 3 seconds and then it disconnects.

If the "non smart TV" isn't physically connected to a Chromecast dongle device, or the Google Home app doesn't detect your Chromecast device, the Chromecast protocol will not work. Streaming from Android to TV can use different protocols so knowing the right name helps. Your image appears to be a 'miracast' device but you would have to check each Android phone for support: https://www.xda-developers.com/miracast/

I took the Chromecast to the store where I bought it and they said it was defective and that they would send it for warranty.Maybe that's why it connects for two or three seconds and then disconnects because it was faulty and yes with Samsung M11 I used Miracast and with Xiaomi Redmi 9a I used the default Cast.