4

有没有办法指定位置管理器广播当前位置的时间间隔?

我正在使用一种名为 startListening 的方法:

public void startListening() {
        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 
                0, 
                0, 
                this
        );
}

谢谢

4

3 回答 3

5

public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener, Looper looper)

注册当前活动以由指定的提供者定期通知。周期性地,提供的 LocationListener 将使用当前位置或状态更新来调用。

接收最新位置可能需要一段时间。如果需要即时位置,应用程序可以使用 getLastKnownLocation(String) 方法。

如果提供者被用户禁用,更新将停止,并onProviderDisabled(String)调用该方法。再次启用提供程序后,将调用 onProviderEnabled(String) 方法并重新开始位置更新。

可以使用minTimeminDistance参数控制通知的频率。如果minTime大于 0,LocationManager 可能会minTime在位置更新之间休息几毫秒以节省电力。如果大于 0,则仅当设备移动米minDistance时才会广播位置。minDistance要尽可能频繁地获取通知,请将两个参数都设置为 0。

后台服务应该小心设置一个足够高的值minTime,这样设备就不会因为一直保持 GPS 或无线电而消耗过多的电量。特别是不建议使用低于 60000ms 的值。

提供的 Looper 用于实现回调机制。

参数

  • provider 要注册的提供者的名称
  • minTime 通知的最小时间间隔,以毫秒为单位。此字段仅用作节省电量的提示,位置更新之间的实际时间可能大于或小于此值。
  • minDistance 通知的最小距离间隔,以米为单位
  • 每次位置更新都会调用其 onLocationChanged(Location) 方法的侦听器
  • looper 一个 Looper 对象,其消息队列将用于实现回调机制。

投掷

IllegalArgumentException 如果提供者为空或不存在
IllegalArgumentException 如果侦听器为空
IllegalArgumentException 如果循环器为空
SecurityException如果提供者没有合适的权限。

于 2010-04-02T10:24:23.587 回答
1

minTime :通知的最小时间间隔,以毫秒为单位。此字段仅用作节省电量的提示,位置更新之间的实际时间可能大于或小于此值。

minDistance:通知的最小距离间隔,以米为单位

于 2010-09-03T04:57:11.533 回答
0
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 9000, 500,locListener);

// 60000 是 1 分钟,100 是 KM

上面有 9000(九秒)和 500,如果位置移动超过 500KM

于 2010-05-06T18:35:51.997 回答