Android フォンでバックグラウンド GPS 追跡を行う必要があり、現在 2 つのシナリオを計画しています。
- 電話が (車の) 充電器に接続されている場合、頻繁に (1 分ごとに) GPS 位置情報を取得します。
- 電話が充電器に接続されていない場合は、バッテリーの影響に応じて、5 ~ 30 分ごとに 1 回だけ場所をポーリングします。
サービスに追跡を実装する必要があることはわかっており、おそらくサービスを維持するために通知を表示します。ただし、携帯電話がいつでもスリープ モードになり、GPS 追跡が停止する可能性があると私は推測しています。
これらのシナリオでは、電話がスリープ状態にならず、電力をあまり消費せずに、継続的なバックグラウンド GPS 追跡を行うための最良の方法は何ですか?
これまでのところ、以下を収集しました。
シナリオ 1 の場合、おそらく WakeLock を取得し、CPU を常に起動しておく必要があります (ただし、画面はスリープする可能性があります)。MyTracks アプリケーションはTrackRecordingServiceでこれを行っているようです。OpenGPSTrackingも同じようです。
シナリオ 2 では、AlarmManager を使用して x 分ごとにチェックをスケジュールできます。私のサービスは、一時的な WakeLock を取得し、単一の GPS 位置を待ってから、WakeLock を停止して解放する必要があります。
これら 2 つの方法 (永続的な WakeLock と AlarmManager) の電力使用量を比較するとどうなるでしょうか? GPS は 30 分ごとに確認するだけで、適切な時間内に正確な位置を受信できますか?
StackOverflow には関連する質問がいくつかありますが、満足のいく答えはありません。いくつかの半有用なもの: