MCP

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

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

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

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

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

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

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