有没有办法指定位置管理器广播当前位置的时间间隔?
我正在使用一个名为startListening的方法:
public void startListening() {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0,
0,
this
);
}
由于
答案 0 :(得分:5)
public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener, Looper looper)
注册指定提供商定期通知的当前活动。将定期使用当前位置或状态更新来调用提供的LocationListener。
收到最近的位置可能需要一段时间。如果需要立即位置,应用程序可以使用getLastKnownLocation(String)方法。
如果用户禁用了提供程序,则更新将停止,并且将调用onProviderDisabled(String)
方法。只要再次启用提供程序,就会调用onProviderEnabled(String)方法并再次启动位置更新。
可以使用minTime
和minDistance
参数控制通知频率。如果minTime
大于0,则LocationManager可能会在位置更新之间休息minTime
毫秒,以节省电量。如果minDistance
大于0,则只有在设备移动minDistance
米时才会广播位置。要尽可能频繁地获取通知,请将两个参数都设置为0。
后台服务应谨慎设置足够高的minTime
,以便设备不会因为始终保持GPS或无线无线电而消耗太多电量。特别是,不推荐低于60000ms的值。
提供的Looper用于实现回调机制。
参数
抛出
IllegalArgumentException
如果提供者为空或不存在
如果监听器为空,则IllegalArgumentException
如果looper为null,则IllegalArgumentException
如果提供商没有合适的许可,则SecurityException
。
答案 1 :(得分:1)
minTime:通知的最短时间间隔,以毫秒为单位。此字段仅用作节省电量的提示,位置更新之间的实际时间可能大于或小于此值。
minDistance:通知的最小距离间隔,米
答案 2 :(得分:0)
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 9000, 500,locListener);
// 60000是1分钟,100是KM
上面你有9000(九秒)和500,如果位置移动超过500KM