Android поддерживает различные периферийные USB-устройства и USB-аксессуары Android (аппаратное обеспечение, реализующее протокол аксессуаров Android) в двух режимах: USB-аксессуар и USB-хост. В режиме USB-аксессуара внешнее USB-оборудование выступает в качестве USB-хоста. Примеры аксессуаров:
- контроллеры робототехники
- станции проката
- диагностическое и музыкальное оборудование;
- киоски
- устройства чтения карт
и многое другое. Это позволяет устройствам Android, не имеющим возможностей хоста, взаимодействовать с USB-оборудованием. USB-аксессуары должны быть разработаны для работы с устройствами Android и соответствовать протоколу связи Android. В режиме USB-хоста устройство Android выступает в качестве хоста. Примеры устройств включают цифровые камеры, клавиатуры, мыши и игровые контроллеры. USB-устройства, предназначенные для широкого спектра приложений и сред, могут взаимодействовать с приложениями для Android, которые могут правильно взаимодействовать с устройством.
На рисунке 1 показаны различия между этими двумя режимами. Когда устройство Android находится в режиме хоста, оно действует как USB-хост и питает шину. Когда устройство Android находится в режиме USB-аксессуара, подключенное USB-оборудование (в данном случае USB-аксессуар Android) выступает в качестве хоста и питает шину.

Рисунок 1. Режимы USB-хоста и аксессуара
Режимы USB-аксессуара и хоста напрямую поддерживаются в Android 3.1 (уровень API 12) и более поздних версиях платформы. Режим USB-аксессуара также поддерживается в Android 2.3.4 (уровень API 10) в виде дополнительной библиотеки, что позволяет использовать его на большем количестве устройств. Производители устройств могут выбирать, включать ли дополнительную библиотеку в образ системы устройства.
Примечание. Поддержка режимов USB-хоста и аксессуара зависит от аппаратного обеспечения устройства, а не от версии платформы. Вы можете отфильтровать устройства, которые поддерживают USB-хост и аксессуары, с помощью элемента <uses-feature>.
Дополнительную информацию можно найти в документации по аксессуарам и хостам USB.
Что нужно учитывать при отладке
При отладке приложений, использующих USB-аксессуары или функции хоста, к вашему устройству Android, скорее всего, подключено USB-оборудование. Это не позволит вам установить adb-подключение к устройству Android через USB. Вы по-прежнему можете использовать adb при подключении к сети. Чтобы включить adb по сетевому подключению:
- Подключите устройство Android к компьютеру с помощью USB-кабеля.
- В каталоге SDK
platform-tools/введите в командной строкеadb tcpip 5555. - Нажмите
adb connect <device-ip-address>:5555. Теперь вы подключены к устройству Android и можете выполнять обычные командыadb, напримерadb logcat. - Чтобы настроить устройство на прослушивание через USB, введите
adb usb.