我想从用户设备收集Latitude and Longitude
。
有多种方法可以做到这一点。现在正在从Google's API
< --- SO答案。
现在还有多种方法可以检查提供商,即GPS或网络提供商,并使用LocationListener
收集位置并收集数据。
示例代码为this< ---再次为SO答案。
他们两个都在工作,但我的问题是,如果用户已经给出了位置权限,然后从设置中转了Location
服务,该怎么办?在这种情况下,我只想从网络提供商处收集lat / lang。
但是当我在关闭位置后尝试上述代码时
requestLocationUpdates
每次返回null
位置。
基本上我想要通过选项来收集纬度/经度。
1→ Google Api(位置开启时) 2→ LocationMangaer(当位置开启时) 3→从蜂窝塔获取lat / lang(当位置关闭时,wifi关闭,GPS关闭)
答案 0 :(得分:0)
private boolean gps_enabled = false;
private boolean network_enabled = false;
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (network_enabled) {
getLocationDataByMobileNetwork();
} else if (gps_enabled) {
getLocationDataByGPS();
}
private void getLocationDataByMobileNetwork() {
try {
appLocationService = new AppLocationService(getApplicationContext());
Location nwLocation = appLocationService.getLocation(LocationManager.NETWORK_PROVIDER);
if (nwLocation != null) {
latitude = nwLocation.getLatitude();
longitude = nwLocation.getLongitude();
} else {
Toast.makeText(getApplicationContext(),"(Network):not fetched your location",Toast.LENGTH_LONG).show();
}
} catch (Exception ex) {
Toast.makeText(getApplicationContext()," (Network) in Exception:not fetched your location",Toast.LENGTH_LONG).show();
}
}
private void getLocationDataByGPS() {
try {
Location gpsLocation = appLocationService.getLocation(LocationManager.GPS_PROVIDER);
if (gpsLocation != null) {
latitude = gpsLocation.getLatitude();
longitude = gpsLocation.getLongitude();
} else {
}
} catch (Exception ex) {
}
}