2011-03-11 8 views
1
のままです

私は深刻な問題があります。 AndroidでrequestLocationUpdates関数を呼び出すと、GPSは現在の位置をリッスンします。しかし、携帯電話が屋内(地下にある)であれば、GPSは場所が固定されるまで聞き続けます。AndroidのrequestLocationUpdatesは

これはテスト時にバッテリーを消耗します...位置を聴いて2分後にremoveUpdatesに設定する方法はありますか?

おかげ

+0

MyLocationOverlayで埋め込みMapViewを使用している場合は、こちらをご覧ください:http://stackoverflow.com/a/10977854/1071942 –

答えて

1

私の推薦:

  1. は5秒ごとにmessage.objため
  2. 秒のカウンターと毎回ハンドラを保つ
  3. 使用はハンドラをトリガするsendMessageDelayedハンドラを使用するクラスを作成しますmessage.objを5だけインクリメントします。
  4. message.objが120に達すると、2分後にremoveUpdate()を使用することができます。

  5. onLocationChanged()ハンドラにremoveMessages()を使用し、0

I LOVE ハンドラを含むオブジェクトとsendMessageDelayed()を再起動しますと呼ばれています!

3

は、更新を得ていないの2分後にremoveUpdates()を呼び出すために、独自のロジックを追加します。組み込みのタイムアウトメカニズムはありませんが、独自のタイムアウトメカニズムは特に難しいはずはありません。

+0

私が考えることができる唯一のタイムアウトのメカニズムは、アンドロイドのサービスをバックグラウンドで実行することです2分後にそれを処理する。しかし、私は非常に非効率的だと思う。応答をありがとう、私はあなたの本を買ったが、私はどこでも効率的なタイムアウトのメカニズムについては見ない。 1つを提案できますか?ありがとう – Yudhistre

+0

上記を参照してください。ありがとう – Yudhistre

+0

@yuhistre:どのコンポーネントが 'requestLocationUpdates()'を呼んでいるのか、またどのコンポーネントが 'LocationListener'をホストしているのか知らなければ、あなたにアドバイスすることはできません。 – CommonsWare

関連する問題