如何获取android 7中的当前位置?

时间:2017-09-03 10:56:54

标签: android android-7.0-nougat locationlistener

我试图在Android中获取当前位置并且当我在Android M或更低版本上使用时它可以正常但是当我在android N上运行我的应用程序时,位置为空并且当我想要获得纬度时从它将返回0.这是我的代码

 try {

            if (!isGPSEnabled && !isNetworkEnabled) {
             } else {
                this.canGetLocation = true;
                 if (isNetworkEnabled) {
                    locationManager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    Log.d("Network", "Network");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }
                 if (isGPSEnabled) {
                    if (location == null) {
                        locationManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        Log.d("GPS Enabled", "GPS Enabled");
                        if (locationManager != null) {
                            location = locationManager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();
                            }
                        }
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

2 个答案:

答案 0 :(得分:4)

  

当我在Android M或更低版本

上使用时,它就可以了

不,不是。 getLastKnownLocation()经常会在所有版本的Android上返回null

getLastKnownLocation()是一种优化。使用它,但在onLocationChanged()返回getLastKnownLocation()或过期值时,请准备依赖null

这涵盖在the documentation以及有关Android应用开发的书籍和课程中。

答案 1 :(得分:1)

要获取最后一个已知位置,您只需致电

mLocationClient.getLastLocation(); 一旦定位服务已连接。

阅读如何使用新的位置API

http://developer.android.com/training/location/retrieve-current.html#GetLocation