在 Android 中监控与多个位置的距离最省电的方法是啥?
Posted
技术标签:
【中文标题】在 Android 中监控与多个位置的距离最省电的方法是啥?【英文标题】:What is the most battery-efficient way of monitoring proximity to a number of locations in Android?在 Android 中监控与多个位置的距离最省电的方法是什么? 【发布时间】:2013-06-14 12:04:22 【问题描述】:我有一个应用程序,每当用户接近一组位置中的任何一个时,它都会采取一些(互联网)操作(例如,假设它在我靠近星巴克商店时通知服务器,所以我的咖啡习惯可以进行分析)。
什么是最省电(但可靠且相对准确)的方式,可以让手机在某个位置时执行某项操作?我不需要完美的定位精度——在 50m 以内就可以了。
目前,我为每个半径为 100m 的位置设置了一个 ProximityAlert,并让它引发一个 Intent,然后由在后台运行的 Service 提供服务。该服务还包括一个警报,每三个小时左右就会下载一次。
服务本身似乎并没有消耗大量电池 - 电池全部被“android OS”耗尽。根据 Android 4.1.2 电池监视器,Android 操作系统使用的 CPU 是没有我的应用程序的手机的 3 倍,并且大部分时间都处于“保持清醒”状态。
将其更改为 IntentService 会有所不同吗?
减少(或增加)警报的半径会有所不同吗?
将其转换为地理围栏 (https://developer.android.com/training/location/geofencing.html) 会有很大不同吗?
我可以将它设置为使用更便宜的定位服务,除非它认为它靠近某个位置(或者它会自动这样做吗?)
【问题讨论】:
也许你应该试试Geofencing APIs - references 谢谢 - 将此添加到问题中 【参考方案1】:我从未使用过 LocationManagers 接近警报功能,所以我真的不知道它们会消耗多少电池,但据我所知,新的地理围栏服务 (https://developer.android.com/training/location/geofencing.html) 是专门为电池友好型设计的.
【讨论】:
谢谢,我暂时忘记了这个选项。【参考方案2】:LocationManagers 是一种非常困难的方式来编写您需要的东西。谷歌彻底改造了它的位置提供者,将它们与传感器融合在一起。它是最新最好的,使用更少的电池,并通过删除您需要在 gps/网络提供商之间编写的所有 1000 行无用代码,对您的应用程序产生魔术。
新的 api 是 LocationClient api。观看此video 并亲自演示。
【讨论】:
【参考方案3】:您可以使用谷歌最近提供的新地理围栏api,它更省电 https://developer.android.com/training/location/geofencing.html
【讨论】:
以上是关于在 Android 中监控与多个位置的距离最省电的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章