我正在开发一个Android应用程序,其中当前和精确的位置是关键。检测到GPS定位后,它将移至下一个活动。
问题是我在户外进行了测试,发现有时它只是使用了之前修复的位置。
所以我要问的是什么;有什么其他逻辑可以从LocationManager获取位置而不是getLastKnownLocation吗?我还没有找到一个看起来不像
的例子 Location location = locationManager.getLastKnownLocation(provider);
感谢名单!
答案 0 :(得分:2)
您可以使用LocationListener然后调用locationManager.requestLocationUpdates()
传递您自己的侦听器实现。
答案 1 :(得分:2)
以下是official guide的示例代码(稍加修改):
// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
makeUseOfNewLocation(location);
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
在这里,您只需从GPS请求更新,一旦收到位置,您就会收到回拨电话。
答案 2 :(得分:1)
Google发布了新的Location API,请查看此链接https://developer.android.com/training/location/index.html,
对于您的问题,您需要实现位置更新回调以获取当前位置。 https://developer.android.com/training/location/receive-location-updates.html