Nano Hash - криптовалюты, майнинг, программирование

частота обновления местоположения андроида

Я хочу получить 5 последовательных мест обновления, чтобы проверить, движется ли пользователь, и убедиться, что GPS откалиброван. Я сделал следующее:

Я добавил android.permission.ACCESS_FINE_LOCATION" в манифест и в onConnected:

mLocationRequest = new LocationRequest();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(1000); // Update location every second
mLocationRequest.setFastestInterval(1000);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 

и в onLocationChanged я сделал следующее:

locationRetries++;
switch (locationRetries) {
case 1: {
    firstLatitude = location.getLatitude();
    firstLongitude = location.getLongitude();               
}
case 5: {
    locationRetries = 0;
    lastLatitude = location.getLatitude();
    lastLongitude = location.getLongitude();
    accuracy = Math.round(location.getAccuracy());
    stopLocationUpdates();//will remove from location updates and disconnects
    float[] results = new float[1];
    Location.distanceBetween(firstLatitude, firstLongitude, lastLatitude, lastLongitude, results);              
    if (results[0] > 5)... //if moved at least 5meters, show popup that the user is moving else do your thing
}

Теперь у меня 3 проблемы:

1) Кажется, что для получения 5 обновлений требуется гораздо меньше 5 секунд, хотя я установил оба параметра равными 1000 миллисекундам.

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

3) Я закрыл свое приложение, снова открыл его в удаленном месте и нажал кнопку. Почти мгновенно я получил предыдущее местоположение. Я снова нажал кнопку, и тогда я получил реальное местоположение, в котором я был. Это как если бы он на самом деле не спрашивал / не ждал местоположения от GPS, а вместо этого взял последнее, которое в то время было удаленно неточным. У меня нет кода "получить последнее известное местоположение".

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

09.01.2015

Ответы:


1

поставщик объединенного местоположения

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

  • Простые API: позволяет указать требования высокого уровня, такие как высокая точность или низкое энергопотребление, вместо того, чтобы беспокоиться о провайдерах определения местоположения.
  • Немедленная доступность: дает вашим приложениям немедленный доступ к лучшему, самому последнему местоположению.
  • Энергоэффективность: сводит к минимуму потребление энергии вашим приложением. Основываясь на всех входящих запросах на определение местоположения и доступных датчиках, провайдер объединенного определения местоположения выбирает наиболее эффективный способ удовлетворения этих потребностей.
  • Универсальность. Удовлетворяет широкий спектр потребностей: от использования на переднем плане, требующего высокой точности определения местоположения, до использования в фоновом режиме, требующего периодического обновления местоположения с незначительным влиянием на мощность.

Нет никакой гарантии, что провайдер объединенного местоположения когда-либо будет использовать GPS — если у него есть недавнее местоположение с той точностью, которую вы запрашиваете, он будет возвращаться до тех пор, пока не будет возвращено лучшее местоположение (т. Е. Живой GPS возвращает точные местоположения). Это гарантирует, что вы получите более точное местоположение раньше, не дожидаясь включения GPS.

Если вам конкретно нужны данные GPS, вам нужно использовать LocationManager. с помощью GPS_PROVIDER.

Если вы пытаетесь определить, что в данный момент делает пользователь, вы можете вместо этого использовать ссылку ActivityRecognitionApi, который возвращает DetectedActivity, например, ХОДЬБА или НЕПОДВИЖНАЯ: использование этого даст более быстрый способ понять, что пользователь в данный момент делает.

09.01.2015
  • Я использую провайдера плавного определения местоположения. Я понял, что это рекомендуемый способ для этого, но, видимо, он не такой быстрый и точный, как я надеялся. Есть ли лучший способ убедиться, что он будет более точным? Может быть, заставить его использовать GPS, если он доступен (я заставляю пользователя включить его)? 09.01.2015
  • GPS всегда будет медленнее, чем при использовании Fused Location Provider, и поскольку Fused Location Provider использует GPS, когда он возвращает лучшее местоположение (GPS при первом запуске может быть очень неточным), у вас гораздо больше шансов получить точное местоположение с помощью Fused Location. . 09.01.2015
  • Добавлено примечание об использовании ActivityRecognitionApi, которое может быть более простым способом понять, идет ли пользователь, бежит ли он или едет на велосипеде или стоит на месте. 09.01.2015
  • Я проверю это относительно ходьбы/еще и т. д. спасибо. Проблема заключалась в том, что он дал мне последнее известное местоположение, а не то, где я нахожусь в данный момент, только повторная попытка дала мне точное место, где я был в то время. Кроме того, для создания 5 местоположений запроса потребовалось менее 5 секунд, хотя я установил его на 1000 миллисекунд. 09.01.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..