2012-03-07 16 views
0

私のアプリケーションでは、ユーザーの位置を取得してマップ(Googleマップ)に表示したいと考えています。ユーザが、私は、ユーザーが取得するために選択することができますウィッヒでダイアログを表示mapactivityを開始するとAndroidデバイスの設定で あなたはAndroidのGoogleマップでGPSの位置を使用しない

  1. 使用ワイヤレスネットワーク
  2. GPS機能を使用

を確認することができます彼の現在の位置かどうか。

Old code deleted 

ユーザーが自分の場所を取得したい場合は、gpsが有効かどうかを確認します。そうでない場合は、設定を開始します。それ以外の場所を取得しようとします。しかし、GPSがアクティブで「ワイヤレスネットワークを使用」していても、彼は場所を取得しません。 「ワイヤレスネットワークを使用する」が有効になっているかどうかを確認するソリューションはありますか? GPS信号だけで位置を取得するには、コードのどの部分を変更する必要がありますか?

おかげ

EDITのmycurrentcode:

boolean isGps = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); 
       boolean isNetwork = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

       if(!isGps && !isNetwork){ 
        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
        startActivity(intent); 
       } else if(isGps && !isNetwork) { 
        String bestProvider = LocationManager.GPS_PROVIDER; 
        Location location = lm.getLastKnownLocation(bestProvider); 


        Toast.makeText(MapsTabActivitiy.this, "Location niet beschikbaar.", Toast.LENGTH_SHORT).show(); 
       } else if(!isGps && isNetwork) { 
        String bestProvider = LocationManager.NETWORK_PROVIDER; 
        Location location = lm.getLastKnownLocation(bestProvider); 

        if(location == null){ 
         location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
        } else if (location != null){ 
         mapcontroller.animateTo(new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6))); 
         mapcontroller.setZoom(15); 
        } 
       } 
       else { 
        Criteria criteria = new Criteria(); 
        criteria.setAccuracy(Criteria.ACCURACY_FINE); 
        String bestProvider = lm.getBestProvider(criteria, false); 
        Location location = lm.getLastKnownLocation(bestProvider); 

        if(location == null){ 
         location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
        } else if (location != null){ 
         mapcontroller.animateTo(new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6))); 
         mapcontroller.setZoom(15); 
        } 
       } 

だから私はGPS_PROVIDERとNETWORK_PROVIDERためisProviderEnabledに確認してください。そしてifと、もし私が場所を得る方法を変えれば。私が見つける必要がある唯一のケースはケース2です(else if(isGps & &!isNetwork){})。 GPS信号で位置を取得します。

答えて

0

Criteriaクラスを使用して適切なプロバイダを取得していますが、LocationManager.GPS_PROVIDERを使用してGPSのみを使用して位置の更新を要求することは簡単です。このことができます

String bestProvider = lm.getBestProvider(criteria, false); 

String bestProvider = LocationManager.GPS_PROVIDER; 

への希望を変更します。

+0

"無線ネットワークを使用する"がチェックされていても彼は私の場所を見つけられません。 –

+0

@TimonDevosそして "gps satelliteを使用しています"がチェックされていますか? – Egor

+0

しかし、私はデバイスが実行時により正確な場所を選択するようにしたい。 LocationManager.GPS_PROVIDERを使用すると、デバイスは選択されませんか? NETWORK_PROVIDERが有効になっていない場合にのみGPS¨PROVIDERから位置を取得する必要があります。 –

関連する問題