我尝试在onLocationChanged函数的更新中获得正确的速度,这是我的班级:
public class LocationService extends Service implements LocationListener {
将minTime放在6000上没有用,它会不断更新,我做错了什么?
public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener, Looper looper) {
问候
答案 0 :(得分:23)
minTime只是LocationProvider的提示,并不意味着您的位置监听器将每6秒调用一次。您将收到更多位置更新,并根据您的代码选择最准确的位置更新。
监控手机上的GPS图标。对requestLocationUpdates的调用将触发GPS精确定位您的位置,如果能够获得修复,它将向locationlistener发送一个或多个位置更新。 (此时,您的GPS图标在搜索位置时应该是动画的。)
在此期间,您的locationlistener可能会收到多个位置更新。您的代码可以选择最准确的位置,并仅处理该位置。
GPS已将位置更新发送给您的听众后,应该有一段时间不活动。 (您的GPS图标应该消失几秒钟)。这段不活动时间应与你的minTime相对应。 GPS的状态也将改变,因为它将被放入TEMPORARILY_UNAVAILABLE。
之后,重复相同的过程。 (GPS变为可用,您将再次收到一个或多个位置更新)。
另外考虑到,如果GPS无法获得定位,GPS图标将保持活动状态超过6秒,但您将无法接收位置更新。
您还可以通过以下方法通过听众监控GPS提供商的状态:
public void onStatusChanged(String provider, int status, Bundle extras) {}
状态是android.location.LocationProvider
上定义的以下常量之一public static final int OUT_OF_SERVICE = 0;
public static final int TEMPORARILY_UNAVAILABLE = 1;
public static final int AVAILABLE = 2;
查看Understanding the LocationListener in Android有关minTime行为的示例,以及一个方案(包括一些日志记录),以帮助您了解正在发生的事情。
请记住,调整LocationManager上的minTime和minDistance参数,并根据GPS状态更新,您可以微调用户位置开发。
答案 1 :(得分:4)
6000毫秒等于6秒,它可能看起来像是在不断更新。 来自Android开发指南“不建议使用60000ms以下的minTime” 也许值得将它增加到60000ms