10

GPS_PROVIDER (場所は GPS 信号から取得される) とNETWORK_PROVIDER (場所はセル タワーとワイヤレス アクセス ポイントから決定される) の意味は理解していますが、API の定義にもかかわらず、PASSIVE_PROVIDERの意味はわかりません。

実際に場所の修正を開始せずに場所を受信するための特別な場所プロバイダー。このプロバイダーを使用すると、実際に自分で位置情報を要求しなくても、他のアプリケーションやサービスが要求したときに位置情報の更新を受動的に受け取ることができます。このプロバイダーは、他のプロバイダーによって生成された場所を返します。getProvider() メソッドを照会して、場所の更新元を特定できます。アクセス許可 android.permission.ACCESS_FINE_LOCATION が必要ですが、GPS が有効になっていない場合、このプロバイダーは大まかな修正しか返さない可能性があります。

他のプロバイダーの代わりにこれを使用するのはなぜですか? バッテリー寿命を節約するには?パッシブ プロバイダーは、他のアプリが実際のプロバイダーからのデータを明示的に要求した場合にのみ有用な情報を返しますか?それとも、これから位置情報を要求しても常に安全ですか?

4

2 に答える 2

20

このプロバイダーは、ユーザーの場所で動作するが、指摘したようにバッテリー寿命を無駄にしたくないサービスに役立ちます。

たとえば、Google Latitude は現在地を Web サービスに送信して、友人に現在地を知らせます。このサービスが 5 分ごとに GPS 修正を要求すると、デバイスのバッテリーはすぐに空になります。サービスがパッシブ位置情報プロバイダーを要求する場合、Google マップが開始されて修正が取得されるか、他のアプリが位置情報プロバイダーの更新を開始するたびに位置情報が送信され、サービスは位置情報の更新に追加の電力を費やすことなく位置情報データを処理できます。

正確な位置データが必要な場合、このプロバイダーを使用しても役に立ちません。バックグラウンド サービスで実行されていないほとんどの場合、他のアプリがユーザーの位置情報の更新をトリガーした場合にのみ更新を送信するため、この位置情報プロバイダーは役に立ちません。

于 2011-04-13T20:38:47.390 に答える
4

@Janusz に追加するには、他のプロバイダーによる修正を受け取り、この修正がどのプロバイダー (NETWORK または GPS) からのものか知りたい場合は、getProvider() を呼び出してこれを見つけることができます。

于 2011-04-13T20:42:09.880 に答える