假设我使用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)
这导致我的位置监听器被调用到每个FASTEST_UPDATE_INTERVAL。如果我将FASTEST_UPDATE_INTERVAL设置为短,我知道在位置更新之间不会关闭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无线电直到设备移动,这不是很好吗。
答案 0 :(得分:0)
即使您找到答案,我也不会指望它在设备,操作系统版本或Google Play版本之间保持不变。如果您绝对不想要GPS,请不要使用融合提供商。使用基本LocationManager中的网络提供程序。
至于使用运动探测器 - 它们不存在。它有一个加速度计,但对于一个加速度计保持静止并以恒定的50英里/小时行驶看起来完全相同(以恒定速度行驶是0加速度)。无论如何,它可能不是一个好的优化 - 锁定多个GPS卫星需要几秒钟。如果有人想要准确的话,你不想继续打开和关闭它。