我试图在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();
}
答案 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