2012-02-29 4 views
2

私は場所を使用するアプリケーションで作業しています。locationManager.getBestProvider

私の問題:
私は最高のプロバイダを探しているとき、私は "ネットワーク"を取得します。
私は理由を知っていますが、これを改善する方法がわかりません。
ロケーション設定で、「パラメータ - >場所」と「セキュリティ設定 - >ワイヤレスネットワークを使用」をチェックすると、LocationManager.getBestProvider()はネットワークのみを返します。チェックされておらず、GPSがアクティブな場合、getBestProviderはGPSを返します。

私がしたいことは次のとおりです。
両方のオプションをオンにすると、ネットワークの代わりにGPSを使用する/検出する方法をロケーションプロバイダとして使用します。

答えて

2

まず、GPSがオンかどうかを確認する必要があります。それがオンの場合、ネットワークから位置を取得しない場合、GPSから位置を取得します。 GPSステータスの使用を確認するには

manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
+0

おかげManeesh、 しかし、アプリケーションの間では実行されている、GPSのステータスが無効になっているが、停止、または衛星かかわりがよくありませんが、 statusOfGPSはfalseになります? – Ivory

+0

gpsがオンの場合はGPSのステータスは常に真ですが、gapllocationlistenerで場所を取得できます。もしstaelliteがその場所を指定していない場合は、LastGapLocationを使用でき、GPSの場所もネットワークの場所より正確です。いくつかの10から20メートルの位置の違いは常にGPSの場所で非常にです – Maneesh

+0

あなたが何を意味する参照してください、しかし私の最後の質問になります: どのように衛星が場所を与えていない場合を検出するには?私のコードで 、iがonGpsStatusChanged(イベント)におけるそれらのラインを有する: スイッチ(イベント) {場合GpsStatus.GPS_EVENT_FIRST_FIX: ブレーク。 case GpsStatus.GPS_EVENT_SATELLITE_STATUS: break; case GpsStatus.GPS_EVENT_STARTED: break; case GpsStatus.GPS_EVENT_STOPPED: break; }これは ですが、サテライトで何かが受信された場合は検出できますが、何も受信していない場合は、この場合は一度も表示されませんか? それはありませんか? – Ivory

関連する問題