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-method が 60 または 120 (またはその他の 60 の倍数) 秒 (+/- 3 秒) ごとに呼び出されることに気付きました。ドキュメントには次のように記載されています。
この間隔は不正確です。更新がまったく受信されない場合 (ロケーション ソースが利用できない場合)、または要求よりも遅く受信される場合があります。[...]
だから私は、間隔が正確に1分ではないことを知っています. しかし、60 秒が経過したら、たとえば 75 秒後にできるだけ早く現在地を取得すると考えました。しかし、LocationClient が場所を特定できない場合は、次の 60 秒後に単純に再試行するようです。
この仮定は正しいですか?
はいの場合、回避策として、間隔を 30 秒程度に設定し、onLocationChanged メソッドで必要な場所を除外します。しかし、それはおそらくより多くのバッテリー電力を消費します。