135

私のアプリケーションでは、ユーザーの現在の場所を特定したいと考えています。ただし、この点に関していくつか質問があります。

  1. さまざまな位置情報プロバイダーがありますが、最も正確なのはどれですか? GPSプロバイダーまたはネットワーク プロバイダー?

  2. これらの利用可能なプロバイダーはどの程度異なりますか? それらはどのように機能しますか?

  3. 私のアプリケーションに GPS 機能を実装する方法について、いくつかのコード スニペットまたはチュートリアルを教えてください。

4

3 に答える 3

288

Androidには3つのロケーションプロバイダーがあります。

彼らです:

gps –>(GPS、AGPS): GPSロケーションプロバイダーの名前。このプロバイダーは、衛星を使用して場所を決定します。条件によっては、このプロバイダーがロケーションフィックスを返すまでに時間がかかる場合があります。権限android.permission.ACCESS_FINE_LOCATIONが必要です。

ネットワーク–>(AGPS、CellID、WiFi MACID):ネットワークロケーションプロバイダーの名前。このプロバイダーは、セルタワーとWiFiアクセスポイントの可用性に基づいて場所を決定します。結果は、ネットワークルックアップによって取得されます。権限android.permission.ACCESS_COARSE_LOCATIONまたはandroid.permission.ACCESS_FINE_LOCATIONのいずれかが必要です。

パッシブ–>(CellID、WiFi MACID):実際にロケーション修正を開始せずにロケーションを受信するための特別なロケーションプロバイダー。このプロバイダーは、他のアプリケーションやサービスが実際に自分で場所を要求することなく、場所の更新を要求したときに、受動的に場所の更新を受信するために使用できます。このプロバイダーは、他のプロバイダーによって生成された場所を返します。android.permission.ACCESS_FINE_LOCATION権限が必要ですが、GPSが有効になっていない場合、このプロバイダーは大まかな修正のみを返す可能性があります。これはAndroidがこれらのロケーションプロバイダーと呼んでいるものですが、これを機能させるための基盤となるテクノロジーは、特定のハードウェアと電話会社が提供する機能(ネットワークサービス)のセットにマッピングされています。

最善の方法は、最初に「ネットワーク」または「パッシブ」プロバイダーを使用し、次に「gps」にフォールバックし、タスクに応じてプロバイダーを切り替えることです。これはすべてのケースをカバーし、最小公分母サービス(最悪の場合)と優れたサービス(最良の場合)を提供します。

ここに画像の説明を入力してください

記事リファレンス:Androidロケーションプロバイダー-gps、network、passive By Nazmul Idris

コードリファレンス:https ://stackoverflow.com/a/3145655/28557

- - - - - - - - - - - -アップデート - - - - - - - - - - - -

今Androidは融合ロケーションプロバイダーを持っています

Fused Location Providerは、基盤となるロケーションテクノロジーをインテリジェントに管理し、ニーズに応じて最適なロケーションを提供します。これにより、アプリがユーザーの現在地を取得する方法が簡素化され、精度が向上し、消費電力が削減されます。

融合ロケーションプロバイダーは、ロケーションを取得する3つの方法を提供します

  1. 最後の場所:現在の場所を一度知りたいときに使用します。
  2. リスナーを使用して位置情報を要求する:アプリケーションが画面/フロントエンドにあり、位置情報を継続する必要がある場合に使用します。
  3. 保留中のインテントを使用してロケーションをリクエストする:アプリケーションがバックグラウンドであり、ロケーションの継続が必要な場合に使用します。

参照:

公式サイト:http ://developer.android.com/google/play-services/location.html

融合ロケーションプロバイダーの例:GIT:https ://github.com/kpbird/fused-location-provider-example

http://blog.lemberg.co.uk/fused-location-provider

-------------------------------------------------- ------

于 2011-07-21T11:43:28.807 に答える
7

通常、GPS はネットワークよりも正確ですが、GPS が利用できない場合もあるため、2 つを切り替える必要がある場合があります。

良い出発点は、android dev サイトを確認することです。ユーザーの場所を特定するためのセクションがあり、必要なすべてのコード サンプルが含まれています。

http://developer.android.com/guide/topics/location/obtaining-user-location.html

于 2011-07-21T11:27:15.593 に答える