我有一个应用程序,每当用户接近一组位置中的任何一个时,它会采取一些(互联网)动作(例如,假设我在星巴克商店附近时通知服务器,所以我的咖啡习惯可以分析)。
什么是电池效率最高(但可靠且相对准确)的方式,使手机在某个位置时做某事?我不需要完美的定位精度 - 在50米左右就可以了。
目前,我为每个半径为100米的位置设置了ProximityAlert,然后让它产生一个Intent,然后由一个在后台运行的服务提供服务。该服务还包括一个警报,每三个小时左右下载一次。
服务本身似乎没有消耗任何大量电池 - 电池全部被“Android OS”耗尽。根据Android 4.1.2电池监视器,Android操作系统使用的CPU数量是没有我的应用程序的3倍,并且大部分时间都处于“保持清醒状态”。
将它更改为IntentService会有所作为吗?
减少(或增加)警报的半径是否会产生影响?
将它转换为地理围栏(https://developer.android.com/training/location/geofencing.html)会有很大的不同吗?
我可以将它设置为使用更便宜的位置服务,除非它认为它靠近其中一个位置(或者它会自动执行吗?)
答案 0 :(得分:2)
我从未使用过LocationManagers接近警报功能,所以我真的不知道他们耗尽了多少电池,但据我所知,新的Geofence服务(https://developer.android.com/training/location/geofencing.html)是专门设计的电池 - 友好的时尚。
答案 1 :(得分:1)
LocationManagers提供了一种非常困难的方法来编写您需要的东西。谷歌重新设计了其位置提供商,以便将它们与传感器融合在一起它是最新的,最好的,使用更少的电池,并通过您的应用程序魔力,删除您需要在您的gps /网络提供商之间编写的所有1000行无用代码。
新的api是LocationClient api。观看此video并自行演示。
答案 2 :(得分:1)
你最近可以使用谷歌提供的新geo fence api,它的功效更高 https://developer.android.com/training/location/geofencing.html