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


128

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

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

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

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


18
再開の投票-質問は適切であり、提供された回答は有用です。フューズドロケーションプロバイダーが存在するため、回答も古くなっています。質問を開くと更新できます。
Richard Le Mesurier、2014

回答:


281

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、ネットワーク、パッシブNazmul Idris

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

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

Androidが融合した位置情報プロバイダーになりました

融合型ロケーションプロバイダーは、基盤となるロケーションテクノロジーをインテリジェントに管理し、ニーズに応じて最適なロケーションを提供します。アプリがユーザーの現在位置を取得する方法を簡素化し、精度を高め、電力使用量を削減します

融合位置プロバイダーは、位置を取得する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

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


2
使用できるGoogle Play Services Fused Locatorプロバイダーもあることに注意してください。
Richard Le Mesurier 2014

独自のカスタム位置情報プロバイダーを作成することは可能ですか?android.permission.INSTALL_LOCATION_PROVIDERが署名されているか、システムがルート化されたデバイスにインストールできる必要があることを意味します。
JohnyTex 2014年

1
融合型位置情報プロバイダーは、APIが19以上の場合のみ利用できます。古いバージョンを実行しているデバイスでは、古い手順に従う必要がありますよね?
Shobhit Puri 2014

GPSが場所の取得に失敗した場合に、GPSの場所を探し、しばらくしてからネットワークプロバイダーにフォールバックするサンプルコード/既存のAPIはありますか?またはそれはいくつかのタイマーロジックによってコードで処理されるべきですか?
jrhamza

パッシブプロバイダー "" "このプロバイダーは、他のアプリケーションまたはサービスが実際に位置情報を要求せずに要求したときに、位置情報の更新を受動的に受信するために使用できます。" ""
nurisezgin

7

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

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

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


@Noman現在地の経度と緯度を取得しますか?
Nikunj Patel

@Scorpio私は実際にどのオプションがNETWORK PROViDERとGPS PROVIDERのどちらが優れているか知りたいと思っていました。。.Otraが私の質問への回答としてリンクを送ってくれたので、ああ、助けてくれました...今、アプリでNETWORK PROVIDERを使用しています:-)
Noman

3

ここで言及されているいくつかの素晴らしい答えがあります。あなたが取ることができる別のアプローチは、Androidアプリケーションと統合できるAtooma、tranql、Neuraなどのオンラインで利用可能ないくつかの無料のSDKを使用することです(統合に20分もかかりません)。ユーザーの正確な場所を提供するだけでなく、ユーザーのアクティビティについての良い洞察も得られます。また、それらのいくつかはあなたのバッテリーの1%未満を消費します


1
あなたが言及しているSDKへの参照を取得できますか?
Kishore Relangi 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.