开发一个应用程序,通过使用Handler每秒进行一次场信号强度计算,在处理程序期间,它记录坐标并记录结果&坐标。它工作正常,除非是真正的测试,当我提高车辆的速度时,记录的坐标不是每秒,而有些时候每2-3-4秒,这是我不接受的。 以下代码:
final LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
publicvoid method_01(LocationManager locationManager){
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Location locationDataRate = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double latitude = locationDataRate.getLatitude();
double longitude = locationDataRate.getLongitude();
x=y+1;
Save to file (latitude,longitude,x);
handler.postDelayed(this, 1000);
}
}, 1000);
}
我也试过改变时间和分钟。距离(1000,0)
答案 0 :(得分:0)
首先,如果您希望每1秒钟收到一次更新,则不应请求更频繁的更新。因此:
ps -ef | grep java | grep dev | kill -9 `awk '{print $2}'`
无论如何,处理位置更新的最佳做法不是持续循环locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);
,而是实现位置更新的回调。有一组示例here。
对于您的问题,在doc中,他们声明更新之间的间隔从未得到保证:
可以使用minTime控制位置更新间隔 参数。位置更新之间经过的时间永远不会 小于minTime,虽然它可能更多取决于位置 提供程序实现和其他请求的更新间隔 应用