如何每10秒更新一次GPS位置?

时间:2012-11-24 21:54:42

标签: java android updates

我有这些变量,并在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秒更新一次。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

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

您也在使用minDistance25表示您不会收到新的更新,除非设备移动了至少25米。模拟器不会移动,因此请将此参数设置为0(这意味着更新不取决于用户是否移动)。

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

如果您希望每10秒获取一个位置,则可以每10秒拨打getLastKnownLocation。如果没有来自提供商的更新,则位置可能相同。

答案 1 :(得分:0)

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

REF:
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应该是节省电池寿命的主要工具。

答案 2 :(得分: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);