Как интервал API fusedLocation связан с отключением GPS-радио

Предположим, что я использовал API-интерфейс плавного определения местоположения Android, чтобы запросить высокоточные отчеты о местоположении. Например,

    mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(FASTEST_UPDATE_INTERVAL*2);
    mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    LocationServices.FusedLocationApi
                .requestLocationUpdates(mGoogleApiClient, mLocationRequest, this)

Это приводит к тому, что прослушиватель моего местоположения вызывается каждый FASTEST_UPDATE_INTERVAL. Если я установлю FASTEST_UPDATE_INTERVAL коротким, я знаю, что радио GPS не будет отключено между обновлениями местоположения. Я знаю это из различных источников, таких как неожиданное поведение Fused Location Provider и https://www.quora.com/Why-does-GPS-use-so-much-more-battery-than-any-other-antenna-or-sensor-in-a-smartphone.

Мой вопрос: каково наименьшее значение FASTEST_UPDATE_INTERVAL, которое приведет к отключению GPS-радио между обновлениями местоположения?

Я предполагаю, что на этот вопрос не будет однозначного ответа, и он будет зависеть от аппаратного обеспечения телефона, версии Google Play и, возможно, других аппаратных и программных факторов. Тем не менее, общий ответ был бы полезен.

Этот вопрос важен, потому что я заинтересован в использовании высокоточного определения местоположения при минимальном использовании батареи. В какой-то степени я рад увеличить FASTEST_UPDATE_INTERVAL, если это сэкономит энергию.

Было бы неплохо, если бы службы определения местоположения Google Fuse использовали детекторы движения устройства (если они существуют), чтобы определять, когда оно было неподвижно, и если да, то просто отключали GPS-радио, пока устройство не двигалось.


person pbm    schedule 05.03.2016    source источник


Ответы (1)


Даже если бы вы нашли ответ, я бы не стал рассчитывать, что он останется одинаковым для разных устройств, версий ОС или версий Google Play. Если вам абсолютно не нужен GPS, не используйте слитный провайдер. Используйте провайдера сети из базового LocationManager.

Что касается использования детекторов движения - их нет. У него есть акселерометр, но для акселерометра, который стоит на месте, и движение с постоянной скоростью 50 миль в час выглядят совершенно одинаково (движение с постоянной скоростью равно 0 ускорению). В любом случае, это не может быть хорошей оптимизацией - получение блокировки нескольких спутников GPS занимает несколько секунд. Вы не хотите постоянно включать и выключать это, если кто-то хочет точности.

person Gabe Sechan    schedule 05.03.2016
comment
Вы можете быть правы насчет детекторов движения, которых нет в текущем наборе устройств. Но они будут существовать очень скоро, если они еще не используются. Существует множество сопроцессоров слияния датчиков, которые обнаруживают движение, и я знаю одну кремниевую компанию, интегрирующую их в свои ASIC. Одним из примеров является pnicorp.com/products/sentral-sensor-fusion, который предохранители гироскопов, акселерометров и магнитных датчиков. Тем не менее, ваша точка зрения относится к современным устройствам, поэтому мы не можем ожидать, что Android будет использовать обнаружение движения как часть своего программного обеспечения для определения местоположения. - person pbm; 06.03.2016
comment
Возможно, если OEM-производители считают, что они достаточно полезны, чтобы дать им конкурентное преимущество. Но даже если каждый OEM-производитель решит установить их на все свои флагманские устройства в конце 2016 года, это не коснется большинства устройств в течение пяти лет, исходя из средней скорости оборота. На данный момент их нет. Мне также очень любопытно, как, по-вашему, они будут совершать постоянное движение, потому что гироскопы, акселерометры и магнитодатчики этого не могут. - person Gabe Sechan; 06.03.2016
comment
Полностью объединенная служба определения местоположения, использующая GPS, гироскопы, акселерометры и магнитодатчики, может легко обнаруживать постоянное движение. Все дело в программном алгоритме. Предположим, что все датчики включены, и вы получаете три точных показания GPS с интервалом в 10 секунд, которые говорят вам о постоянном движении. Теперь вы можете предположить, что это движение остается постоянным, пока другие датчики не сообщат вам об обратном. Вы можете отключить GPS-радио, пока другие датчики не укажут изменение движения. - person pbm; 06.03.2016
comment
Вам потребуются гораздо более точные и менее шумные датчики, чем сегодня в телефонах. Особенно акселерометр. Вы также не можете просто включать и выключать GPS — получение сигнала занимает от секунд до минут, что затрудняет корреляцию. Лучше просто оставить GPS включенным. - person Gabe Sechan; 06.03.2016