如果我使用的LocationManager.NETWORK_PROVIDER
是有没有办法知道触发的位置是onLocationChanged
来自 WiFi 连接还是来自手机信号塔连接?
问问题
733 次
2 回答
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;
}
于 2013-10-30T00:25:18.220 回答
1
更新:以下答案将仅提供 GPS 或网络作为提供商。这是一个类似的问题,可能会有所帮助。 Android中如何知道定位模式是WIFI还是2G/3G基站?
您是否在 LocationListener 中使用 onLocationChanged 方法来获取坐标?如果是这样,您可以使用 location.getProvider() 方法来获取提供程序。
LocationListner locationListner = new LocationListener(){
public void onLocationChanged(Location location){
String provider = location.getProvider();
}
}
于 2013-10-30T00:10:27.040 回答