0

我有这些变量,并且在 onResume 方法中有以下调用:

  private Location userLocation;
  private GeoPoint point;
  private LocationManager manager;
  private LocationListener listener = new LocationListenerC();

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 25, locationListener); 

但是当我在 android 模拟器中运行这个应用程序时,用户的位置不是每 10 秒更新一次。任何人都可以帮忙吗?

4

3 回答 3

2

该参数mindTime并不意味着您将 minTime毫秒接收一次更新。这意味着您不会经常收到少于minTime毫秒的更新,但没有指定何时收到它们。如果LocationManager没有新的位置可以每 10 秒给你一次,它根本不会给。只有在有新位置时,您才会收到更新。

你也在用minDistance25意味着除非设备移动了至少 25 米,否则您将不会收到新的更新。模拟器不移动,所以将此参数设置为0(这意味着更新不依赖于用户是否移动)。

更新率很大程度上取决于用户的位置。例如,如果用户在建筑物内,则 GPS/网络提供商可能需要一段时间才能从卫星/基站接收更新。因此,您可能会以更长的时间间隔获得更新。但是,如果用户在外面且设备信号良好,则更新可能会变得非常频繁(但每 10 秒只会获得 1 次)

如果您想每 10 秒获取一次位置,则可以getLastKnownLocation每 10 秒调用一次。但是,如果没有发生来自提供商的更新,则位置可能相同。

于 2012-11-24T22:26:41.837 回答
0

我认为,条件必须是,时间是 10(最小)秒,距离是 25(最小)米。

参考:http:
//developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28java.lang.String,%20long,%20float,%20android.location.LocationListener%29

minDistance 参数还可用于控制位置更新的频率。如果它大于 0,那么位置提供程序将仅在位置已更改至少 minDistance 米并且至少 minTime 毫秒已过去时向您的应用程序发送更新。然而,位置提供者使用 minDistance 参数来节省电量更加困难,因此 minTime 应该是节省电池寿命的主要工具。

于 2012-11-24T22:19:43.810 回答
0

执行以下操作,如下所示

   private Location userLocation;
   private GeoPoint point;
   private LocationManager manager;
   private LocationListener listener = new LocationListenerC();

    //Change **locationManager** to **manager** 
    // and **locationListener** to **listener**  in the follwing line
   manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 25, listener); 
于 2012-11-24T23:15:01.363 回答