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 用于实现回调机制。
参数
- provider:要注册的提供程序的名称
- minTime:通知的最小时间间隔(以毫秒为单位)。此字段仅用作提示以节省电力,实际位置更新之间的时间可能大于或小于此值。
- minDistance:通知的最小距离间隔(以米为单位)
- listener:onLocationChanged(Location) 方法将为每个位置更新调用的 LocationListener
- looper:Looper 对象,其消息队列将用于实现回调机制。
抛出异常
IllegalArgumentException
:如果 provider 为 null 或不存在
IllegalArgumentException
:如果 listener 为 null
IllegalArgumentException
:如果 looper 为 null
SecurityException
:如果提供程序没有适当的权限。