2

Androidには、GPSとネットワークの2つの測位モードがあることがわかっています。ネットワークを使用する場合、AndroidはWIFIまたは2G/3Gセルタワーを使用して配置できます。GPSがなくても、LocationManager.NETWORK_PROVIDERを使用して位置データを取得できます。しかし、モードがWIFIまたは2G /3Gセルタワーであることを正確に知るにはどうすればよいでしょうか。Androidは、WIFIとセルタワーに個別のプロバイダーを提供していません。

方法を考えました。しかし、それが正しいかどうかはわかりません。確認してコメントしてください:

  1. WIFIホットスポットリストを取得できるかどうかを確認します。リストに何もない場合は、セルタワーを使用する必要があります。
  2. いくつかのWIFIホットスポットがあり、精度が高い(<= 100m)場合は、おそらくWIFIが使用されます。精度が低い場合でも、セルタワーを使用していますか?

私の理解では、WIFIポジショニングの精度は比較的高いです。しかし、それの精度の通常の範囲は何ですか?別の質問ですが、AndroidはWIFIとセルタワーを同時に使用していますか?もしそうなら、私のアプリケーションでは、セルタワーではなくWIFIを使用していると思います。

ありがとう!

4

2 に答える 2

5

実際、これを行う方法があります。文書化されているだけでなく、予告なしに変更される場合があります。ネットワークロケーションプロバイダーのロケーション更新追加データを介して、使用済みロケーション推定方法を取得できます。

Bundle extras = location.getExtras();
if (extras.containsKey("networkLocationType")) {
    String type = extras.getString("networkLocationType");
    if (type .equals("cell")) {
        // Cell (2G/3G/LTE) is used.
    } else if (type .equals("wifi")) {
        // Wi-Fi is used.
    }
}
于 2013-01-28T08:57:46.433 に答える
3

これは正しいです。Androidは、ネットワークの場所がどのように計算されるかを明示的に判断する方法を提供していません。ネットワークプロバイダーの原則は、デバイス上のすべての関連データを収集し、それをすべてGoogleサーバーに送信することです。ここで、現在地が計算され、返送されます。よくわかりませんが、ネットワークロケーションでは、加速度計/ジャイロ/コンパスデータを使用して、ロケーションの精度を向上させることもできます。特に、ロケーションを継続的に計算する場合はそうです。ですから、セルタワーとWifi情報を同時に利用できると思います。

ほとんどの場合、精度の方法は機能するはずですが、100%信頼できるわけではありません。

もう1つの可能性は、Wi-Fiをオフにして、最初の場所の修正を計算してから、もう一度オンにして、もう一度試してみることです。2つの場所とその精度の見積もりを比較することで、現在の場所のロケーションエンジンに対するwifiの影響を推測できます。

好奇心から、なぜこれが必要なのですか?

于 2012-05-18T01:19:25.297 に答える