在使用Android的LocationManager.requestLocationUpdates时,如果设备明显移动时仍然收到相同的位置更新,可以尝试使用以下解决方法:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
在上面的示例中,位置更新的间隔为5秒,最小距离为10米。根据需要进行调整。
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 10, locationListener);
在上面的示例中,同时请求了GPS_PROVIDER和NETWORK_PROVIDER提供的位置更新。
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// 在位置监听器中获取新的位置更新
LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// 比较新的位置和lastKnownLocation,确定设备是否移动
}
};
在上面的示例中,可以将getLastKnownLocation方法返回的位置与新的位置进行比较,如果位置有明显的差异,则可以确定设备移动了。
以上是一些常见的解决方法,可以根据具体情况选择适合的方法来解决Android的LocationManager.requestLocationUpdates在设备明显移动时仍然发出相同位置的问题。
上一篇:Android的LocationListener,在onStatusChanged和onProviderDisabled上抛出AbstractMethodError错误。
下一篇:系统架构设计师教程 pdf