Я хочу сделать приложение для бега, которое отслеживает местоположение пользователя, скорость и пройденное расстояние.В настоящее время я использую API Google Location Services для получения данных GPS, потому что Google рекомендует их на официальном сайте .
Но проблема в том, что я могу получать обновления местоположения только каждые 10 секунд, что нормально, если дело касается только рисования местоположения на карте, но я хочу рассчитать текущую скорость пользователя (км / ч), текущуютемп (мин / м) и рассчитать точное время, когда он делает один круг (1 км или 1 миля).И вот проблема, если я получаю обновления каждые 10 секунд, я не могу точно рассчитать эти параметры.Например, обновление происходит, когда пользователь на 996 м, а через 4 м он сделает один круг.Но следующее обновление не будет доступно в течение 10 секунд, поэтому оно будет, например, на 1010м.И это не то, что пользователь хотел бы иметь ...
Как решить эту проблему?Как вы думаете?
Я использую здесь точную кодовую форму.
Где запрос местоположения выглядит так:
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
С docs :
Приоритет PRIORITY_HIGH_ACCURACY в сочетании с настройкой разрешения ACCESS_FINE_LOCATION, определенной вами в манифесте приложения, и интервалом быстрого обновления 5000 миллисекунд (5 секунд) приводит к тому, чтообъединенный поставщик местоположения для возврата обновлений местоположения с точностью до нескольких футов.Этот подход подходит для картографических приложений, которые отображают местоположение в режиме реального времени.
Но этого недостаточно.Хотя я меняю интервал на меньший, он всегда равен 10 с.