Google Play服务Locatio API/setSmallestDisplacement无效

Jou*_*use 6 android location

我正在创建一个车辆跟踪系统,它可以从Google Play服务位置API获取位置.我将更新间隔设置为5秒,这样可以在汽车行驶时提供良好的效果.为了避免彼此接近更新,例如当车辆在红绿灯处停下时,我将setSmallestDisplacement(int米)设置为50米.我对此的理解是,如果位置变化至少50米,我应该每5秒获得一次更新.但事实并非如此,因为我几乎每隔5秒就会得到它们,这些位置距离只有几米(这是由于正常的GPS漂移).

问题是,我是否理解setSmallestDisplacement()的效果是错误的,还是它不能正常工作?

相关代码:

private LocationRequest request;
private LocationClient client;
request = LocationRequest.create();
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
request.setInterval(5000);
request.setFastestInterval(1000);
request.setSmallestDisplacement(50);
client = new LocationClient(this, this, this);
if (servicesConnected())
    client.connect();


@Override
public void onConnected(Bundle dataBundle) {
    try {
        gpsConnected = true;
        client.requestLocationUpdates(request, this);
        Log.i(TAG, "Connected to Google Play Services");
    } catch (Exception e) {
        Log.e(TAG, "onConnected", e);
    }
}
Run Code Online (Sandbox Code Playgroud)