找到超时的用户位置

时间:2013-01-19 00:37:43

标签: android gps

我需要找到超时的用户位置,然后我写了这样的代码

  1. 启动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);
    

    `

  2. 为超时设置计时器

    _timerGPSLocation = new Timer();
    _timerGPSLocation.schedule( new TimerTask() {
    
    @Override
    public void run() {
        _locationManager.removeUpdates(_GPSLocationListener);
    }
    
    }, (long)(timeout*1000) ); 
    
  3. 我认为这样做(尝试读取坐标并设置超时计时器)可以让GPS联系一些卫星并给我正确的位置。 这样做有更好的方法吗? 在超时时调用_locationManager.removeUpdates将删除所有联系的卫星?

    编辑:

    我的目标是定期(5分钟)阅读GPS。我还需要设置超时,同时尝试使用GPS读取来获取位置。如果在超时后没有读取位置,我需要停止位置监听器。我在这里使用代码监听实现了这一点。

    现在我的问题是如果删除LocationListener,因为它进入超时状态会导致GPS和卫星之间失去“确认”。

1 个答案:

答案 0 :(得分:1)

安排计时器可以用于您正在尝试的操作。类似地,您可以使用处理程序并将其传递给线程或Looper对象。如在

Handler h = new Handler();

h.postDelayed(Runnable r, long millis);

有了这个,您还可以延迟发布一个可运行的,即线程或活套,以取消位置更新。

编辑:postDelayed用于在一定延迟后运行runnable。 postAtTime在程序的某个正常运行时间发布