Согласно этой статье ( UPD: ссылка удалена, поскольку это приводит к некоторой чушь сейчас), установка minTime при запросе обновлений местоположения приведет к тому, что провайдер установит для себя TEMPORARILY_UNAVAILABLE minTime миллисекунд для экономии заряда батареи. В течение этого периода бездействия провайдер GPS отключится, а значок GPS исчезнет.
В моем коде я установил 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