Usb manager android что это

Подключаем USB-устройства

5-й курс/Закрытая зона

Метки: UsbAccessory , UsbDevice , UsbManager , UsbDeviceConnection , UsbInterface , UsbEndpoint , UsbRequest

Android (API 12) поддерживает подключение к планшетам и смартфонам периферийных устройств через USB, например, мышки или флешки. Учтите, что не все модели могут поддерживать поддерживать подобную функциональность. Как правило, у планшетов это больше распространено. Я подключал мышку к своему Nexus 7 и в этом случае на экране появляется курсор. Кабель для подключения мышки (или других устройств) к планшету называют OTG.

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

Я расскажу только необходимый минимум, который нам понадобится.

Android-устройство может иметь два режима: USB device mode или USB host mode.

Когда мы подключаем телефон или планшет к компьютеру, то используется режим USB device mode. В этом случае питание идёт от компьютера к нашему устройству и оно заряжается. Если устройству требуется больше тока, чем может предоставить компьютер, то ему нужно иметь свой источник питания, но я такого не встречал пока.

Если мы подключаем какое-нибудь устройство к телефону или планшету через USB-порт, то в этом случае используется режим USB host mode. В этом режиме уже телефон обеспечивает питание для подключаемого гаджета, типа флешки, мышки и каких-то приборов и игрушек. Такой режим ещё называют OTG, возможно вы видели в продаже такие OTG-кабели. Они и позволяют подключить мышку к планшету.

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

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

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

Можно также упомянуть USB accessory mode, который появился с версии Android 3.0. Этот режим, например, используется при соединении телефона и фотокамеры.

Читайте также:  Hotspot android что это

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

Основным пакетом для работы с протоколом USB является android.hardware.usb, который появился в Android 3.1 (API 12).

UsbAccessory

Класс UsbAccessory необходим при режиме USB accessory mode и позволяет узнать различную информацию о подключённом устройстве: название производителя, модель, версия и т.д.

UsbDevice

Класс UsbDevice отвечает за устройства, подключённые в режиме USB host mode и содержит информацию о возможностях, протоколе, классе и идентификаторе и т.д. При работе используется сервис UsbService, доступный через UsbHostManager

UsbManager

UsbManager — один из основных классов для работы с USB. Позволяет обмениваться информацией между устройствами, например, получить список присоединённых устройств.

UsbDeviceConnection

Класс UsbDeviceConnection содержит методы для отправки и получения данных.

UsbInterface

Класс UsbInterface отвечает за интерфейсы подключенных устройств.

UsbEndpoint

Класс UsbEndpoint отвечает за endpoint.

UsbRequest

Класс UsbRequest нужен для чтения и записи данных от устройств в асинхронном режиме.

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

Источник

Usb manager android что это

Класс UsbManager (находится в пакете android.hardware.usb.UsbManager ) позволяет получить доступ к состоянию USB и в конечном итоге (через иерархию других классов) взаимодействовать с устройствами USB, подключенными к Android как к хосту USB. Класс UsbManager (как и другие классы для поддержки хоста USB) появились начиная с API Level 12. В публичном API в настоящее время поддерживается только режим хоста.

При доступе к устройствам USB обычно используется следующая цепочка использования классов (UsbManager является стартовой точкой взаимодействия с устройствами USB):

Вы можете получить экземпляр этого класса путем вызова Context.getSystemService() .

Общую информацию по поддержке режимов Host и Accessory см. в [2].

[Обзор класса UsbManager]

Константы
String ACTION_USB_ACCESSORY_ATTACHED Broadcast Action: широковещательное сообщение о событии подключения аксессуара USB.
String ACTION_USB_ACCESSORY_DETACHED Broadcast Action: широковещательное сообщение о событии отключения аксессуара USB.
String ACTION_USB_DEVICE_ATTACHED Broadcast Action: широковещательное сообщение о событии подключения устройства USB.
String ACTION_USB_DEVICE_DETACHED Broadcast Action: широковещательное сообщение о событии отключения устройства USB.
String EXTRA_ACCESSORY Имя дополнения для широковещаний ACTION_USB_ACCESSORY_ATTACHED и ACTION_USB_ACCESSORY_DETACHED , содержащих объект UsbAccessory для аксессуара USB.
String EXTRA_DEVICE Имя дополнения для широковещаний ACTION_USB_DEVICE_ATTACHED и ACTION_USB_DEVICE_DETACHED , содержащих объект UsbDevice для устройства USB.
String EXTRA_PERMISSION_GRANTED Имя дополнения, добавляемого к PendingIntent , передаваемого в requestPermission(UsbDevice, PendingIntent) или requestPermission(UsbAccessory, PendingIntent) , содержащих двоичное значение, показывающее — получено ли разрешение от пользователя на подключение к устройству, или нет.
Читайте также:  Alertdialog android studio fragment
Общедоступные (public) методы
UsbAccessory[] getAccessoryList ()

Примечание переводчика: в описании методов фигурируют некие аксессуары USB (UsbAccessory) и устройства USB (UsbDevice). Что же такое «аксессуар USB»? Оказывается, что аксессуар USB это тоже устройство USB, с той лишь разницей, что это устройство поддерживает специальный протокол аксессуаров Android (Android accessory protocol). Другими словами, аксессуар USB — это устройство Android, работающее в режиме специального устройства USB, поддерживающее Android accessory протокол.

[Константы UsbManager]

public static final String ACTION_USB_ACCESSORY_ATTACHED

Broadcast Action: широковещательное сообщение о событии подключения аксессуара USB. Этот intent отправляется, когда к Android в режиме хоста USB подключается аксессуар USB.

EXTRA_ACCESSORY содержит UsbAccessory для подключенного аксессуара

public static final String ACTION_USB_ACCESSORY_DETACHED

Broadcast Action: широковещательное событие о отключении аксессуара USB. Этот intent отправляется, когда отключается аксессуар USB.

EXTRA_ACCESSORY содержит UsbAccessory для подключенного аксессуара, который был отключен

public static final String ACTION_USB_DEVICE_ATTACHED

Broadcast Action: то же самое, что и ACTION_USB_ACCESSORY_ATTACHED, только относится к устройству USB.

public static final String ACTION_USB_DEVICE_DETACHED

Broadcast Action: то же самое, что и ACTION_USB_ACCESSORY_DETACHED, только относится к устройству USB. Этот intent отправляется, когда устройство USB от ключается от шины USB, и сам Android при этом находится в режиме хоста USB.

  • EXTRA_DEVICE содержит UsbDevice для отключаемого устройства USB

public static final String EXTRA_ACCESSORY

Имя дополнения для броадкастов ACTION_USB_ACCESSORY_ATTACHED и ACTION_USB_ACCESSORY_DETACHED , содержащего объект UsbAccessory для аксессуара.

public static final String EXTRA_DEVICE

Имя дополнения для броадкастов ACTION_USB_DEVICE_ATTACHED и ACTION_USB_DEVICE_DETACHED , содержащее объект UsbDevice для устройства.

public static final String EXTRA_PERMISSION_GRANTED

Имя дополнения к PendingIntent , передаваемого в requestPermission(UsbDevice, PendingIntent) или requestPermission(UsbAccessory, PendingIntent) , содержащее величину boolean, означающее состояние получения разрешения на подключение к устройству — дано разрешение или нет.

[Общедоступные (public) методы UsbManager]

public UsbAccessory[] getAccessoryList ()

Возвращает список подключенных в настоящее время аксессуаров USB (в текущей реализации в списке может быть самое большее 1 аксессуар).

Возвращает

список аксессуаров USB, или null, если ни одного аксессуара не подключено.

public HashMap getDeviceList ()

Возвращает HashMap, содержащую все устройства USB, подключенные в настоящее время. Имя устройства USB является ключевым в возвращаемой HashMap. Результат будет пуст, если нет подключенных устройств, или если режим хоста неактивен, или если режим хоста не поддерживается.

Возвращает
  • HashMap, содержащую все подключенные устройства USB.

public boolean hasPermission (UsbDevice device)

Возвратит true, если вызывающий код имеет разрешение на доступ к устройству. Разрешение может быть дано временно через requestPermission(UsbDevice, PendingIntent) , или пользователем, выбравшим вызывающую программу в качестве приложения по умолчания для подключенного устройства (настраивается через элементы intent-filter файла AndroidManifest.xml).

Параметры
device устройство для проверки наличия разрешения
Возвращает
  • true, если вызывающий код получил разрешение

public boolean hasPermission (UsbAccessory accessory)

То же самое, только относится к аксессуару USB. Временно разрешение может быть получено через вызов requestPermission(UsbAccessory, PendingIntent) или пользователем, который выбрал вызывающую программу в качестве приложения по умолчанию для подключенного аксессуара.

Параметры
accessory аксессуар, у которого проверяется наличие разрешения на подключение
Возвращает
  • true, если вызывающий код имеет разрешение

public ParcelFileDescriptor openAccessory (UsbAccessory accessory)

Открывает дескриптор файла для чтения (и записи) данных из(в) аксессуара USB.

Параметры
accessory открываемый аксессуар USB
Возвращает
  • дескриптор файла, или null , если аксессуар нельзя открыть.

public UsbDeviceConnection openDevice (UsbDevice device)

Открывает устройство USB, так чтобы можно было передавать или принимать данные с использованием UsbRequest .

Параметры
device устройство для открытия
Возвращает
  • UsbDeviceConnection , или null , если открытие потерпело неудачу

public void requestPermission (UsbAccessory accessory, PendingIntent pi)

Запрашивает временное разрешение для указанного пакета на получение доступа к аксессуару USB. В результате может отобразиться диалог получения разрешения от пользователя, если ранее такое разрешение не было дано. Результат (успешный или нет) будет возвращен через PendingIntent pi. Если результат успешный, то это дает вызывающему коду разрешение на доступ к аксессуару до тех пор, пока аксессуар не будет отключен. К результату pi будут добавлены следующие дополнения:

EXTRA_ACCESSORY содержит аксессуар, переданный в этот вызов

EXTRA_PERMISSION_GRANTED содержит boolean, показывающий наличие предоставленного пользователем разрешения

Параметры
accessory аксессуар для получения разрешения
pi PendingIntent для возвращаемого результата

public void requestPermission (UsbDevice device, PendingIntent pi)

Запрашивает временное разрешение для указанного пакета на доступ к устройству USB. В результате может отобразиться диалог получения разрешения от пользователя, если ранее такое разрешение не было дано. Результат (успешный или нет) будет возвращен через PendingIntent pi. Если результат успешный, то это дает вызывающему коду разрешение на доступ к устройству до тех пор, пока оно не будет отключено. К результату pi будут добавлены следующие дополнения:

  • EXTRA_DEVICE содержит устройство, переданное в этот вызов
  • EXTRA_PERMISSION_GRANTED содержит boolean, показывающий наличие предоставленного пользователем разрешения

Источник

Читайте также:  Андроид 10 установить или нет
Оцените статью