Получить самую высокую скорость обновления GPS от оборудования GPS в моем Android

Мне нужно программировать Android с других платформ, которые я использовал с GPS. на других платформах у меня был доступ к GPS HW (у меня был драйвер GPS низкого уровня), и благодаря этому я мог получать обновления GPS 5 раз в секунду и даже больше Теперь я работаю с Samsung Galaxy S2 (мне ясно, что его GPS очень сильный и может поставлять несколько обновлений в секунду В настоящее время, когда я устанавливаю поставщика GPS для доставки обновлений на минимальном расстоянии и минимальном времени, например:

mlocManager.requestLocationUpdates( 
    LocationManager.GPS_PROVIDER, 0, 0, mlocListener
); 

Я получаю 1 обновление в секунду (или 800 мс как наименьший разрыв между двумя обновлениями), что слишком мало для моего приложения. Есть ли способ заставить GPS HW сообщать больше обновлений как-то? Я предполагаю, что это не распространяется на пользователя, но есть ли какой-нибудь способ доступа к регистрам GPS HW каким-то образом?

Ответ 1

В настоящее время вы не можете получать обновления быстрее, чем один раз в секунду в большинстве телефонов. Это ограничение на аппаратное обеспечение.

Обычно в большинстве телефонов он равен 1 Гц.

Все зависит от оборудования и сценария, в котором вы используете (закрытый, наружный)

Но опять же, вы можете проверить, используя

LocationRequest setFastestInterval (long millis)

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

В отличие от setInterval (long), этот параметр является точным. Ваше приложение никогда не получит обновления быстрее этого значения.

Этот метод устанавливает самую быструю скорость в миллисекундах, при которой ваше приложение может обрабатывать обновления местоположения. Вы должны установить этот показатель, потому что другие приложения также влияют на скорость отправки обновлений. Служба определения местоположения отправляет обновления с максимальной скоростью, которую запрашивает любое приложение, вызывая LocationRequest.setInterval().

Если этот показатель быстрее, чем может обрабатывать ваше приложение, могут возникнуть проблемы с флексированием пользовательского интерфейса или переполнением данных.