我得出的结论是,传递给requestLocationUpdates(minTime,minDistance)的两个参数对于节省电话(Gingerbread)上的电池电量没有任何影响,因为卫星图标始终保持在GPS状态状态永远不会像过去某些人所报告的那样进入TEMPORARILY_UNAVAILABLE。
因此,为了自己控制GPS,我将GPS的控制权转移到了具有Runnable时间的服务。该服务是一个简单的状态机,有三种状态,IDLE,SEEKING和FIXED_AND_SLEEPING。当机器正在寻找GPS启用时,当它获得足够精确的修正时,它会调用removeUpdates,关闭GPS并启动Runnable,在服务Binder界面中的参数设置的一段时间后超时并切换更新重新开始,然后转向SEEKING。
我认为在控制GPS打开或关闭时,我已经很好地确定了这一点,因为根据传递给机器的参数开启和关闭图标,日志行显示状态发生了变化预期
但是,我的手机有一项描述为:
的功能使用传感器辅助:“设置使用传感器进行增强 GPS信号受阻时的行人定位。 传感器估计值之间可能存在差异 你的实际位置“
如果我打开它,那么我会看到日志行开头说过像
这样的东西[HYPOS] NOMOVE时间234940,PowerMode 0,GPSWeakSignal 181,GPSFixTime 0,Car 1,DOE 3
当我没有告诉它时,GPS图标有时会关闭。当然,它不会随着我的桌面上的手机插入USB线缆来捕捉logcat而移动。
我想知道这是否是requestLocationUpdates的minDistance参数的目的?
由于GPS需要知道手机移动了多远,因此无法通过单独使用GPS确定GPS是否保持开启状态。
如果打开传感器辅助设备,那么加速度计可以整合一段时间,大致了解行驶距离,并确定手机没有超过minDistance,并告诉GPS芯片把自己关掉?
我试着看看是什么让它再次重新开始,但是当我拔下USB以取出手机散步时,图标会立即再次点亮。
如果没有Android开发者就此发表明确声明,我们将非常感激地收到任何意见或经验
答案 0 :(得分:2)
只是为了给一个背景。 Android有许多位置提供商,如GPS,GNSS,网络位置提供商和基于Wi-Fi的提供商。其中大部分都是芯片组供应商的专有功能,并且根据硬件功能有自己的实现 现在还有另一个域称为AGPS(辅助GPS)。由于GPS是在> -120 dbm范围内的低功率信号,我们需要更多的计算资源来跟踪星座并计算和估计位置。因此你可以说GPS需要耗电。各种技术通过辅助GPS来减少对计算资源的需求。其中一些是小区ID位置,SBAS,XTRA,传感器,无线电辅助等。
答案 1 :(得分:1)
在我看来,当GPS传感器开启时,你的功耗是恒定的。
传递给requestLocationUpdates(minTime, minDistance)
的两个参数只会定义使用CPU的数据刷新参数(不会耗费大量功率)。
因此,当您的GPS传感器被激活时,您无法真正控制功耗。