私のアプリはLocationListenerを使用して現在の場所を追跡します。GPSプロバイダーが定期的な修正を提供している限り、これはうまく機能します。ただし、修正が最新ではなくなったために場所が信頼できなくなった場合に、アプリがユーザーに警告するようにしたいです。したがって、timeCheckHandlerを使用して、数秒ごとにgetLastKnownLocationを呼び出しました。
私の問題は、正確な修正が頻繁に受信されている場合でも、getTime()をgetLastKnownLocationによって返される場所に適用することによって返される時間は、System.currentTimeMillis()によって返される現在の時間よりも一般的に古く、多くの場合約20秒古いことです。
onLocationChanged(arg0)にコードを追加して、修正時刻(arg0.getTime())と現在時刻(System.currentTimeMillis())をログに記録することにより、問題をさらに調査しました。ここでも、約20秒の違いがあります。
現在、コードは次のようになっています。
public void onLocationChanged(Location arg0) {
mapview.handleLocationChanged(mapview, arg0.getLatitude(), arg0.getLongitude(), arg0.getBearing(), arg0.getAccuracy(), "GPS fix");
addDebugNote("Fix received at time: "+Long.toString(arg0.getTime()/1000)+" Now: "+Long.toString((System.currentTimeMillis())/1000));
}
デバッグファイルへの一般的な出力は次のとおりです。
Fix received at time: 1292091908 Now: 1292091928
修正時間と現在のシステム時間の間にこの違いが表示されるのはなぜですか?
約20秒の差が正常であることを受け入れる必要がありますか?