#android #gps #locationmanager #android-gps
#Android #gps #locationmanager #android-gps
Вопрос:
Класс Criterions не задокументирован подробно.
Может кто-нибудь, пожалуйста, объяснить, что POWER_HIGH
POWER_LOW
именно и изменить?
Речь идет о разрядке батареи?
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
...
locationManager.requestSingleUpdate(criteria, locationListener, null);
Обновить:
Я просмотрел часть исходного кода. Оказывается, этот параметр игнорируется в моем примере, потому что также задана точность.
createFromDeprecatedCriteria()
в LocationRequest.java
:
...
int quality;
switch (criteria.getAccuracy()) {
case Criteria.ACCURACY_COARSE:
quality = ACCURACY_BLOCK;
break;
case Criteria.ACCURACY_FINE:
quality = ACCURACY_FINE;
break;
default: {
if (criteria.getPowerRequirement() == Criteria.POWER_HIGH) {
quality = POWER_HIGH;
} else {
quality = POWER_LOW;
}
}
}
...
Ответ №1:
Существует несколько различных LocationProviders (gps, network, passive и т. Д.). Класс Criterions может использоваться LocationManger для автоматического выбора лучшего поставщика на основе ваших требований.
Criteria criteria = new Criteria();
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setSpeedRequired(true);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
return locationManager.getBestProvider(criteria, true);
Как на самом деле используется класс Criterions, можно увидеть здесь.
Установка требования к питанию Criteria.POWER_LOW
, вероятно, просто исключит использование устройства с помощью поставщика местоположения GPS (поскольку он использует гораздо больше батареи, чем другие пассивные типы).