Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Androids passive locationlistener to improve Batterylife #188

Open
Casey1979 opened this issue Nov 11, 2024 · 2 comments
Open

Use Androids passive locationlistener to improve Batterylife #188

Casey1979 opened this issue Nov 11, 2024 · 2 comments

Comments

@Casey1979
Copy link

Please use the passive locationlistener instead of fused, gps or network location for reduced power consumption.
Trigger scans when a locationupdate was received and the duration from the last scan is convenient.
Request a locationupdate on your own only when a tracker was found and the last update too long ago to be acceptable.
The location toggle in the settings could be renamed to lowpower location, to switch between passive and fused location.
Also please stop any powermanagement circumventions like with the foreground service when in low power location mode (or when Airguard wasn't unrestricted by the user anyway) so that Android can handle Airguard with the most powermanagement efficiency even if it might lead to less frequent scans.

This change will probably massively reduce the power consumption from about 6% to less than 2% without harming the detection much if at all.
It will probably lead to even more locationupdates than the ones currently requested by just Airguard on its own which could even be useful to trigger more scans while still using less power than before.
Also just for the purpose of tracking detection people only need to know from about where to about where the tracking happened and not the exact locations the trackers were found.
Only the approximate path where the tracking happened is interesting which will likely even be more detailed than the current 15 minute updates of Airguards own location scanning.
Since trackers might not be detected on every scan the start and end locations of the tracking are most likely inaccurate anyway.

Please consider doing this change so that Airguard won't have any noticeable impact on the batterylife anymore while still providing a comparably good and useful detection in the background.
An Airguard beta program in the Google playstore might also make sense to test such changes in the wild.

Thank you for the past work and already good app.

@Sn0wfreezeDev
Copy link
Member

Hi Casey,

How does the background location listener work in Android? We did not read about it when we were implementing the app.
One thing that we realized though is that accurate location data is very important. Imagine your last location is 5 min ago and you find a tracker now. In that 5 minutes you could have traveled kilometers by car, which would make it much harder for the user to identify if this tracker is following you or if it was in the meeting you attended 5 minutes ago.

If you can send me more details on the implementation (documentation link is fine) than we can look into it and test it. Aside from battery issues, getting an accurate location currently takes way too long and sometimes fails entirely, which also makes tracking detection less accurate.

@Casey1979
Copy link
Author

Casey1979 commented Nov 12, 2024

Hi,
this is the link for the passive Locationprovider https://developer.android.com/reference/android/location/LocationManager#PASSIVE_PROVIDER
"A special location provider for receiving locations without actively initiating a location fix. This location provider is always present."
"This provider can be used to passively receive location updates when other applications or services request them without actually requesting the locations yourself. This provider will only return locations generated by other providers."

https://developer.android.com/about/versions/oreo/background-location-limits?hl=en
"Use a passive location listener, which may receive faster location updates if there are foreground apps requesting location updates at a faster rate."

This may be of interest as well
https://developer.android.com/develop/sensors-and-location/location/battery?hl=en

The beauty of it is that you passively receive locationupdates requested by other apps and services after they are ready with no cost attributed to you. You may receive them a bit unsteady but probably more than often enough to be of good use.
And if the location should match the scan why not just let the locationupdates drive the scans instead of asking for the location before the scan which currently involves network and gps activity as well as waiting time which makes the app comparably expensive batterywise.
Currently i disabled the use of the location in Airguards settings and set the permission to "Allow only while using this app"
Which results in no noticeable battery usage attributed to Airguard anymore on a Google Pixel with Android 15. With the passive location updates we could have both at once, locations and efficiency.

For an app that is supposed to do its work silently and efficiently in the background until the user needs to be alerted the passive location listener seems to be an at least optionally perfect way to go.

Thank you for taking a look at this possible impvovement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants