根据时间间隔或位移获取位置更新
Getting Location Updates based on time interval or Displacement
我正在使用 Fused Location Api 来获取位置更新。
当我将 x 秒设置为时间间隔时,我会在每 x 秒后调用一次 onLocationChanged() 。
当我将 10 米设置为 minimumDisplacement 时,直到用户从其原始位置移动 10 米后才会调用 onLocationChanged()。
但我需要在经过 x 秒或覆盖 10 米距离时调用 onLocationChanged()。
知道如何实现这一点。
我的代码
private Location mLastLocation;
public static final int REQUEST_LOCATION = 1006;
LocationRequest mLocationRequest;
private static final long POLLING_FREQ = 1000 * 10;
private static final long FASTEST_UPDATE_FREQ = 1000 * 10;
private static final long SMALLEST_DISPLACEMENT = 10;
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(POLLING_FREQ);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_FREQ);
mLocationRequest.setSmallestDisplacement(SMALLEST_DISPLACEMENT);
startLocationUpdates();
仅针对位移
mLocationRequest.setInterval(0);
mLocationRequest.setFastestInterval(0);
mLocationRequest.setSmallestDisplacement(SMALLEST_DISPLACEMENT);
仅限区间
mLocationRequest.setInterval(POLLING_FREQ);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_FREQ);
mLocationRequest.setSmallestDisplacement(0); // Not needed, already default value is 0
通常间隔和距离参数是用AND计算的。这意味着当你改变你的位置至少 SMALLEST_DISPLACEMENT 米并且至少 POLLING_FREQ 毫秒已经过去时,然后 onLocationChanged()
将被解雇。
我正在使用 Fused Location Api 来获取位置更新。 当我将 x 秒设置为时间间隔时,我会在每 x 秒后调用一次 onLocationChanged() 。 当我将 10 米设置为 minimumDisplacement 时,直到用户从其原始位置移动 10 米后才会调用 onLocationChanged()。
但我需要在经过 x 秒或覆盖 10 米距离时调用 onLocationChanged()。
知道如何实现这一点。
我的代码
private Location mLastLocation;
public static final int REQUEST_LOCATION = 1006;
LocationRequest mLocationRequest;
private static final long POLLING_FREQ = 1000 * 10;
private static final long FASTEST_UPDATE_FREQ = 1000 * 10;
private static final long SMALLEST_DISPLACEMENT = 10;
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(POLLING_FREQ);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_FREQ);
mLocationRequest.setSmallestDisplacement(SMALLEST_DISPLACEMENT);
startLocationUpdates();
仅针对位移
mLocationRequest.setInterval(0);
mLocationRequest.setFastestInterval(0);
mLocationRequest.setSmallestDisplacement(SMALLEST_DISPLACEMENT);
仅限区间
mLocationRequest.setInterval(POLLING_FREQ);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_FREQ);
mLocationRequest.setSmallestDisplacement(0); // Not needed, already default value is 0
通常间隔和距离参数是用AND计算的。这意味着当你改变你的位置至少 SMALLEST_DISPLACEMENT 米并且至少 POLLING_FREQ 毫秒已经过去时,然后 onLocationChanged()
将被解雇。