私のAndroidプログラムでは、GPSを要求するときに最小時間と最小距離を設定しました. ただし、リスニングを開始すると、「onLocationChanged」アクションが発生することがあります。
聴くのをやめてから聴き始めると、新しい gps の値と過去の gps の値が比較されますか? 聴き始めたら何とかクリアしないといけないの?
注: 私はテスト時に同じ場所にいます。
最後の既知の場所を使用するには、getLastKnownLocation を使用します。
これを例にとります:
LocationManager loc = (LocationManager)this.getSystemService(
Context.LOCATION_SERVICE
);
loc.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 2000, 10, locationListener
);
処理のonLocationChanged()
-method は、次のLocationListener
場合に呼び出されます。
requestLocationUpdates()
-methodのドキュメントには、さらに詳しい情報が記載されています。
[...]位置情報更新間の経過時間は よりも短くなることはありませんが、
minTime
位置情報プロバイダーの実装と他のアプリケーションによって要求された更新間隔によってはそれ以上になる可能性があります 。[...]
minDistance
パラメータを使用して、位置情報の更新頻度を制御することもできます。0 より大きい場合、ロケーション プロバイダーは、ロケーションが少なくともminDistance
数メートル変化し、かつ少なくともminTime
ミリ秒が経過した場合にのみ、アプリケーションに更新を送信します。
また、次の情報が含まれています。
Jellybean より前は、minTime パラメーターは単なるヒントであり、一部のロケーション プロバイダーの実装では無視されていました。Jellybean 以降では、Android 互換デバイスで minTime パラメーターと minDistance パラメーターの両方を監視することが必須です。
これは、バッテリーを節約するための単なるメカニズムです。自分で何もする必要はありません。それ以外の場合は、これらの両方のパラメーターに適切な値を選択してください。