如果我使用LocationManager.NETWORK_PROVIDER
有沒有辦法知道觸發onLocationChanged
的位置是來自WiFi連接還是來自蜂窩塔連接?我可以區分WiFi和Cell Tower的位置嗎?
在此先感謝。
如果我使用LocationManager.NETWORK_PROVIDER
有沒有辦法知道觸發onLocationChanged
的位置是來自WiFi連接還是來自蜂窩塔連接?我可以區分WiFi和Cell Tower的位置嗎?
在此先感謝。
更新:下面的答案將只提供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();
}
}
你可以問與
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;
}
爲什麼PASSIVE_PROVIDER設置在這裏以防萬一移動網絡可用? –
以防萬一,如果您的應用程序中最重要的是從WIFI獲得連接,但它不可用,可能會連接到3G。 – ziniestro
你確定我可以使用?因爲據我看到的選項有「GPS」和「網絡」。 –
你說得對。我的回答只會給你全球定位系統或網絡。 「功夫」認爲他是答案.. http://stackoverflow.com/a/14558518/770061 – bradley4
我會檢查另一個問題的代碼,並讓你知道。 –