1

以下を達成する必要がある Android アプリケーションを最適化しようとしています。

  • 1 時間ごとに GPS 位置情報を取得し、doSomeWork()

  • デバイスが @MINIMUM_DISTANCE を超えて移動した場合はいつでも、更新頻度を 5 分程度に増やして移動を記録します。移動が終了したら、1 時間ごとの更新に戻ることができます。

これで、AlarmManager を 1 時間ごとに起動することで、最初の要件を処理できます。これは、このタスクを達成するための優れたバッテリ効率の良い方法です。ただし、2番目の要件を最もよく達成する方法がわかりません。

するべきか:

  • 1 時間ごとのタイマーと連携して 5 分ごとに起動する AlarmManager を登録しますか? 毎回 LocationManager を登録し、場所の引き離しを試み、以前の場所と比較して移動が発生したかどうかを判断します。

  • 1 時間ごとのウェイクアップ後に、必要な最小移動に等しい最小距離パラメーターを使用して LocationManager を登録します。

  • 他の何か?

それぞれのアプローチの長所と短所を見ることができます。

LocationManager の最小距離パラメーターを使用する方がより簡潔な解決策のように思えますが、バッテリーの消耗が心配です。これにより、アプリケーションが更新を受信して​​いるかどうかに関係なく、常に GPS が熱くなりますか? また、受信者を登録するのに最適な場所がどこなのかもわかりません。サービスを 100% 常に実行し続けることはお粗末なことです (ほぼ不可能であることは言うまでもありません)。

はい、私はAndroidが初めてです!LocationManager の動作をテストしようとしています。

前もって感謝します。

4

2 に答える 2

1

うまく機能している私の解決策は、NETWORK_PROVIDER (および、無料でアップデートを入手できる場合は PASSIVE) を登録しておき、GPS_PROVIDER がないときはいつでもリッスンすることです。以前に取得した場所の外に移動が見られる場合は、完全な GPS に切り替えて移動を監視できます。

精度は低いですが、少なくとも十分に良好です。電池の消費が圧倒的に少ない。

于 2012-07-31T09:54:48.220 に答える
0

ユーザーが車に乗り込んで運転するとどうなりますか? 最小距離を設定している場合LocationManagerは、比較的迅速にコールバックを取得できます (最小距離がどのくらいかはわかりませんが...)。それ以外の場合は、ユーザーが移動したことを認識するまで 5 分間待たなければならない場合があります。

ただし、本当に 5 分ごとに 1 回の更新だけが必要な場合は、間違いなくこのAlarmManager方法を使用します。これにより、5 分のスロットの間に GPS を使用して何もしないことが保証されます。

ただし、ユーザーが移動して GPS がオンになっていない場合、GPS が修正されるまでに時間がかかる場合があることに注意してください。そのため、GPS を起動してすぐに正確な修正が得られるとは期待しないでください。

于 2012-07-13T15:55:17.590 に答える