requestLocationUpdates Android中的间隔

时间:2010-10-22 03:20:28

标签: android gps location

我尝试在onLocationChanged函数的更新中获得正确的速度,这是我的班级:

public class LocationService extends Service implements LocationListener {

将minTime放在6000上没有用,它会不断更新,我做错了什么?

public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener, Looper looper) {

问候

2 个答案:

答案 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