【发布时间】:2013-03-25 21:45:06
【问题描述】:
我试图在不同的间隔范围内尽可能精确地获得 gps 位置,我几乎没有外部 gps,10hz、5hz 和 1hz
LocationManager locationManager = (LocationManager)
car.this.getSystemService(car.this.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
locationListener);
通过这种方式,我可以在匀速行驶时获得这样的日志更新
10hz GPS
81ms new position
79ms new position
88ms new position
96ms new position
196ms new positon
60ms new positon
256ms new position
70ms new position
5 hz GPS
187ms new...
189ms ..
275ms ..
140ms ..
180ms ..
220ms ..
所以我认为 onStatusChanged 最初比标称频率快,但随后饱和并导致大跳跃
如果我使用计时器,它工作得很好,我每 100 毫秒(200 或 1000)获得一次位置,但计时器每 10 秒关闭大约 100 毫秒
编辑:为了澄清,我想在每个精确(或接近)100ms、200ms 或 1000ms 时获得一个位置
**12-04-13 更新
在重做我的代码以使用 location.getTime() 后,这是结果,所有测试均在外部进行,以中/高速进行,并在 10 分钟内为每个设备进行记录
HTC Sensation Z710e 4.0.3 Internal GPS 1HZ
Average Accuracy: 12.1m
Average intertval: 1186ms
Min: 98ms
Max: 2621ms
HTC Desire HD 4.0.4 Internal GPS 1HZ
Average Accuracy: 10.6m
Average intertval: 1211ms
Min: 144ms
Max: 2588ms
ASUS Transformer TF101 4.0.4 Internal GPS 1HZ
Average Accuracy: 18.15m
Average intertval: 1000MS
Min: 1000ms
Max: 1000ms
SAMSUNG NOTE II GT-N7100 4.1.2 Internal GPS 1HZ (Glonass)
Average Accuracy: 6.8m
Average intertval: 1000MS
Min: 1000ms
Max: 1001ms
SAMSUNG, HTC OR ASUS with external GPS 5HZ
Average Accuracy: 2.2m
Average intertval: 200MS
Min: 200ms
Max: 200ms
SAMSUNG, HTC OR ASUS with external GPS 10HZ (Glonass)
Average Accuracy: 1.6m
Average intertval: 100MS
Min: 100ms
Max: 100ms
【问题讨论】:
-
API 让您能够指定在收到下一次更新之前必须经过的最短时间和最短距离。但是,它不能让您指定接收 GPS 更新的时间间隔。
标签: java android timer gps refresh