ユーザーが一連の場所のいずれかに近づくたびに、何らかの (インターネット) アクションを実行するアプリがあります (たとえば、スターバックスの店の近くにいるときはいつでもサーバーに通知して、コーヒーの習慣を分析できるとしましょう) .
携帯電話が特定の場所にいるときに何かを実行させる最もバッテリー効率の良い (しかも信頼性が高く、比較的正確な) 方法は何ですか? 完璧な位置精度は必要ありません。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 )に変換すると、大きな違いが生じるでしょうか?
いずれかの場所に近いと判断しない限り、安価な位置情報サービスを使用するように設定できますか (または、自動的に行われますか?)