问题描述
我正在使用Fused Location Api获取位置更新.当我将x秒设置为时间间隔时,每隔x秒就会调用一次onLocationChanged().而且,当我将10米设置为minimumDisplacement时,直到用户从其原始位置移动10米后,才会调用onLocationChanged().
I am using Fused Location Api to get location updates.When I set x seconds as time interval then I got onLocationChanged() called after every x seconds.And when I set 10 meter as minimumDisplacement then onLocationChanged() is not called until user moves 10 meter from its original position.
但是当经过x秒或覆盖10米距离时,我需要调用onLocationChanged().
But I need to have onLocationChanged() called when either x seconds passed or 10 meter distance covered.
我知道如何实现这一目标.
any idea how I can achieve this.
我的代码
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()
.
Normally interval and distance params are being calculated with AND. It means when you change your position at least SMALLEST_DISPLACEMENT meter AND at least POLLING_FREQ milliseconds have passed, then onLocationChanged()
will be fired.
这篇关于根据时间间隔或位移获取位置更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!