MCP

четверг, 2 декабря 2010 г.

Подключение внешнего GPS-приемника к телефону на Android

У меня обновление телефонного парка, теперь есть замечательный Motorola DEFY, когда-нибудь расскажу про него подробнее, а также впечатлениях от Android по сравнению с Windows Mobile. Пока есть ощущение большой сыроватости андроида в плане фич. Если WM телефон выглядит как маленький компьютер со своими достоинствами и недостатками, но это именно продвинутый телефон с возможностью установки программ и отсутствием некоторых вещей.

Об одной такой вещи я и хочу сейчас рассказать, возможно это кому-нибудь поможет, ибо по данной проблеме слишком много ответов вида "нафиг?" и "нельзя" и конкретное решение теряется между ними.

Задача состоит в том, чтобы подключить внешний USB GPS-приёмник к телефону на Android. Для начала небольшая отбивка зачем это нужно (для тех, кто читает мой этот пост не ради конкретной цели подключить ).

  • Внешний приемник имеет свою батарею и не расходует телефонную
  • Внешний может быть постоянно включен, соответственно быть постоянно в курсе спутников (в телефоне норовит всё время отключиться, чтобы поэкономить батарейку)
  • Внешний приёмник имеет лучшее качество приёма, а чтобы было ещё лучше — его можно расположить в зоне лучшего сигнала (может быть полезно в машине). 
Итак, приёмник есть, стандартными средствами его не подключить, ибо в отличие от всех других телефонов и компьютеров, при подключении его к устройству не создаётся виртульный bluetooth COM-порт, к которому могут подключаться программы. Все программы используют системный API работы с GPS, который знать не хочет про внешние устройства.
Но есть оригинальное решение, основанное на том, что для каких-то целей в телефоне есть фунционал Location Mocks, это такие, виртуальные заглушки для определения местоположения. Это полезно для разработчиков, но зачем это конечному пользователю? Впрочем, поскольку данный функционал есть, один хороший человек написал программу, которая использует внешний приемник и изображает из себя заглушку для определения местоположения. Причём программа абсолютно бесплатная и выпущена под GPL.

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

9 комментариев:

  1. Это в телефоне есть GPS и вроде бы не очень надо. А вот многие планшетники на Андроид его не имеют и для превращения их в навигатор, наверное, и было сие придумано.

    ОтветитьУдалить
  2. да и не только , очень удобно т.к. встроенный gps быстро сажает батарею, а внешний очень долго "живет"

    ОтветитьУдалить
  3. у меня в телефоне GPS как бы есть - но ни хрена не работает. Поменять - нереально, в ремонт нести не хочется, да и не факт что починят, а GPS нужон.

    ОтветитьУдалить
  4. интересно) но это только для устройств с голубым зубом...а так чтобы USB GPS подобное есть?

    ОтветитьУдалить
  5. интересно) но это только для устройств с голубым зубом...а так чтобы USB GPS подобное есть?
    Навряд ли. Нужно чтобы у устройства поддерживался USB Host, были соответствующие драйвера, и кто-то написал программу, оперирующую подобным устройством.

    ОтветитьУдалить
    Ответы
    1. у меня USB GPS заработал с бюджетнейшим планшетом manta MID04 EasyTab. встроенного gps нету. взял попользоваться старенький модуль gps holux gr 213, установил navitel. долго мучался - не работало - спутники не видит, место не определяет. секрет в следующем-сначала запустить любое приложение для навигации - карты, навител, а только потом втыкать модуль и ждём. на определение места при выкинутом за окно на 6 этаже модуле или в машине уходит минуты 3-5. потом работает нормально. Но: навител может показывать 0 спутников, а маршрут кладёт и ведёт довольно точно

      Удалить
  6. добавлю: позже обнаружил, что карты гугл, предустановленные производителем, при включённом доступе в интернет тоже вполне нормально определяют место, работает локатор и пр.

    ОтветитьУдалить
    Ответы
    1. Зависит от местоположения. Они могут определять по базовым станициям сотовых операторов и WiFi-точкам доступа. Если ни того, ни другого в округе нет, то определение будет неважнецким.

      Удалить
  7. Существует еще один бесплатный вариант Bluetooth GPS Provider (mobile-j.de) в андроид-маркете https://play.google.com/store/apps/details?id=de.mobilej.btgps

    ОтветитьУдалить