我需要找到超时的用户位置,然后我写了这样的代码
启动LocationListener
GPSLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
_timerGPSLocation.cancel();
}
@Override
public void onStatusChanged(String provider, int status, Bundle b) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
_locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance, _GPSLocationListener);
`
为超时设置计时器
_timerGPSLocation = new Timer();
_timerGPSLocation.schedule( new TimerTask() {
@Override
public void run() {
_locationManager.removeUpdates(_GPSLocationListener);
}
}, (long)(timeout*1000) );
我认为这样做(尝试读取坐标并设置超时计时器)可以让GPS联系一些卫星并给我正确的位置。 这样做有更好的方法吗? 在超时时调用_locationManager.removeUpdates将删除所有联系的卫星?
编辑:
我的目标是定期(5分钟)阅读GPS。我还需要设置超时,同时尝试使用GPS读取来获取位置。如果在超时后没有读取位置,我需要停止位置监听器。我在这里使用代码监听实现了这一点。
现在我的问题是如果删除LocationListener,因为它进入超时状态会导致GPS和卫星之间失去“确认”。
答案 0 :(得分:1)
安排计时器可以用于您正在尝试的操作。类似地,您可以使用处理程序并将其传递给线程或Looper对象。如在
Handler h = new Handler();
h.postDelayed(Runnable r, long millis);
有了这个,您还可以延迟发布一个可运行的,即线程或活套,以取消位置更新。
编辑:postDelayed用于在一定延迟后运行runnable。 postAtTime在程序的某个正常运行时间发布