我有这些变量,并在 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 秒更新一次。有人可以帮忙吗?
最佳答案
参数mindTime
并不意味着您将每隔minTime
毫秒接收更新。这意味着您不会太频繁地收到更新(少于 minTime
毫秒),但不会指定您何时收到更新。如果 LocationManager
没有每 10 秒为您提供的新位置,它就不会提供。仅当有新位置时您才会收到更新。
您也在使用minDistance
。 25
表示除非设备移动至少 25 米,否则您不会收到新的更新。模拟器不会移动,因此将此参数设置为0
(这意味着更新不依赖于用户是否移动)。
更新率很大程度上取决于用户位置。例如,如果用户在建筑物内,GPS/网络提供商可能需要一段时间才能从卫星/基站接收更新。因此,您可能会以更长的时间间隔获得更新。但是,如果用户在室外并且设备信号良好,更新可能会变得非常频繁(但每 10 秒只会获得 1 次)
如果您想每 10 秒获取一次位置,则可以每 10 秒调用一次 getLastKnownLocation
。但如果提供商没有进行更新,位置可能会相同。
关于java - 如何每10秒更新一次GPS位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546009/