我使用LocationClient来获得当前位置的每一分钟:定期使用LocationClient获取位置的最佳方式是什么?
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(60000);
mLocationRequest.setFastestInterval(60000);
mLocationClient = new LocationClient(this, this, this);
// ... when connected:
mLocationClient.requestLocationUpdates(mLocationRequest, this);
但是我发现我的LocationListener的的onLocationChanged-方法被调用或者每60或120(或60任何其他倍数)秒(+/- 3秒)。该文档说:
此间隔是不精确的。您可能根本没有收到更新(如果没有可用的位置信息源),或者您可能收到的信息比请求的要慢。 [...]
所以我知道,间隔不是确切的一分钟。但我认为我会在60秒结束后尽快获得当前位置,例如75秒后。但似乎如果LocationClient无法确定位置,它会在接下来的60秒后重试。
这个假设是否正确?
如果是,解决方法是将时间间隔设置为30秒左右,并在onLocationChanged-method中过滤掉所需的位置。但是这可能会消耗更多的电池电量。
但降低setFastInterval可以导致我的onLocationChanged方法被调用的频率超过每60秒,这不是我想要的。 ;-)我想要的东西是:每60秒只调用一次onLocationChanged方法,但如果在60秒后没有位置,则在获得下一个坐标时尽快调用我的方法。 – Biggie
今天我做了测试:降低FastInterval导致更稳定的60秒位置更新间隔。但是,如果在后台运行例如“My tracks”-app,并且间隔非常短,则会导致我的应用程序的LocationListener以其FastInterval率(如预期的)进行调用。所以我必须再次过滤所需的位置以获得我的60秒间隔。所以解决方法似乎仍然是将Interval/FastInterval设置为低于想要的时间间隔(这是我的建议)。 – Biggie