0

我有一个应用程序,每次用户接近一组位置中的任何一个时都会采取一些(互联网)操作(例如,假设它在我靠近星巴克商店时通知服务器,因此可以分析我的咖啡习惯) .

什么是最省电(但可靠且相对准确)的方式,可以让手机在某个位置时执行某些操作?我不需要完美的定位精度——在 50m 左右就可以了。

目前,我为每个半径为 100m 的位置设置了一个 ProximityAlert,并让它引发一个 Intent,然后由在后台运行的 Service 提供服务。该服务还包括一个警报,每三个小时左右就会下载一次。

服务本身似乎并没有消耗大量电池 - 电池全部被“Android OS”耗尽。根据 Android 4.1.2 电池监视器,Android 操作系统使用的 CPU 是没有我的应用程序的手机的 3 倍,并且大部分时间都“保持清醒”。

将其更改为 IntentService 会有所不同吗?

减少(或增加)警报的半径会有所不同吗?

将其转换为地理围栏(https://developer.android.com/training/location/geofencing.html)会有很大不同吗?

我可以将其设置为使用更便宜的定位服务,除非它认为它靠近某个位置(或者它会自动执行此操作吗?)

4

3 回答 3

2

我从未使用过 LocationManagers 接近警报功能,所以我真的不知道它们消耗了多少电池,但据我所知,新的地理围栏服务 ( https://developer.android.com/training/location/geofencing. html ) 以电池友好的方式特别设计。

于 2013-06-18T10:23:36.767 回答
1

LocationManagers 构成了一种非常困难的方式来对您需要的东西进行编程。谷歌彻底改造了它的位置提供者,将它们与传感器融合在一起。它是最新最好的,通过删除您需要在 gps / 网络提供商之间编写的所有 1000 行无用代码,使用更少的电池并为您的应用程序带来魔力。

新的 api 是 LocationClient api。亲自观看此视频和演示。

于 2013-06-18T14:46:13.320 回答
1

您可以使用 Google 最近提供的新地理围栏 API,它更省电 https://developer.android.com/training/location/geofencing.html

于 2013-06-25T10:17:54.117 回答