让我们假设我使用Android融合位置API来请求高精度的位置报告。例如,
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(FASTEST_UPDATE_INTERVAL*2);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationServices.FusedLocationApi
.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this)这会导致我的location侦听器被调用到每个FASTEST_UPDATE_INTERVAL。如果我将FASTEST_UPDATE_INTERVAL设置为short,我知道在位置更新之间不会关闭GPS无线电。我从各种渠道了解到这一点,比如Fused Location Provider unexpected behavior和https://www.quora.com/Why-does-GPS-use-so-much-more-battery-than-any-other-antenna-or-sensor-in-a-smartphone。
我的问题是,FASTEST_UPDATE_INTERVAL的最小值是多少,会导致GPS无线电在位置更新之间被关闭?
我预计这个问题不会有一个明确的答案,这将取决于手机硬件,Google Play版本,可能还有其他硬件和软件因素。尽管如此,一个通用的答案将是有帮助的。
这个问题很重要,因为我对使用高精度定位感兴趣,但又最大限度地减少电池使用。在某种程度上,我很乐意增加FASTEST_UPDATE_INTERVAL,如果它能节省电力。
如果谷歌融合定位服务使用设备的运动探测器(如果它们存在的话)来判断设备何时静止不动,如果是这样,只需关闭GPS无线电,直到设备移动,这不是很好吗?
发布于 2016-03-05 12:44:30
即使你找到了答案,我也不会指望它在设备、操作系统版本或Google Play版本之间保持不变。如果你绝对不想要GPS,那就别用融合的供应商。使用基本LocationManager中的网络提供商。
至于使用运动检测器-它们并不存在。它有一个加速计,但对加速计来说,静止不动和以每小时50英里的速度行进看起来完全一样(以恒速行进是0加速度)。这可能不是一个很好的优化--锁定多个GPS卫星需要几秒钟。如果有人想要准确性,你不会想要不断地打开和关闭它。
https://stackoverflow.com/questions/35809736
复制相似问题