Подтвердить что ты не робот

Получение координат GPS быстрее программно без Интернета, но с использованием сетевого провайдера и мобильного GPS

Я задал много вопросов по этой теме, но, похоже, некоторые из моих требований отсутствуют:

  • Я хочу получить GPS-координаты с точностью ~0.0001
  • Не хотите пользоваться Интернетом; Хотя сеть GSM/CDMA в порядке
  • Должно быть получено программно при запуске приложения
  • Быстрее, скажите в течение минуты (например, iPhone, который, вероятно, работает и в режиме самолета!)
  • Код должен работать на большинстве устройств.
  • Телефон может включать/выключать в любое время и путешествовать на любое расстояние.

Есть ли способ получить только координаты с вышеупомянутыми требованиями? Любой фрагмент кода кода будет оценен по достоинству.

Проверка различных приложений, таких как "Locate Me", "Maverick", которые утверждают, что они отображают офлайн-адреса. Но в различных сценариях без Интернета они не отслеживают местоположение (в Индии).
Я упоминал много старых/новых вопросов внутри/вне SO. Ниже представлено несколько примеров:

[Примечание: я задаю этот вопрос от имени моей команды Android и буду рад прояснить детали, если вас попросят. Если вы чувствуете, что этот пост принадлежит Android.Stackexchange, то любезно переместите его.]

4b9b3361

Ответ 1

1. Я хочу, чтобы местоположение GPS было на уровне <0,0001

Вы можете слушать только провайдера GPS и отбрасывать местоположение, если оно не имеет минимальной точности, которую вы хотите:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 5, myLocationListener);  // "myLocationListener" must be an object from a class that implements LocationListener 

// "myLocationListener" implementation of LocationListener.onLocationChanged
public void onLocationChanged(Location location)
{    
    int MIN_ACCURACY = 5; // in metters
    if ((!location.hasAccuracy()) || (location.getAccuracy() > MIN_ACCURACY))
    {
        // discard this location and keep listening to new location readings
    }
    else
    {
        // that a good reading!

        // do somethings you want... blah, blah, blah...

        // stop updates when you get the location to preserve users' battery.
        locationManager.removeUpdates(myLocationListener);
    }
}

2. Не хотите пользоваться Интернетом; Хотя сеть GSM/CDMA в порядке

Да, GPS работает полностью автономно. Android может использовать Интернет ТОЛЬКО для обновления кеша данных A-GPS и обеспечения более быстрого чтения в обновлениях с холодным запуском.


3. Должен быть получен программно при запуске приложения

Затем вызовите элемент locationManager.requestLocationUpdates в файле mainActivity onCreate.


4. Должно быть быстрее, скажите в течение минуты (например, iPhone, который, вероятно,   работает и в режиме самолета!)

Имейте в виду, что iPhone работает с "высококачественным оборудованием". Android можно запускать на чистых устройствах. Это зависит от:

  • Качество аппаратного обеспечения устройства;
  • Число спутников, которые в данный момент видны на небе;
  • Возраст альманаха и эфемеридных данных на кеш-кеш,
  • GPS может не считывать спутники, потому что пользователь находится внутри здания или что-то в этом роде.

5. Код должен работать на большинстве устройств

Какой самый старый Android-API вы хотите запустить?


6. Телефон может включать/выключать в любое время и путешествовать на любое расстояние

Я не понял. В чем вы обеспокоены этим?

----------------------------------------------- -------------------------------

Обновление 1:

"... Я хотел бы использовать Android 4.0 и выше..."

Я тестировал функции GPS с Android 2.3 до 5.0. Все работает очень хорошо на всех.

"... Я заметил, что одно демо-приложение, основанное на гео-координатах, которое работало на других устройствах, не работает в моем LGG3 с Android 5.0. Любая идея об этом?...

Вы проверяли разрешения GPS на настройках Android? (Может быть, он отключен) Или может быть проблема с оборудованием? Вы пытались использовать другое подобное устройство?

"... Предположим, что GPS показывает правильное местоположение в Нью-Йорке, Я выключаю телефон и затем включаюсь после достижения Лондона, то будет ли он по-прежнему показывать правильное местоположение (без Интернета)?... "

Похоже, вы путаете вещи: чтение GPS-местоположения - это одно. Показывать, что это место в MAP - это еще одна вещь!

Вам не нужно подключаться к Интернету для чтения GPS-данных. Но, если вы хотите показать это местоположение в MAP, возможно, вам понадобится интернет (для загрузки ресурсов карты и т.д.).

Если вы не собираетесь регулярно собирать GPS-адреса (скажем, от 10 до 10 минут), тогда будет лучше использовать AlarmManager, чтобы запланировать таймер, который "провёл" ваше приложение и скажет "эй, время, чтобы сделать считывание GPS!".

"... И что вы думаете о последнем Fused API?...

Я тестировал его и использовал его некоторое время, но я его бросил. Необходимо, чтобы службы Google Play были установлены для работы (не проблема, большинство пользователей имеют их на своих устройствах). Но если вам нужна ТОЧНОСТЬ (как и я), это не сработает. Он использует "плавленные датчики" (акселерометр, gps, wifi, компас и т.д.), Чтобы попытаться получить местоположение пользователя с минимальной мощностью. Иногда он говорит, что вы в 10 милях от того места, где вы на самом деле. Я не мог заставить его работать нормально, чтобы сохранить "путь", где был пользователь. Но это действительно экономит аккумулятор.

Ответ 2

Предложение заключается в использовании Google Location Services В настоящий момент он максимально точно и точно определяет местоположение. Он автоматически (с конфигурацией, конечно) также имеет наилучшую текущую точность - все, что доступно GPS, сеть, интернет, GSM/CDMA/LTE... Он также использует последнее известное местоположение, поэтому, в основном, вы знаете его каждый момент - лучшее, что вы можете.

Конечно, вы должны понимать, что каждая услуга обеспечивает свою точность и в свое собственное время. Посмотрите, например, приложение GPS Test на Android и посмотрите, как точность увеличивается со временем и используются спутники.

Также Location Services хорош для вас, потому что он просто предоставляет координаты - точно так же, как вы просили и скрываете много работы, чтобы определить, какое реальное обслуживание использовать в зависимости от времени и точности. Однако, конечно, если ни одна из служб вашего конкретного устройства и местоположения не может дать вам требуемую точность, тогда нет способа получить ее. Именно поэтому услуги также обеспечивают измерение точности.

Вот еще ссылка

Ответ 3

Использовать API с плавным местоположением, предоставляемый Android SDK. Предоставьте плавное местоположение в Сервисе и вызовите его в своем приложении MainActivity.