0

ユーザーが一連の場所のいずれかに近づくたびに、何らかの (インターネット) アクションを実行するアプリがあります (たとえば、スターバックスの店の近くにいるときはいつでもサーバーに通知して、コーヒーの習慣を分析できるとしましょう) .

携帯電話が特定の場所にいるときに何かを実行させる最もバッテリー効率の良い (しかも信頼性が高く、比較的正確な) 方法は何ですか? 完璧な位置精度は必要ありません。50m 以内であれば問題ありません。

現在、半径 100m の場所ごとに ProximityAlert を設定し、Intent を発生させます。これは、バックグラウンドで実行される Service によって提供されます。このサービスには、約 3 時間ごとにダウンロードを行うアラームも含まれています。

サービス自体が大量のバッテリーを消費しているようには見えません。バッテリーはすべて「Android OS」によって消費されます。Android 4.1.2 のバッテリー モニターによると、Android OS は、アプリをインストールしていないスマートフォンの 3 倍の CPU を使用しており、ほとんどの場合、「ステイ アウェイク」がオンになっています。

それを IntentService に変更すると違いがありますか?

アラートの範囲を縮小 (または拡大) すると違いはありますか?

それをジオフェンス ( https://developer.android.com/training/location/geofencing.html )に変換すると、大きな違いが生じるでしょうか?

いずれかの場所に近いと判断しない限り、安価な位置情報サービスを使用するように設定できますか (または、自動的に行われますか?)

4

3 に答える 3

2

私は LocationManagers の近接アラート機能を使用したことがないため、バッテリーをどれだけ消費するかはよくわかりませんが、新しいジオフェンス サービス ( https://developer.android.com/training/location/geofencing. html ) は、バッテリーに優しい方法で特別に設計されています。

于 2013-06-18T10:23:36.767 に答える
1

Google が最近提供した新しいジオ フェンス API を使用できます

于 2013-06-25T10:17:54.117 に答える
1

LocationManagers は、必要なものをプログラムするのに非常に難しい方法を提供します。Google は、ロケーション プロバイダーを再発明して、それらをセンサーと融合させました。その最新かつ最高の、より少ないバッテリーを使用し、gps/ネットワーク プロバイダー間で記述する必要がある無駄なコードの数千行をすべて削除することにより、アプリケーションで魔法を行います。

新しい API は LocationClient API です。このビデオとデモをご覧ください。

于 2013-06-18T14:46:13.320 に答える