4

GPS とネットワーク プロバイダーの両方から位置を検出し、Google マップに表示するアプリケーションを実装しようとしています。これは成功しましたが、質問があります。Activity の onCreate() でプロバイダーを取得します (LocationListener を拡張します)。

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
location = locationManager.getLastKnownLocation(provider);

それは正常に動作します。私の問題は、onLocationChange() が呼び出されたときに、それを呼び出したプロバイダーが GPS または NETWORK である場合、別の方法で動作する必要があることです。どちらかを知る方法はありますか?より明確にするために:

が呼び出されたときonLocationChanged(Location location)に、どのプロバイダーが呼び出しを行ったかを知る機会はありますか? プロバイダー文字列でを使用しようとしましたifが、機能しないようです。

4

4 に答える 4

1

精度が<=30mであることを確認します。

boolean isGPS = (location.getAccuracy() <= 30);
于 2013-03-10T12:56:26.123 に答える
1

ロケーションプロバイダー (GPS、WIFI、またはネットワーク) またはその精度を知る必要がありますか?

getAccuracy()

この位置の推定精度をメートル単位で取得します。

精度は 68% 信頼の半径として定義されます。つまり、この場所の緯度と経度を中心とし、精度に等しい半径で円を描くと、68% の確率で真の場所が円の内側にあるということになります。

プロバイダーを本当に気にするなら、おそらくisProviderEnabled().

于 2013-03-10T12:07:40.720 に答える