requestLocationUpdates中的更新间隔

问题描述:

如何更新时间间隔和距离间隔,或以不同的间隔再次调用requestLocationUpdates?requestLocationUpdates中的更新间隔

我的代码:

LocationManager locationManager = (LocationManager) activityObject.getSystemService(Context.LOCATION_SERVICE); 

    cll = new CheckinLocationListener(); 

    LocationProvider gps = locationManager.getProvider(LocationManager.GPS_PROVIDER); 

    // GPS 

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, timeDelay, distanceDelay, cll); 

    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

onLocationChanged:

if(location.getSpeed()>=0 && location.getSpeed()<= 3) 
      { 
       LocationsModel.this.distanceDelay = 25; 
       LocationsModel.this.timeDelay = 10000; 
      } 
      else if(location.getSpeed()>=3 && location.getSpeed()<= 17) 
      { 
       LocationsModel.this.distanceDelay = 150; 
       LocationsModel.this.timeDelay = 60000; 
      } 
      else if(location.getSpeed()>=17) 
      { 
       LocationsModel.this.distanceDelay = 300; 
       LocationsModel.this.timeDelay = 240000; 
      } 

我想在下一小节使用新的区间。

您需要先拨打locationManager.removeUpdates(cll);,然后使用新的时间间隔重新注册更新。

+0

它的工作原理,我把它放在检查后的onLocationChanged中,但它无限循环,它启动GPS并在每秒钟后关闭它。所以gps图标不断闪烁,我每秒得到一个坐标。 – McDermott 2011-06-14 08:28:20

+0

也许你应该改变你的“我是否移动”条件,因为即使你静止或者LocationProvider不支持速度(因为'location.getSpeed()> = 0'),这将返回true。也许这应该是'location.getSpeed()> = 0.5',这样它就不会因为小动作而不断激烈。也许你也应该首先检查'location.hasSpeed()'。 – 2011-06-14 08:36:34

+0

我试过location.hasSpeed()和location.getSpeed()> = 1,但我仍然每秒得到一个坐标。我想当我调用一个新的requestLocationUpdates时,它立即调用onLocationChanged它连接到一个gps提供程序,所以这就是为什么它循环。 – McDermott 2011-06-14 08:54:08