fuseLocation API间隔如何与关闭GPS无线电相关

时间:2016-03-05 03:47:18

标签: android gps fusedlocationproviderapi android-fusedlocation

假设我使用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 behaviorhttps://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无线电直到设备移动,这不是很好吗。

1 个答案:

答案 0 :(得分:0)

即使您找到答案,我也不会指望它在设备,操作系统版本或Google Play版本之间保持不变。如果您绝对不想要GPS,请不要使用融合提供商。使用基本LocationManager中的网络提供程序。

至于使用运动探测器 - 它们不存在。它有一个加速度计,但对于一个加速度计保持静止并以恒定的50英里/小时行驶看起来完全相同(以恒定速度行驶是0加速度)。无论如何,它可能不是一个好的优化 - 锁定多个GPS卫星需要几秒钟。如果有人想要准确的话,你不想继续打开和关闭它。