web-dev-qa-db-ja.com

Androidロケーションプロバイダー-GPSまたはネットワークプロバイダー?

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

  1. さまざまなロケーションプロバイダーがありますが、どれが最も正確ですか? GPSプロバイダー または ネットワークプロバイダー

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

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

117
Noman

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

彼らです:

gps –>(GPS、AGPS):GPSロケーションプロバイダーの名前。このプロバイダーは、衛星を使用して場所を特定します。条件によっては、このプロバイダーが位置修正を返すまでに時間がかかる場合があります。許可Android.permission.ACCESS_FINE_LOCATIONが必要です。

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

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

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

enter image description here

記事リファレンス: Androidロケーションプロバイダー-GPS、ネットワーク、パッシブBy Nazmul Idris

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

-----------------------更新----------------- ------

Android haveFused location provider

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

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

262

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

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

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

7
Otra

ここにいくつかの素晴らしい答えがあります。別の方法として、Atooma、tranql、Neuraなどのオンラインで入手可能な無料のSDKを使用して、Androidアプリケーションと統合できます(統合に20分もかかりません)。ユーザーの正確な位置情報を提供するだけでなく、ユーザーのアクティビティに関する優れた洞察も得られます。また、それらの一部はバッテリーの1%未満しか消費しません

3
johndaly