2013-10-29 22 views

回答

1

更新:下面的答案將只提供GPS或網絡作爲提供者。這是一個類似的問題,可能有幫助。 How to know the positioning mode is WIFI or 2G/3G cell tower in Android?

您是否使用LocationListener中的onLocationChanged方法來獲取座標?如果是這樣,您可以使用location.getProvider()方法獲取提供者。

LocationListner locationListner = new LocationListener(){ 
    public void onLocationChanged(Location location){ 
     String provider = location.getProvider(); 
    } 
} 
+0

你確定我可以使用?因爲據我看到的選項有「GPS」和「網絡」。 –

+0

你說得對。我的回答只會給你全球定位系統或網絡。 「功夫」認爲他是答案.. http://stackoverflow.com/a/14558518/770061 – bradley4

+0

我會檢查另一個問題的代碼,並讓你知道。 –

2

你可以問與

public void onLocationChanged(Location location){ 
    String provider = location.getProvider(); 
} 

ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); 
    //android.net.NetworkInfo 
    NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    NetworkInfo mobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 


     if(wifi.isAvailable() && wifi.getDetailedState() == DetailedState.CONNECTED) 
      locationProvider = LocationManager.NETWORK_PROVIDER; 
     else //check if it is a tablet without 3G connection 
      if(mobile!=null){ 
       if(mobile.isAvailable() && mobile.getDetailedState() == DetailedState.CONNECTED) 
        locationProvider = LocationManager.PASSIVE_PROVIDER; 
      } 
+0

爲什麼PASSIVE_PROVIDER設置在這裏以防萬一移動網絡可用? –

+0

以防萬一,如果您的應用程序中最重要的是從WIFI獲得連接,但它不可用,可能會連接到3G。 – ziniestro

相關問題