Все печально, сам сейчас мучаюсь. На деле получить приемлемое решение (для <2.3) которое позволит нам получить текущие координаты с заданной точностью на android выливается в многие десятки строк кода.
Я не знаю точно как Android работает с GPS приемником, но неужели не по NMEA протоколу? Если так — то было бы очень нелогично не предоставлять встроенные средства протокола для определения доступности/валидности координат.
Для более тщательного изучения вопроса я бы посмотрел в исходники Android'а на всякий случай.
С внешними, наверняка так. Со встроенными — совершенно не обязательно. В любом случае, получается, данные с чипа обёртываются андроидным интерфейсом, который почему-то не активизирует события, если координаты не изменились. То есть понятно почему, но жалко, что это сделано неотключабельно, судя по всему…
У меня андройд 2.3.4 основанный на одной из китайских бета версия для моего телефона. Но проблема была и на других прошивках.
Итак.
Когда нет GPS спутников — aGPS часто ошибается и отправляет меня за 2000 километров от моего положения.
При этом можно получить данные о местоположении из wifi, и у меня установлен wiper.apk
Но происходит вот такая неведомая фигня:
1. В Картах Гугл — через 3 секунды раздумия — моё местоположение находится как надо!
2. В Форсквере — моё местоположение — за 2000 км от нужного.
3. В GPS Status — вообще нет моего местоположения.
Как всё запущено :(
Я думал что в андроиде есть какой то системный сервис который возвращает информацию о координате, о точности с которой она определена, и источником данных(gps, wi-fi, gsm network)
Не совсем так. В андройде получить текущую координату на самом деле относительно просто. Здесь речь идет о том, чтобы определять, возможно ли в данный момент получение координат через GPS
А какая разница, с помощью GPS или нет? Вас же на самом деле интересует точность, про которую dab512 упомянул. Может, точность хорошая, но получена каким-нибудь ГЛОНАСС, это ж ничего не меняет. По-моему, dab512 говорит о правильной модели, только список источников данных должен быть расширяемым.
такая возможность есть и очень прозрачна:
методы getAccuracy и getProvider класса Location
тоесть провайдера можно узнать. с другой стороны прикладным программам (имхо — всем кроме специализированных gps статусов) вообще не нужно знать провайдера — только точность
В данном случае нужно вытащить один параметр, номер которого известен, из строки, формат которой можно посмотреть по одной из ссылок. По-моему, задача элементарна
Определение доступности GPS в Android