根据本文(upd:link-removed,因为它现在会导致一些垃圾),在请求位置更新时设置mintime将导致提供商将自己设置为在mintime毫秒内暂时不可用,以节省电池电量。在这段不活动的时间内,GPS提供商将自动关闭,GPS图标将消失。
在我的代码中,我将mintime设置为大约30秒,但提供程序每5分钟才暂时不可用一次。当它启动时,它最多只能暂时不可用10秒,然后再重新启动。我知道这一点是因为GPS图标在再次出现之前只消失了10秒。
我知道mintime的设置只是android定位提供商的一个粗略的指导……但是我很确定5分钟和30秒完全不同。有人知道这是怎么回事吗?mintime和requestlocationupdates实际上是如何工作的?
LocationManager设置:
locManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,30000L, 0, 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
最佳答案
从API开始:
“后台服务应该注意设置足够高的最小时间,这样设备就不会一直打开GPS或无线电台,消耗太多电力。特别是,不建议使用小于60000ms的值。”
“此字段仅用作省电提示,位置更新之间的实际时间可能大于或小于此值。”(强调是我的)。
如果您需要立即知道位置,请使用getLastKnownLocation(String)