1

毎秒電話の場所を保存する場所ログ アプリケーションを開発しています。
LocationManager の更新をサブスクライブするサービスを実装しました。

HandlerThread thread = new HandlerThread("LocationServiceHandler");
locationManager.requestLocationUpdates(GPS_PROVIDER, 
    1000 /* milliseconds*/, 0 /* meters */, listener, thread.getLooper());

サービスは、アプリケーション コンテキストにバインドすることによって開始されました。
通常、アプリケーションはバックグラウンドで実行され、ユーザーの操作は必要ありません。
通常、建物の周りを歩いているときは問題なく動作します。サービスは毎秒新しい場所とタイムスタンプを取得し、それを外部ストレージにあるファイルに保存します。
しかし、都市から離れた野原に行くと、ログ ファイルのレコード間に 4 ~ 5 分のギャップがあることがわかりました。電話はその瞬間に使用されておらず、大空の下にあり、衛星を遮るものは何も見えなかった. これは不規則に発生し、約 1 時間に 1 回発生し、私のオフィスではこの動作を再現できません。
何が原因でしょうか?どうすれば回避できますか?
端末は Nexus S、Android 2.3.4

4

1 に答える 1

0

ウェイクロックを使用していますか?電話がスリープ状態になる可能性があるため、場所を見逃す可能性があります。それ以外の場合は、1000 ミリ秒が最良のシナリオであるため、場所を提供しないのは場所マネージャーだけである可能性があります。GPS リスナーを 5 秒ごとに更新するの回答を参照してください。

于 2011-08-19T11:27:38.727 に答える