Android поддерживает разные периферийные устройства USB и аксессуары USB для Android (Android USB accessories, специальные аппаратные устройства, поддерживающие протокол аксессуаров Android). При этом Android может работать в 2 режимах: как аксессуар USB (т. е. устройство USB) и как хост USB (т. е. главный на шине USB, который управляет USB-устройствами). В режиме аксессуара USB внешняя аппаратура USB работает как хост USB (обычно в такой роли выступает компьютер, в порт USB которого подключено портом USB устройство Android). Примерами таких аксессуаров могут служить роботизированные контроллеры, док-станции, диагностическое и музыкальное оборудование, киоски, картридеры, и многое другое. Это дает устройствам на основе Android, не имеющим возможностей хоста, средство взаимодействовать с аппаратурой USB. Аксессуары Android USB должны быть разработаны так, чтобы чтобы они могли работать с устройствами Android, с поддержкой протокола обмена аксессуаров Android (Android accessory communication protocol, см. [2]). В режиме хоста Android-устройство работает как хост. В этом режиме оно может обмениваться данными с таким устройствами USB, как цифровые камеры, клавиатуры, мыши и игровые контроллеры. Устройства USB, которые были разработаны для широкого спектра применения, все еще могут взаимодействовать с приложениями Android.
На рисунке 1 показаны различия между этими двумя режимами. Когда Android-устройство работает в режиме хоста (USB host), оно становится хостом на шине USB, и подает питание на шину USB. Когда Android работает в режиме аксессуара USB (USB device, USB accessory mode), подключенная снаружи аппаратура USB работает как хост и подает питание на шину.
Рис. 1. Android: режимы USB хоста и аксессуара (устройства) USB.
Оба режима, и USB accessory, и USB host напрямую поддерживаются в Android 3.1 (API level 12) или также на более новых платформах. USB accessory mode также портирован и на платформу Android 2.3.4 (API level 10) в виде добавочной библиотеки (add-on library), чтобы поддержать широкий спектр устройств. Производители устройств сами решают - нужно ли добавлять эту библиотеку в конечный образ системы устройства.
Примечание: поддержка режимов USB host и USB accessory полностью зависит от аппаратуры устройства, независимо от уровня платформы (т. е. независимо версии OS Android, установленной на устройстве, и наличия библиотеки). Вы можете отфильтровать устройства, которые поддерживают USB host и accessory с помощью элемента < uses-feature >. Подробности см. в документации про USB accessory [3] и USB host [4].
[Кое что о режиме отладки]
Когда отлаживаете приложения, которые используют фичи USB accessory или USB host, вероятно Вам понадобиться подключить к своему Android через USB некую аппаратуру USB. Это соединение не позволит работать мосту adb через соединение USB (см. [5]). Но Вы все еще можете соединиться с сервером adb через сеть. Вот что нужно сделать, чтобы разрешить работу adb через сетевое соединение:
1. Подключите Android-устройство через USB к Вашему компьютеру. 2. Из каталога platform-tools/ Вашего SDK выполните команду adb tcpip 5555. 3. Введите команду adb connect < device-ip-address >:5555. После этого Вы подключитесь к adb через сеть, и можете выдавать другие команды adb наподобие adb logcat. 4. Чтобы установить Ваше устройство на прослушивание шины USB, выполните команду adb usb.
[Ссылки]
1. USB Host and Accessory site:developer.android.com. 2. Accessory Development Kit Android accessory communication protocol site:developer.android.com. 3. USB Accessory site:developer.android.com. 4. USB Host site:developer.android.com. 5. Отладка разрабатываемого приложения Android. |