So this is really weird, but I have found what seems to be unexpected continuous location tracking that is causing noticeable battery drain on Android 6.0. Right now, it’s looking like a change in an automatically updated component, so it is probably due to a closed source service or app. So this is in the style of the work from Vern Paxson’s group on characterizing the observed behavior of third party software.
Has anybody else running Android 6.0 noticed a particularly large increase in power drain, with the GPS icon displayed continuously? I will be running additional tests in the coming days, but wanted to report the unusual behavior and see if other researchers have noticed it as well, or want to investigate it while it lasts.
Background
I’ve been doing power profiling of power drain under various regimes as part of understanding the power/accuracy tradeoffs for my travel pattern tracking project. So I basically install apps with different data collection regimes on multiple test phones of the same make, model and OS version, and carry all of them around for comparison.
From last Thu/Fri/Sat, it looks like the power drain behavior on android has changed dramatically. In particular, it looks like some system component has GPS location turned on continuously, and is draining the battery quite dramatically. See details below.
This is a Nexus 6 running a stock android kernel (v 6.0.1, patch level: March 1, 2016), with no non-OEM apps installed other than mine, and with google maps location history turned off, so this must be due to unexpected background access by either the OS or some stock google app. And since I didn’t update the OS, my guess is that it is a closed source component such as google play services or google maps that is automatically updated/patched.
Details
Phone 1 | Phone 2 | Phone 3 | Phone 4 | |
Sat | tracking off | tracking off | tracking off | tracking off |
Tue | high, 1 sec | med, 1 sec | high, 15-30 sec | med, 15-30 sec |
Thu | high, 1 sec | med, 1 sec | high, 30 sec | tracking off |
Fri + Sat | high, 1 sec | med, 1 sec | high, 30 sec | tracking off |
Next Tue | high, 1 sec | med, 1 sec | high, 30 sec | tracking off |
It is clear that on Tuesday, phones 2 and 3 are fairly close to each other, and both are very different from phone 1. This is consistent with intuition and results before Thursday as well.
On Thursday, the difference between phone 1 and phone 2 is much less pronounced, and the difference between phone 2 and phone 3 is also much larger. On Friday and this Tuesday, there is essentially no difference between high and medium accuracy at the fast sampling rate (phone 1 and phone 2), and no difference between slow sampling and no tracking (phone 3 and phone 4).
Of course, this could be a bug in my code, but:
- I didn’t really change the code between Tue and Thu, and
- I don’t get the notifications about activity changes on the phone where it is turned off, and
- my app does not show up in the location or battery drain screens
Next steps
- uninstall my app. This is very annoying because then I have to record the battery level manually, but I can suck it up for a day.
- uninstall potential culprits – google play services, maps, ??? It turns out that most of these are system services that cannot be uninstalled, but I can try disabling them.
- —–> your suggestion here <——— If you have any thoughts on things to try, let me know!
We can do this together
This is complicated because we are trying to treat the phone like a natural phenomenon that we cannot control but can try to understand through observation. I’d love to hear from other members of the community so that we can figure out whether google is really continuously tracking us without letting us know, and killing our battery while doing so.