2017-07-03 45 views
2

我正在使用Fused Location Api获取位置更新。 当我设置x秒作为时间间隔,然后我得到onLocationChanged()每x秒后调用。 而当我将10米设置为minimumDisplacement时,onLocationChanged()不会被调用,直到用户从原始位置移动10米。根据时间间隔获取位置更新或位移

但是我需要onLocationChanged()在x秒过去或10米距离覆盖时调用。

任何想法我可以如何实现这一点。

我的代码

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(); 

回答

3

只有位移

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 

通常间隔和距离PARAMS正在与和计算的。这意味着当您至少SMALLEST_DISPLACEMENT米改变您的位置并且至少POLLING_FREQ毫秒已经过去时,则会触发onLocationChanged()

相关问题