我正在创建一个车辆跟踪系统,它从 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);
}
}