根据这篇文章(UPD:链接已删除,因为现在它会导致一些垃圾信息),当请求位置更新时,设置minTime将导致提供程序将自身设置为TEMPORARILY_UNAVAILABLE,以节省电池电量,持续minTime毫秒。在此期间,GPS提供程序将关闭并且GPS图标将消失。
在我的代码中,我将minTime设置为大约30秒,但是提供程序每五分钟才会变为TEMPORARILY_UNAVAILABLE。当它这样做时,在最多十秒钟的时间内保持TEMPORARILY_UNAVAILABLE,然后重新打开。我知道这是因为GPS图标只在消失十秒钟后重新出现。
我知道minTime设置只是Android位置提供程序的粗略指南...但我非常确定五分钟与30秒完全不同。有人知道这里发生了什么吗? minTime和requestLocationUpdates如何工作?
LocationManager设置:
在我的代码中,我将minTime设置为大约30秒,但是提供程序每五分钟才会变为TEMPORARILY_UNAVAILABLE。当它这样做时,在最多十秒钟的时间内保持TEMPORARILY_UNAVAILABLE,然后重新打开。我知道这是因为GPS图标只在消失十秒钟后重新出现。
我知道minTime设置只是Android位置提供程序的粗略指南...但我非常确定五分钟与30秒完全不同。有人知道这里发生了什么吗? minTime和requestLocationUpdates如何工作?
LocationManager设置:
locManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,30000L, 0, locListener);
locListener:
public void onLocationChanged(Location loc) {
//Keep track of best location
//Having a location > no location
if (bestLocation == null)
bestLocation = loc;
//More accuracy > Less accuracy
else if (loc.getAccuracy() <= bestLocation.getAccuracy())
bestLocation = loc;
Log.d(TAG, "Location Updated";
}
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d(TAG, "New status: " + status);
if (status== LocationProvider.TEMPORARILY_UNAVAILABLE)
//Do stuff since the provider is temporarily off
}
在真实的Android设备上(HTC Incredible 2.2)进行调试输出:
Location Updated
Location Updated
New status: 2
Location Updated
Location Updated
Location Updated
New status: 2
... (five minutes later)
New status: 1