1. ホーム
  2. android

[解決済み] Androidの位置情報プロバイダー - GPSかネットワークプロバイダーか?

2022-06-17 03:54:56

質問

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

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

  2. 利用可能なプロバイダーはどこまで違うのでしょうか?どのように機能するのでしょうか?

  3. 私のアプリケーションにGPS機能を実装するために、どのように始めるかについて、いくつかのコードスニペットまたはチュートリアルを提供していただけませんか?

どのように解決するのですか?

<ブロッククオート

Androidには、3つの位置情報プロバイダがあります。

それらは

gps ->(GPS、AGPS)です。 GPSロケーションプロバイダの名前。この このプロバイダは衛星を使用して位置を決定します。条件によっては このプロバイダは衛星を利用して位置情報を取得しますが、条件によっては位置情報の取得に時間がかかる場合があります。 android.permission.ACCESS_FINE_LOCATION のパーミッションが必要です。

ネットワーク -> (AGPS, CellID, WiFi MACID)。 ネットワーク名 ロケーションプロバイダです。このプロバイダは、セルタワーとWiFiアクセスポイントの利用可能性に基づいて セルタワーやWiFiのアクセスポイントに基づいて位置を決定します。結果は ネットワーク・ルックアップによって取得される。以下のいずれかが必要です。 android.permission.ACCESS_COARSE_LOCATION のいずれかのパーミッションが必要です。 android.permission.ACCESS_FINE_LOCATION のいずれかが必要です。

passive ->(CellID、WiFi MACID)です。 位置情報を受信するための特別なプロバイダーです。 実際に位置の修正を開始することなく、位置を受信するための特別な位置プロバイダです。この このプロバイダは、他のアプリケーションやサービスが位置情報の更新を要求したときに、実際に要求することなく受動的に位置情報を受信するために使用することができます。 このプロバイダは、他のアプリケーションやサービスが位置情報の更新を要求したときに、実際に位置情報を要求することなく を受信するために使用できる。このプロバイダは、他のプロバイダが生成した位置を返す。 他のプロバイダが生成した位置を返す。パーミッションが必要です。 GPSが有効でない場合、このプロバイダは粗い位置情報しか返さないかもしれません。 しかし、GPSが有効でない場合、このプロバイダは粗い固定値しか返さないかもしれません。これは Androidでは、このような位置情報プロバイダをこう呼んでいます。 このようなものを動作させるための基礎となる技術は、特定のハードウェアと通信会社が提供する機能(ネットワーク)にマッピングされます。 ハードウェアと通信事業者が提供する機能 (ネットワーク サービス) にマッピングされます。


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

記事参照: Androidの位置情報プロバイダー - gps、ネットワーク、パッシブ By Nazmul Idris

コードの参照: https://stackoverflow.com/a/3145655/28557

-----------------------Update-----------------------

現在、Androidは 融合型ロケーションプロバイダ

Fused Location Provider は、基盤となる位置情報技術をインテリジェントに管理し、ニーズに合わせて最適な位置を提供します。アプリがユーザーの現在地を取得する方法を簡素化し、精度を向上させ、消費電力を抑えます。

Fused Location Provider は、位置情報を取得するための 3 つの方法を提供します。

  1. 最後の位置情報です。 現在地を一度知りたいときに使用します。
  2. Listenerを使って位置情報を取得します。 アプリケーションが画面上/フロントエンドにあり、継続的な位置情報を必要とするときに使用します。
  3. Pending Intentを使用して位置情報を要求します。 バックグラウンドのアプリケーションで、継続的に位置情報を要求する場合に使用します。

リファレンス。

公式サイト 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

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