我的情况是,用户一整天都带着他们的平板电脑,为了省电,它的 GPS 或位置可以一直关闭,然后想要使用我的应用程序发布内容,需要他们打开位置,然后在发布时我想获取设备的纬度和经度。使用 LocationManager 获取位置时,它的值为 null。非常感谢您的任何帮助。
我正在使用以下代码来获取位置:
我正在使用以下代码来获取位置:
LocationManager lm = (LocationManager)ctx.getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
根据我的调查,似乎我需要添加一个监听器来更新设备的位置,这样当我获取最后已知的位置时,它不会是空的。但如果在使用应用程序之前设备的位置已关闭,我该怎么办?我想要获取用户在使用应用程序发布时的位置。
编辑:我已将代码更改为下面的样子,但loc始终为空,loc2始终返回位置。为什么会这样呢?
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Location loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location loc2 = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
这是监听器:
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
};