我有这些变量,并在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秒更新一次。有人可以帮忙吗?
答案 0 :(得分:2)
参数mindTime
并不意味着您将接收每 minTime
毫秒的更新。这意味着您不会经常收到的更新时间少于minTime
毫秒,但未指定 时会获得更新。如果LocationManager
没有新的位置可以每10秒钟给你一次,那么它根本就不会给你。只有在有新位置时,您才会收到更新。
您也在使用minDistance
。 25
表示您不会收到新的更新,除非设备移动了至少25米。模拟器不会移动,因此请将此参数设置为0
(这意味着更新不取决于用户是否移动)。
更新率很大程度上取决于用户位置。例如,如果用户在建筑物内,则GPS /网络提供商可能需要一段时间才能从卫星/基站接收更新。所以你可能会在更长的时间间隔内获得更新。但是,如果用户在室外且设备信号良好,则更新可能会变得非常频繁(但每10秒钟只能获得1次)
如果您希望每10秒获取一个位置,则可以每10秒拨打getLastKnownLocation
。如果没有来自提供商的更新,则位置可能相同。
答案 1 :(得分:0)
我想, 条件必须是,时间是10(最小)秒,距离是25(最小)米。
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);