Комментарии 15
Все печально, сам сейчас мучаюсь. На деле получить приемлемое решение (для <2.3) которое позволит нам получить текущие координаты с заданной точностью на android выливается в многие десятки строк кода.
Я не знаю точно как Android работает с GPS приемником, но неужели не по NMEA протоколу? Если так — то было бы очень нелогично не предоставлять встроенные средства протокола для определения доступности/валидности координат.
Для более тщательного изучения вопроса я бы посмотрел в исходники Android'а на всякий случай.
Для более тщательного изучения вопроса я бы посмотрел в исходники Android'а на всякий случай.
Практика показывает, что далеко не все то что доступно внизу, интерфейсится наверх. Особенно в отношении андроида.
>неужели не по NMEA протоколу?
С внешними, наверняка так. Со встроенными — совершенно не обязательно. В любом случае, получается, данные с чипа обёртываются андроидным интерфейсом, который почему-то не активизирует события, если координаты не изменились. То есть понятно почему, но жалко, что это сделано неотключабельно, судя по всему…
С внешними, наверняка так. Со встроенными — совершенно не обязательно. В любом случае, получается, данные с чипа обёртываются андроидным интерфейсом, который почему-то не активизирует события, если координаты не изменились. То есть понятно почему, но жалко, что это сделано неотключабельно, судя по всему…
r_ii, спасибо за наводку! До меня по непонятным причинам не доперло, что можно влезть в этот протокол. Сейчас поправлю топик
Хорошие советы, но еще бы исходный код как поддержка им.
Есть вопрос, для тех, кто разбирается.
У меня андройд 2.3.4 основанный на одной из китайских бета версия для моего телефона. Но проблема была и на других прошивках.
Итак.
Когда нет GPS спутников — aGPS часто ошибается и отправляет меня за 2000 километров от моего положения.
При этом можно получить данные о местоположении из wifi, и у меня установлен wiper.apk
Но происходит вот такая неведомая фигня:
1. В Картах Гугл — через 3 секунды раздумия — моё местоположение находится как надо!
2. В Форсквере — моё местоположение — за 2000 км от нужного.
3. В GPS Status — вообще нет моего местоположения.
В gps.conf следующее:
NTP_SERVER=europe.pool.ntp.org
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
DEBUG_LEVEL=0
INTERMEDIATE_POS=1
ACCURACY_THRES=250
SUPL_HOST=supl.google.com
SUPL_PORT=7276
CURRENT_CARRIER=common
DEFAULT_AGPS_ENABLE=TRUE
DEFAULT_SSL_ENABLE=FALSE
DEFAULT_USER_PLANE=TRUE
Как сделать так, чтобы заработало wifi geolocation?
У меня андройд 2.3.4 основанный на одной из китайских бета версия для моего телефона. Но проблема была и на других прошивках.
Итак.
Когда нет GPS спутников — aGPS часто ошибается и отправляет меня за 2000 километров от моего положения.
При этом можно получить данные о местоположении из wifi, и у меня установлен wiper.apk
Но происходит вот такая неведомая фигня:
1. В Картах Гугл — через 3 секунды раздумия — моё местоположение находится как надо!
2. В Форсквере — моё местоположение — за 2000 км от нужного.
3. В GPS Status — вообще нет моего местоположения.
В gps.conf следующее:
NTP_SERVER=europe.pool.ntp.org
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
DEBUG_LEVEL=0
INTERMEDIATE_POS=1
ACCURACY_THRES=250
SUPL_HOST=supl.google.com
SUPL_PORT=7276
CURRENT_CARRIER=common
DEFAULT_AGPS_ENABLE=TRUE
DEFAULT_SSL_ENABLE=FALSE
DEFAULT_USER_PLANE=TRUE
Как сделать так, чтобы заработало wifi geolocation?
Как всё запущено :(
Я думал что в андроиде есть какой то системный сервис который возвращает информацию о координате, о точности с которой она определена, и источником данных(gps, wi-fi, gsm network)
Я думал что в андроиде есть какой то системный сервис который возвращает информацию о координате, о точности с которой она определена, и источником данных(gps, wi-fi, gsm network)
Не совсем так. В андройде получить текущую координату на самом деле относительно просто. Здесь речь идет о том, чтобы определять, возможно ли в данный момент получение координат через GPS
такая возможность есть и очень прозрачна:
методы getAccuracy и getProvider класса Location
тоесть провайдера можно узнать. с другой стороны прикладным программам (имхо — всем кроме специализированных gps статусов) вообще не нужно знать провайдера — только точность
методы getAccuracy и getProvider класса Location
тоесть провайдера можно узнать. с другой стороны прикладным программам (имхо — всем кроме специализированных gps статусов) вообще не нужно знать провайдера — только точность
дело за малым — парсить полученную строку
в этом месте не помешала бы ссылка на NMEA парсер — не писать же его самому в самом деле
Вот тут на эту тему много информации — stackoverflow.com/questions/2021176/android-gps-status
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Определение доступности GPS в Android