Android как gps модуль для

gps.conf для всех, или как ускорить работу GPS на Android

«Фантастика!» подумал я и без промедления перешел по ссылке. По сравнению с первым постом в этот раз предлагались еще более конкретные действия, а именно заменить содержимое файла gps.conf (его можно найти по пути /etc/gps.conf, должны быть root-права) на следующие настройки:

NTP_SERVER=ua.pool.ntp.org
NTP_SERVER=0.ua.pool.ntp.org
NTP_SERVER=1.ua.pool.ntp.org
NTP_SERVER=2.ua.pool.ntp.org
NTP_SERVER=3.ua.pool.ntp.org
NTP_SERVER=europe.pool.ntp.org
NTP_SERVER=0.europe.pool.ntp.org
NTP_SERVER=1.europe.pool.ntp.org
NTP_SERVER=2.europe.pool.ntp.org
NTP_SERVER=3.europe.pool.ntp.org
XTRA_SERVER_1=/data/xtra.bin
AGPS=/data/xtra.bin
AGPS=http://xtra1.gpsonextra.net/xtra.bin
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
DEFAULT_AGPS_ENABLE=TRUE
DEFAULT_USER_PLANE=TRUE
REPORT_POSITION_USE_SUPL_REFLOC=1
QOS_ACCURACY=50
QOS_TIME_OUT_STANDALONE=60
QOS_TIME_OUT_agps=89
QosHorizontalThreshold=1000
QosVerticalThreshold=500
AssistMethodType=1
AgpsUse=1
AgpsMtConf=0
AgpsMtResponseType=1
AgpsServerType=1
AgpsServerIp=3232235555
INTERMEDIATE_POS=1
C2K_HOST=c2k.pde.com
C2K_PORT=1234
SUPL_HOST=FQDN
SUPL_HOST=lbs.geo.t-mobile.com
SUPL_HOST=supl.google.com
SUPL_PORT=7276
SUPL_SECURE_PORT=7275
SUPL_NO_SECURE_PORT=3425
SUPL_TLS_HOST=FQDN
SUPL_TLS_CERT=/etc/SuplRootCert
ACCURACY_THRES=5000
CURRENT_CARRIER=common

Эти настройки рассчитаны на жителей Украины, но для жителей России их очень легко адаптировать заменив ua.pool на ru.pool.

Далее нужно перезагрузить Android, а затем запустить программу для работы с GPS и наслаждаться стабильным сигналом.

От себя могу добавить, что я пользуюсь приложением GPS Status и после перезагрузки при первом запуске приложения я сделал сброс данных кэша: в программе вызываем меню, далее выбираем Tools, там Manage A-GPS state и жмем Reset, а затем Download.

Снимаю шляпу перед автором оригинального поста, уважаемым mechanicuss. Его совет помог не только мне, и может помочь еще многим страдающим.

На этом все. Всем чистого неба и стабильного сигнала из космоса.

Источник

Телефон как GPS-приемник для другого телефона или планшета на Android (Bluetooth)

В предыдущей статье было показано, как подключить по Bluetooth телефон на Android к компьютеру с Windows в качестве GPS-приемника. В настоящем руководстве изложен способ подключения телефона на Android к другому телефону или планшету на Android с той же целью.

Предварительная настройка

Для реализации передачи данных GPS по Bluetooth с одного Android-устройства на другое необходимо, чтобы гаджеты были сопряжены, поэтому настройте Bluetooth-пару на Ваших Android-устройствах.

Настройка телефона-передатчика

На телефоне-передатчике данных GPS установите и запустите приложение GPS over BT.

Программа должна автоматически выполнить поиск спутников, определить местоположение и передавать данные подключенному по Bluetooth телефону-приемнику.

Примечание: если у Вас не получится осуществить передачу данных GPS с помощью GPS over BT, попробуйте другие приложения, перечисленные в этой статье.

Настройка телефона-приемника

На телефоне-приемнике данных GPS перейдите в раздел «Настройки > Для разработчиков > Отладка», найдите пункт «Фиктивные местоположения» и активируйте его.

Примечание: Если в настройках нет пункта «Для разработчиков», его нужно активировать. Для этого зайдите в раздел «Настройки > Сведения о телефоне» и нажмите семь раз на пункт «Версия сборки».

Следующий шаг: установите на телефон-приемник и запустите приложение «Bluetooth GPS».

Это приложение будет получать данные GPS по Bluetooth от телефона-передатчика и предоставлять их операционной системе Android телефона-приемника.

В списке устройств выберите сопряженный по Bluetooth телефон-передатчик данных GPS и нажмите кнопку «Connect». Вы должны увидеть в полях ниже координаты и другую информацию о местоположении. Поставьте галочку рядом с надписью «Enable Mock GPS Provider», чтобы предоставить эту информацию системе Android и приложениям.

Запустите предпочитаемое приложение навигации, чтобы отслеживать свое местоположение (точнее местоположение телефона-передатчика координат GPS, подключенного по Bluetooth).

Достоинства и недостатки работы с GPS-приемником другого телефона

Достоинства: Экономия батареи основного Android-устройства, так как модуль Bluetooth потребляет намного меньше энергии, чем встроенный GPS-приемник. GPS координаты с подключенного телефона подхватывают почти все популярные Android-приложения навигации: Яндекс Карты, Navitel, Endomondo, OruxMaps (Google Maps — не работает ни отдельное приложение, ни карты через мобильный браузер, продолжают определять данные о местоположении по базовым станциям мобильной сети).

Недостатки: Работа с GPS-приемником подключенного по Bluetooth телефона отличается от работы с собственным GPS-модулем устройства, поскольку данные передаются по протоколу NMEA 0183, данные о местоположении обновляются с задержкой (по нашим оценкам примерно раз в 30 секунд или реже). При записи пути в популярном трекинг-приложении Endomondo хоть и отображается значок нормальной работы GPS, трек получается прерывистым.

Читайте также:  Bully anniversary edition android save

Заключение: Полноценной работы в реальном времени на Android-устройстве с GPS-приемником подключенного по Bluetooth телефона, например для определения скорости, ждать не стоит, но как определение своего местоположения на карте — вполне рабочий способ.

Источник

Используем свой телефон как внешний GPS приемник. GPS over BT в помощь!

Всем привет! У многих наверняка есть ноутбуки и планшеты на Windows, где по каким-либо причинам необходимо подключение GPS, а внешний приемник покупать не хочется. И сегодня я расскажу как выйти из этой ситуации и настроить GPS-навигацию на таких переносных устройствах через обычный смартфон, который должен иметь GPS и Bluetooth. Все скрины кликабельны!

На смартфон требуется скачать с Google Play приложение под названием GPS over BT и устанавливаем его. Включаем блютус и GPS или делаем это в самом приложении после его запуска. На экране мы видим текущее точное время, координаты в двух формах, высота над уровнем моря, вашу скорость передвижения, азимут, расстояния.

Также если нажать кнопку меню, то можно перейти к просмотру спутников.

На ПК необходимо также наличие Bluetooth, иначе подсоеденить никак у вас не получится. Обычно в ноутбуках он бывает сразу.

Такой метод работает с таким навигационным софтом, как OziExplorer, SasPlanet, 2Gis, Google Earth и другими. А покажу я вам работу на примере САС Планеты и Озика.

Так, что-то я отвлекся от процесса 🙂 , связываем далее!

В компьютере щелкаем правой кнопкой на значок блютуса и в выпавшем меню нажимаем “Открыть параметры”

В открывшемся окне переходим во вкладку “СОМ-порты”

Теперь нам необходимо добавить сюда наш телефон. Напоминаю, блютус должен быть везде включен и устройства сопряжены. Жмем на кнопку “Добавить”. В новом открывшемся окошке выставляем флажком Исходящий тип добавляемого СОМ-порта. В списке пониже наше сопряженное устройство. В списках служб должна появиться надпись “BluetoothService”, на которую надо нажать, чтобы она выделилась. Жмем “ОК”

Это окошко закрывается и в списке COM-портов мы видим наш свежесозданный, которому присвоилось значение COM6. Запомните эту цифру. Она еще пригодится. Эти оба окна можно закрыть.

Открываем нашу любимую SAS Planet и переходим в настройки.

Там во вкладке GPS требуется выставить номер СОМ порта, в данном случае 6, GPS tybe должен стоять на значении СОМ. Скорость можно не трогать. Чтож, жмем на самую большую кнопку “GPS Вкл/Выкл”. Если все вышенаписанное было сделано правильно, вы увидите сразу в этом же окне справа обнаруженные спутники и передачу данных с ними. Справа в САС планете появится боковая панель, показывающая некоторые данные, те же самые, что и главный экран приложения на телефоне. Поздравляю! У вас теперь САС Планета напрямую работает через GPS. Удобно? Удобно!

Так она показывает местоположение на топокарте:

Вторая часто использующаяся программа у копарей – OZI Explorer. И в ней GPS таким же макаром тоже можно прикрутить! Как? Да очень просто! Заходим в настройки программы, переходим во вкладку “GPS”. Тут же недалеко есть кнопочка “Find GPS Port”

Жмем на нее и видим маленькое окно, где опять же требуется выставить параметры, иначе ничего работать не будет. GPS Type выставляем “Other”. Жмем на кнопку “Find GPS”. Система малость подумает, поварит и выдаст ниже на белом фоне лог, что нашел GPS в СОМ-порту №6. Можем это все дело закрыть.

Далее открываем карту, и кликаем по волшебной кнопке с молнией. И появилась стрелочка, указывающая на ваше местоположение. Теперь с этой прогой мы можем работать полноценно!

Источник

GPS-монитор под андроид «KidsTrack»

Задача: наступает лето, дети все больше времени проводят где-то на улице, и я бы хотел знать, где они находятся. Идеальный вариант — я просто даю им с собой старый андроидный телефон, и затем наблюдаю за ними по карте на большом домашнем мониторе.
В этой статье я расскажу, почему и как я написал свое первое приложение для Андроид с функциями GPS «KidsTrack», и какие открытия при этом сделал. Статья будет полезна тем, кто недавно начал программировать под Android.

Читайте также:  Лучший видеоредактор для андроид без водяного знака

Поиски на Google Play выдали мне сотни различных приложений с функциями GPS-мониторов. Я уж начал их было перебирать, но примерно на 2-м десятке я осознал, что затраты времени на выбор могут оказаться вполне сравнимыми с затратами времени на разработку. Ведь мои функциональные требования очень просты:

  • приложение должно периодически отправлять анонимные координаты на сервер,
  • сервер должен показывать карту с маркером в соответствующем месте.

Это все!

Есть еще требования, которые не связаны с функциональностью, но которые не менее важны:

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

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

Одним словом, попробовав несколько приложений из Google Play, я решил написать трекер сам.

Далее, все тривиально: установил Android Studio, нарисовал единственный экран с 3-мя кнопками, написал, как мне казалось, сервис, отладил все в эмуляторе, затем в USB-дебаггере, вроде все заработало.

Но как только попробовал запустить на физическом устройстве — начались сюрпризы. О некоторых из них я хотел бы рассказать.

Сюрпризы управления питанием

Реальные андроид-устройства стремятся отключить себе питание при любой возможности. Постоянно получают питание лишь весьма примитивные системные часы (модуль мобильной связи здесь он не рассматривается). В часах есть регистр(ы), куда посредством AlarmManager можно записать время следующей пробудки процессора телефона. Если процессор не разбудят часы, то он так и будет продолжать спать ничего не делая. Сделано это по простой причине: включенный процессор разрядит батарею за час. Поэтому если надо, чтобы сервис что-то делал раз в минуту, то приемы десктопного программирования вроде Thread.sleep(60000) не подойдут, а вместо этого надо пользоваться AlarmManager, примерно вот так:

В этом примере мы программируем AlarmManager разбудить телефон через 1 минуту, и отправить интент START_ALARM всем приложениям, кто на него подписан.

Прием интентов во всех учебниках осуществляется объектом BroadcastReceiver, однако если нам нужно, чтобы:

  1. телефон пробуждался из глубокого сна
  2. запускал наш сервис,
  3. не засыпал до завершения работы

то BroadcastReceiver не подойдет, и вместо него надо использовать WakefulBroadcastReceiver — этот объект гарантировано не допустит впадения телефона в сон до тех пор, пока не будет вызван метод completeWakefulIntent. Во всяком случае у меня так и не получилось заставить BroadcastReceiver работать надежно на физическом устройстве.

Если ваш сервис теоретически может выходить в интернет через WiFi, то вам необходимо позаботится, чтобы у WiFi-модуля во время соединения тоже было включено питание, так как оно у него отдельное. Если этого не сделать, то бывает трудно понять почему приложение не работает на физическом устройстве: ведь при отладке на эмуляторе или устройстве, подключенном к дебаггеру через USB, питание модуля WiFi не выключается, и все отлично работает. Запретить отключать питание WiFi можно так:

Сюрпризы GPS

В первой версии приложения я сделал определение координат устройства только с использованием провайдера «GPS». И очень было мне удивительно наблюдать на сервере, как более 90% устройств не смогли определить координаты и присылали нули.
Как оказалось, GPS – довольно капризная технология с множеством ограничений, низкой скоростью и непредсказуемой точностью. При использовании традиционной GPS сенсор приемника должен получить данные обо всех GPS-спутниках (а их более 2х десятков), среди всех них выбрать наиболее подходящие, и уже по ним вычислять координаты. Получение данных и перебор могут занимать 5 минут и более, поэтому первый «холодный» старт GPS всегда самый медленный.
Если GPS-приемник имеет часы и помнит прошлые координаты и положения спутников, то он может использовать эти данные для определения тех спутников, к которым можно привязаться в данный момент. Поэтому повторный запуск GPS обычно происходит намного быстрее.
В современных смартфонах первоначальное грубое определение координат может осуществляться по близлежащим передающим сотовым вышкам, что так же позволяет ускорить «холодный старт» GPS. Для использования этого способа требуется разрешение на использование провайдера «network» в Manifest-е, так для определения я координат вышек может использоваться интернет.
Еще одна функция провайдера «network» — определять координаты по видимым WiFi — сетям. Определение осуществляется путем поиска координат видимых в данный момент сетей по их именам и MAC-адресам на серверах Google через интернет. Разумеется, в фоновом режиме и без лишних уведомлений идет и обратный трафик: телефон, когда определил свои координаты по GPS, может по-тихому послать данные об окружающих его WiFi-сетях на серверы Google, чтобы таким образом поддерживать актуальное состояние базы WiFi-сетей. Грустные размышления о потенциальной власти Google над владельцами Андроидов и WiFi-сетей оставим за рамками этой статьи…
Прояснив все эти нюансы я в авральном порядке подправил приложение, чтобы оно использовало не только провайдера «GPS» но и «network». После этого типичная последовательность вызовов метода onLocationChanged стала выглядеть так:

Читайте также:  Android как копировать вставить

Я все-таки очень хотел задействовать GPS, так как обычно это самый точный способ, поэтому я установил время ожидания сигнала от GPS-сенсора 30 секундам, а если это первый пуск — 2-м минутам. И если GPS-сенсор так и не сработал, то используются координаты от провайдера «network». После этого изменения устройства стали присылать на сервер нормальные, ненулевые координаты.
Точность GPS также оказалась весьма условной. Например нередко точность координат, получаемых с сенсора неподвижного лежащего устройства может выглядеть так:

Из этих данных ясно, что GPS хорош для нахождения зданий или других больших объектов, но найти человека в толпе, или телефон в сугробе будет непросто.

Отдельно стоит упомянуть питание GPS. Модуль GPS весьма прожорлив, поэтому в учебниках рекомендуют при вызове requestLocationUpdates не устанавливать слишком короткие параметры минимального интервала по времени и по расстоянию. Но в моих опытах с 3-мя различными физическими устройствами оказалось, что постоянно включенный модуль GPS садит батарею одинаково при различных параметрах. Потом уже я нашел где-то упоминание, что эти параметры влияют только на частоту вызова метода onLocationChanged, но не обязательно на энергопотребление самого сенсора.

Прочие сюрпризы

Google Play: Первая версия пролежала на Google Play два дня, после чего была заменена новой, с исправленным алгоритмом определения координат. Несмотря на то, что это произошло уже две недели назад, я на сервере продолжаю видеть, что очень часто продолжают происходить активации старой версии. Я уже и добавил сообщение о необходимости обновления на веб-странице мониторинга, но это не всегда помогает. Непонятно откуда вообще люди берут старую версию. Я не знаю чем это объяснить.

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

Яндекс.Карты: Страница мониторинга изначально была реализована с использованием API Яндекс.Карт, так как там не требуется ID, и нет ограничений на количество загрузок карты в день. Но оказалось, что на слабых устройствах Яндекс.Карты или тормозят, или вообще не открываются. Пришлось эту страничку делать в 2-х вариантах: Яндекс.Карты для настольных компьютеров, и Google Maps для слабых мобильных устройств. Google Maps оказались существенно быстрее.

Источник

Оцените статью