私はそのようなアプリを作成し(したがって、LocationManagerの消費電力を測定する方法についてのOffice Hours Q&Aでの私の質問)、その間、それは本当にうまく機能しています。私は当初、組み込みの近接アラートを使用するつもりでしたが、あなたと同じ問題に苦労し、十分な柔軟性がないと思いました。
代わりに、LocationProviderを使用してNETWORK_PROVIDERを使用して5分ごとに場所をポーリングし、目的の場所までの距離を計算し、近接している場合は通知を送信するサービスを構築しました。Wifiネットワークがたくさんある都市では、これにより(報告された)精度は50メートルになります。
また、PASSIVE_PROVIDERを使用して、他のアプリの位置情報リクエストを利用しています。
目的の場所の近くにいて、報告された精度が粗すぎて指定された近接範囲内にあるかどうかを判断できない場合は、バックアップとして単一のGPS位置情報要求を使用しています。また、NETWORK_PROVIDERがタイムアウトした場合は、単一のGPS位置情報要求を使用します。地下鉄を使用しているときにGPSプロバイダーがバッテリーを消耗しないようにするために、指数バックオフを伴うタイムアウトもあります。
Wifiネットワークに接続している間は、移動していないと想定し、その間はロケーションプロバイダーを無効にします。
私が行った最後の変更は、15分以内に保存された場所のいずれにも到達できないと判断できる場合は、NETWORK_PROVIDERに15分(「不正確な繰り返し」)タイマーを使用することでした(したがって、5分間隔でポーリングします)意味がありません)。これにより、電力を節約できます。
さらに長い間隔を使用してさらに電力を節約することを考えていましたが、その時間内に保存した場所の1つに到達できるかどうかを判断するヒューリスティックをここで見つけるのは簡単ではありません。これは、常に想定できるとは限らないためです。同じ移動速度(徒歩、電車または車での移動)。しかし、アプリによって引き起こされたLocationManagerの消費電力を測定できないため、毎日のシナリオで消費電力を評価する方法がわかりません。
組み込みのAPIがそのすべてのロジックを提供するかどうかは気になりませんが、提供しないと結論付けたので、これを自分で作成しました。
これがお役に立てば幸いです。