ユーザーの居場所を追跡するアプリに取り組んでいます。バッテリーを節約するために、位置管理者が GPS 位置情報を取得する頻度を減らす (または停止する) アイドル ゾーンを実装したいと考えています。ユーザーが再び移動を開始すると (加速度計や大きな移動によって検出されると)、位置情報サービスは既定の間隔でプルします。
minDistance
1 つのアプローチは、アイドル ゾーンを のパラメータとして定義することですが、LocationManager::requestLocationUpdates
このあたりの他のユーザーは、バッテリーの消耗に影響を与えないことを示唆しており、ドキュメントには、ロケーション マネージャーがこの基準を使用してバッテリーを節約することは難しいと記載されています。
ただし、ロケーション プロバイダーが minDistance パラメーターを使用して電力を節約することはより困難であるため、バッテリー寿命を節約するための主要なツールは minTime である必要があります。
Google はまた、ユーザーの位置が変化したことを検出するために重要なモーション センサーを使用することを提案しています。
大まかに言えば、重要なモーション検出器を使用して、位置決定の消費電力を削減します。ローカライゼーション アルゴリズムは、デバイスが静的であることを検出すると、低電力モードに切り替えることができます。このモードでは、ユーザーが場所を変更したときにデバイスをウェイクアップするために大きな動きに依存します。
これは、デフォルトでモーション センサーが存在する場合、ロケーション マネージャーが重要なモーション センサーを使用することを意味するのでしょうか。それとも、ロケーション サービスがそれを使用するようにするには、何かをアクティブ化または実装する必要がありますか?
そして、加速度計はどうですか?私の質問の大部分は、加速度計を使用すると、電力とコールバック処理が必要な別のセンサーになるため、加速度計を使用してユーザーが動き始めたことを検出することで電力を節約できるかどうかにあります。一部の加速度計センサーは、Google によって低電力としてリストされていますが、そうでないものもあります (重要な動きセンサーを含む)。
GPS をスリープ状態にしてから、センサーを使用してユーザーの動きを検出し、GPS を再び起動することで、バッテリーの電力を節約することは可能でしょうか?