粗略位置在Android上使用的电池数量是否比地理栅栏少?

时间:2015-08-23 07:33:15

标签: android performance gps

我想知道你的设备什么时候离开你的家,但我不需要精确的GPS位置,也不需要高更新率(即如果我知道用户离开家后仅10分钟就出来了,那就没问题了已经100米了。)

两种解决方案中的哪一种应该使用更少的电池(两者都应该使用比普通GPS位置监听器更少的电池)?

  1. Receiving Location Updates | Android DevelopersPRIORITY_BALANCED_POWER_ACCURACY
  2. Creating and Monitoring Geofences | Android Developers
  3. 第一个肯定是使用更节省电池的解决方案,我可以控制频率低。

    第二个是更高级别的API,它正是我想要的,但我不知道它做了什么,看起来它会在用户处于地理围栏内时不断使用精美的GPS位置(记住我想减少电池使用情况)。

    任何人都对电池使用情况有一些了解吗?

2 个答案:

答案 0 :(得分:2)

这里的答案可能是各种各样的事情。 Location and battery Drain视频详细介绍了GPS& amp;位置芯片会耗尽设备中的电池电量。 (Battery Drain and Networking将详细介绍无线电芯片的工作原理。)

基本上,使用FusedLocationProvider可以缩小精度与功耗。基本上分辨率越低,电池消耗越少。

在了解更高功率检查之前,我建议将一组低功耗检查作为早期警告:

  1. 使用ConnectivityManager确定移动设备是否在CellularNetwork上。如果他们是,那么他们很有可能移出无线网络边界。
  2. 检查他们连接的WiFi是否是普通的家庭WiFi(所以你不要把咖啡店wifi误认为是家)。
  3. 在支票上使用退避系统。如果用户在家,很可能,他们将在那里待一段时间;所以缩减你检查位置的频率。
  4. 如果用户位于手机网络上,请使用“课程位置”确定您是否位于已知家庭位置的100英尺范围内。
  5. 使用精确位置检查通过课程位置检查解决问题/角落案例。
  6. 当其他所有方法都失败时,请进行地理围栏检查;但是一旦你解决了问题就把它关掉。
  7. 基本上,您希望最省电的排水选项最常运行,并且只有在您解决位置差异时才能使用最耗电量。

答案 1 :(得分:0)

文档中有一些提示,Google希望您将Geofencing(或新的Awareness API)用于您的用例。

第一种方法需要从LocationRequest和来自 https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest

  

活动应该强烈考虑在进入后台时删除所有位置请求(例如在onPause()处),或者至少将请求更换为更大的间隔和更低的质量。

这表明此API仅在您的应用程序处于活动状态时使用,因此称为“请求”术语。

Google很快意识到很多应用程序(包括他们自己的Google Now)正在请求在后台定位,并且他们希望以这样的方式对其进行改进,即可以汇集和共享请求,因此他们创建了Geofencing和最终意识API。

来自Fence API文档,

https://developers.google.com/awareness/overview#fences_and_snapshots

  

Fence API可让您的应用对用户的当前情况做出反应,并在满足上下文条件组合时提供通知。例如,“只要用户走路并插入耳机,就告诉我”。一旦注册了围栏,即使没有运行,Fence API也可以向您的应用发送回调。

因此,在您的用例中,如果您的应用未运行,则应该使用第二种方法。