ユーザーの操作によって位置情報を取得しようとするアプリがあります。GPS とネットワークの両方をリッスンし、時間/精度に基づいた決定マトリックスを使用して、リッスンをいつ停止し、どの修正を返すかを決定します。
時折、非常に奇妙な動作に気付きました。次のように、古典的な方法を使用して、修正がどれくらい古いかを確認します。
long age = now - newLocation.getTime();
if(age >= prefs.getLocationMaxAge()){
Log.d(TAG, "location too old.");
return;
}
ただし、返されたタイムスタンプによると、OS から返された location.getTime の経過時間がおそらく 15 ~ 20 秒である場合がありますが、非常に古いことは確かです。たとえば、経度/緯度の修正が、30 分前にハンドセットがあった位置からのものであるとします。
Wi-Fi とネットワークの両方から発生しているようですが、GPS では発生していません。私にとって、これは完全にクレイジーです。他の誰かがこれを見たことがありますか?それを回避する方法はありますか?
いくつかの異なる携帯電話で入手しましたが、最新のものはSamsung Galaxy S IIです。
ヘルプは大歓迎です。
編集:本当に明確にするために、問題は、「新しい」の経度/緯度が確かにわかっているときに、おそらく数秒のタイムスタンプの年齢を持つ場所で「onlocationchanged」コールバックがOSによって呼び出されることですfix は、電話が少なくとも 30 分間使用されていない場所です。
これにより、ハンドセットがどこにあるのかを正確に特定するのが難しくなります...