2011-09-14 55 views
0

我想在Android上LocationListener的索要更新每5秒Android的位置监听器不更新的时候我告诉

我这样做:

locMgr.requestLocationUpdates(high.getName(), (long) 5000, 0, 
    UpdL1 = new LocationListener() { 
    public void onLocationChanged(Location location) { 
    // do something here to save this new location 
    if (location != null) { 
     // 
     updateARLoc(location.getLatitude(),location.getLongitude()); 
     // 
     if(!creada){ 
     locMgr.removeUpdates(UpdL1); 
     } 
     } else { 
     }  
    } 

我告诉它来更新每个毫秒,即5秒。但它始终在不断更新。 logcat告诉我,每500毫秒更新一次。 (每 “A” 的印刷是从收听的更新)右下为requestLocationUpdates方法参数

09-14 14:57:29.998: INFO/info(3456): A 
    09-14 14:57:30.018: INFO/info(3456): A 
    09-14 14:57:30.918: INFO/info(3456): A 
    09-14 14:57:30.928: INFO/info(3456): A 
    09-14 14:57:31.988: INFO/info(3456): A 
    09-14 14:57:31.998: INFO/info(3456): A 
    09-14 14:57:32.958: INFO/info(3456): A 
    09-14 14:57:32.988: INFO/info(3456): A 
    09-14 14:57:33.948: INFO/info(3456): A 
    09-14 14:57:33.948: INFO/info(3456): A 

回答

0

http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(java.lang.String,长整型,浮点,android.location.LocationListener)

它指出:

“通知的最小时间间隔(以毫秒为单位),该字段仅用作提示以节省电源,位置更新之间的实际时间可能大于或小于此值。”

requestLocationUpdates()使Droid的GPS尝试修复您的位置。在尝试获取修复程序时,您的locationlistener可能会获得大量位置更新。

接收到位置更新后,GPS应该关闭您在mintime参数中指定的时间量。

0

如你的Android文档中找到:

的通知频率可以使用minTime和minDistance才会参数来控制。如果minTime大于0,LocationManager 可能会在位置更新之间休息minTime毫秒以节省电量。如果minDistance大于0,则只有当设备通过minDistance米移动时才会广播位置。要尽可能频繁地获取通知,请将这两个参数设置为0.

换句话说,如果您的设备不需要节省电量,它会在需要时发送更新。

此外,您已将minDistance参数设置为0,这意味着您希望每隔0米更新一次(以便尽可能经常更新)。

+0

我不认为这就是文档的意思。这是说,在修复完成后,GPS不会向您发送x个毫秒的更新。 – bgroenks