6

我正在创建一个车辆跟踪系统,它从 Google Play Services Location API 获取位置。我将更新间隔设置为 5 秒,这在汽车行驶时提供了良好的效果。为了避免更新彼此靠近,例如当车辆停在红绿灯处时,我将 setSmallestDisplacement(int Meters) 设置为 50m。我对此的理解是,如果位置至少改变了 50m,我应该每 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);
    }
}
4

0 回答 0