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);
,然后使用新的时间间隔重新注册更新。
它的工作原理,我把它放在检查后的onLocationChanged中,但它无限循环,它启动GPS并在每秒钟后关闭它。所以gps图标不断闪烁,我每秒得到一个坐标。 – McDermott 2011-06-14 08:28:20
也许你应该改变你的“我是否移动”条件,因为即使你静止或者LocationProvider不支持速度(因为'location.getSpeed()> = 0'),这将返回true。也许这应该是'location.getSpeed()> = 0.5',这样它就不会因为小动作而不断激烈。也许你也应该首先检查'location.hasSpeed()'。 – 2011-06-14 08:36:34
我试过location.hasSpeed()和location.getSpeed()> = 1,但我仍然每秒得到一个坐标。我想当我调用一个新的requestLocationUpdates时,它立即调用onLocationChanged它连接到一个gps提供程序,所以这就是为什么它循环。 – McDermott 2011-06-14 08:54:08