Usb контроллер для андроид

Работа с устройствами USB в Android

В недавней статье на Geektimes в комментариях возник вопрос о поддержке в ОС Android периферии, подключенной к шине USB. Действительно, большинство вендорского ПО, к примеру, для работы с принтерами и МФУ, поддерживает только подключение по сети. Однако это не означает, что в самой ОС Android нет такой возможности — это означает лишь то, что большинство устройств не имеют полноценного USB хоста, и далеко не все имеют поддержку OTG. По сети же могут работать абсолютно все без исключения.

Большинство устройств на Android при наличии порта OTG поддерживают на уровне системы (ядра Linux или стандартных компонентов Android) следующие классы устройств:

  • Устройства ввода — клавиатуры, мыши, джойстики (HID)
  • Накопители (Mass Storage)

Несколько реже:

  • Сотовые модемы
  • Сетевые адаптеры
  • Вебкамеры

Хабы поддерживаются при наличии полноценных хост-портов, но не поддерживаются на портах OTG.

Подробнее список устройств, поддерживаемых на уровне ядра Linux, можно получить в sysfs:

$ ls /sys/bus/usb/drivers

Если же модуль в принципе доступен в исходниках ядра Linux, но не включен в Android — не стоит рассчитывать на то, что его получится собрать и расставить на все целевые системы.

Однако, начиная с Android 3.1 (API 12), в системе содержатся средства, достаточные для поддержки на уровне приложения любой USB периферии. Данные средства описаны в разделе USB Host руководства по Android API. Здесь же я хочу привести примеры реальной работы с некоторыми видами устройств.

Права доступа

Как и для прочих действий, Android требует, чтобы приложение получило разрешение на доступ к USB периферии. Существует 2 способа получить такое разрешение:

  • Задекларировать список устройств в AndroidManifest
  • Явно показать пользователю диалог “разрешить”

Поскольку для моих задач лишние вопросы к пользователю были нежелательны, я использовал первый способ.

Итак, нам необходимо добавить в манифест следующее:

А в res/xml/device_filter.xml вписать следующее:

Отмечу, что хотя общепринято указывать VID:PID в 16-ричной системе счисления, здесь они должны быть указаны в десятичной. В документации заявляется, что возможно указание только класса, без VID и PID, но у меня это не стало работать.

Принтеры

На примере принтера я покажу, как непосредственно использовать API android.hardware.usb. На уровне передачи данных все принтеры поддерживают стандартый класс USB устройств:

Читайте также:  Наилучший лаунчер для андроид

Класс предельно простой. В рамках этого класса устройство должно поддерживать:

  • Обязательный bulk out endpoind для отправки данных на принтер
  • Опциональный bulk in endpoind для получения статуса принтера
  • 3 управляющих запроса

Код, приведенный ниже, предоставляет функциональность, аналогичную устройству /dev/usb/lp в Linux. Далее нам нужен фильтр, преобразующий исходный документ в пакет данных, понятный конкретной модели принтера. Но это тема иной статьи. Как один из вариантов — можно собрать ghostscript с помощью NDK.

Для работы с устройством нам в первую очередь нужно:

1. Найти устройство. В примере для простоты я ищу первый попавшийся:

2. Получить endpoint’ы:

3. Непосредсвенно открыть устройство:

4. После этого мы можем читать и писать в устройство:

5. По завершении работы — закрыть устройство:

Преобразователи USB-Serial

В отличие от притеров, преобразователи USB-Serial гораздо менее стандартизированы. Существует несколько распространенных чипов, для которых существенно отличается установка параметров последовательного порта — битрейта, чётности и проч. К счастью, есть библиотека github.com/mik3y/usb-serial-for-android, поддерживающая практически все существующие чипы. Библиотека полностью скрывает USB API, сводя все необходимые действия к минимуму вызовов с минимумом параметров.

1. Найти и открыть устройство:

2. Установить параметры последовательного порта:

3. Читать и писать в порт:

4. По завершении работы — закрыть порт:

Резюме

Надеюсь, что мне удалось показать, что работа с USB периферией достаточно проста и логична. Безусловно, реализация протоколов некоторых конкретных устройств не блещет простотой — но это проявится в любой системе в одинаковой степени.

Все приведенные примеры я взял из реального проекта, лишь исключил очевидные проверки, оставив только ключевые строки.

Источник

Подключение геймпада к Android

Развитие технологий породило множество мобильных игр, которые часто не уступают классическим компьютерным развлечениям. На Андроид сейчас выпускается большое количество игр с отличной графикой и продуманным сюжетом. Создатели стараются максимально адаптировать сенсорный экран для управления, однако в ряде случаев гораздо удобнее было бы пользоваться гемпадом. Особенно это характерно для современных экшнов, гонок и прочих 3D развлечений. Возможность подключения геймпада к Андроиду рассматривается в данной статье.

Можно ли подключить джойстик к Андроиду

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

С подключенным геймпадом пользователи мобильных устройств смогут играть в такие игры как GTA, Фифа, NFS и многие другие. Представлены как новинки, так и портированная с компьютера классика, позволяющая ощутить ностальгию и вновь окунуться в тот мир, который радовал много лет назад.

Читайте также:  Флатаут 2 для андроид

Подключить джойстик к системе Андроид возможно и это не займет много времени. Причем подключаться могут как беспроводные модели, так и привычные проводные устройства. Можно использовать обычные многофункциональные геймпады или же обратить внимание на контроллер от какой-либо другой игровой приставки.

Инструкция по подключению джойстиков к Андроиду (проводных по USB-кабелю и беспроводных по Bluetooth)

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

Особое внимание стоит уделять соблюдению всех необходимых требований к синхронизации устройств. Только в этом случае можно будет гарантировать стабильное функционирование игровой системы.

Все манипуляции со своим устройством вы делаете на свой страх и риск, если не уверенный лучше не рисковать.

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

Сейчас в продаже можно встретить следующие разновидности контроллеров:

  • Проводные устройства для ПК и приставок.

  • Предназначенные специально для мобильных устройств.

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

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

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

Порядок подключения проводного геймпада:

  1. Зайти в магазин приложения на мобильном устройстве и скачать программу Tincore Keymapper.

  1. Подсоединить к телефону кабель USB On The Go или USB OTG.

  1. Подключить контроллер к кабелю.

  1. Зайти в приложение и выставить необходимые настройки.

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

Несколько более сложным представляется процесс подключения беспроводного геймпада к системе Андроид.

Подключить беспроводной контроллер к мобильной платформе можно только при наличии соответствующих прав на управление гаджетом (root-права).

В этом случае процесс синхронизации состоит из следующих действий:

  1. На мобильное устройство необходимо установить программу Sixaxis Compatibility Checker.
Читайте также:  Для android мои калории

  1. С помощью программы проверить насколько джойстик совместим с гаджетом — нажать кнопку Start и немного подождать.

  1. Теперь программу SixaxisPairTool необходимо установить на персональный компьютер. Перед этим рекомендуется осуществить подключение джойстика через USB-кабель и его полную синхронизацию с компьютером.

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

  1. На смартфон или планшет устанавливается программа Sixaxis Controller и запускается. На этом этапе будет проверяться наличие root-прав, и если их не будет, воспользоваться возможностями утилиты не получится. Утилита выдаст локальный адрес Bluetooth, который состоит из 12 цифр.

  1. Адрес Bluetooth нужно будет ввести на компьютере в программе SixaxisPairTool. Набор цифр вписывается в ячейку Change Master, после чего необходимо нажать кнопку Update. Значение Current Master изменится на введенное.

  1. Используемый джойстик отключается от компьютера (USB-кабель больше не понадобится) и подключается к Android посредством кнопок PS или X.

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

Приложение для настройки джойстика на Андроид

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

Популярной программой считается USB/BT Joystick Center. Это приложение легко устанавливается на смартфон или планшет через официальный магазин. С помощью этого приложения можно переназначать клавиши контроллера или непосредственно транслировать все действия с геймпада на мобильное устройство.

Что делать, если джойстик не подключается к телефону

Иногда даже при соблюдении всех правил нет возможности подключить джойстик к системе Андроид. Это может быть связано со следующими проблемами:

  • На смартфоне или планшете отсутствуют заранее полученные root-права.
  • Мобильный гаджет и контроллер попросту несовместимы.
  • Ошибки в приложении.

Если первая попытка подключения не увенчалась успехом, рекомендуется повторить процедуру несколько раз, так как всегда есть риск случайной ошибки со стороны пользователя.

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

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

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

Источник

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