仅在关闭位置设置时才从网络获取lat长

时间:2016-09-15 12:46:44

标签: android geolocation

我想从用户设备收集Latitude and Longitude

有多种方法可以做到这一点。现在正在从Google's API< --- SO答案。

收集lat / lang

现在还有多种方法可以检查提供商,即GPS或网络提供商,并使用LocationListener收集位置并收集数据。

示例代码为this< ---再次为SO答案。

他们两个都在工作,但我的问题是,如果用户已经给出了位置权限,然后从设置中转了Location服务,该怎么办?在这种情况下,我只想从网络提供商处收集lat / lang。

但是当我在关闭位置后尝试上述代码时

enter image description here我得到null作为位置。

requestLocationUpdates每次返回null位置。

基本上我想要通过选项来收集纬度/经度。

1→ Google Api(位置开启时) 2→ LocationMangaer(当位置开启时) 3→从蜂窝塔获取lat / lang(当位置关闭时,wifi关闭,GPS关闭)

1 个答案:

答案 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) {

    }

}