Класс UsbDevice представляет устройство USB, подключенное к системе Android, работающей в режиме хоста. Каждое устройство содержит один или большее количество интерфейсов (доступ к ним осуществляется через класс UsbInterface), каждый из интерфейсов в свою очередь содержит некое количество конечных точек (доступ к ним осуществляется через класс UsbEndpoint). Конечные точки олицетворяют каналы передачи данных через шину USB.
При доступе к устройствам USB обычно используется следующая цепочка использования классов (UsbDevice является промежуточной точкой взаимодействия с устройствами USB):
UsbManager -> UsbDevice -> UsbInterface -> UsbEndpoint -> UsbDeviceConnection
[Обзор класса UsbDevice]
Класс UsbDevice содержит информацию (связанную с объектами UsbInterface и UsbEndpoint), которая описывает возможности устройства USB. В конечном счете эта информация компонуется и создается на основе данных, полученных из стандартных дескрипторов устройства USB.
Чтобы обмениваться данными с устройством, Вы открываете UsbDeviceConnection к устройству, и используете UsbRequest для отправки или приема данных через конечную точку. Метод controlTransfer(int, int, int, int, byte[], int, int) при этом используется для запросов к нулевой конечной точке (передачи данных через неё в обе стороны). Это специальная конечная точка управления (default control endpoint), которая имеется в наличии на каждом устройстве USB.
Класс UsbDevice находится в пакете android.hardware.usb.UsbDevice, расширяет (extends) объект Object, и реализует (implements) объект Parcelable. Класс UsbDevice (как и поддержка режима хоста USB) была добавлена в Android начиная с API Level 12. Общую информацию по поддержке режимов Host и Accessory см. в [2].
[Поля]
[Общедоступные методы (Public Methods)]
public int describeContents ()
Описывает некие специальные объекты, содержащиеся в этом упорядоченном представлении Parcelable.
Возвращает
- битовую маску, показывающую набор специальных объектов, упорядоченных через Parcelable.
public boolean equals (Object o)
Сравнивает этот экземпляр с указанным объектом и показывает, равны они или нет. Чтобы быть эквивалентным, o должен представлять тот же самый объект, как и этот экземпляр, с использованием сравнения, специфичного для класса. Общее правило - сравнение должно быть рефлексивным, симметричным и транзитивным. Кроме того, любая ссылка на объект, кроме null, никогда не равна null.
Реализация по умолчанию возвращает true только если this == o . См. руководство Writing a correct equals method, если хотите реализовать свой собственный метод сравнения.
Общее правило для методов equals и hashCode() состоит в том, что если equals возвратит true для любых двух объектов, то hashCode() должен вернуть одинаковое значение для этих двух объектов. Это означает, что подклассы от Object обычно перезадают либо оба этих метода, либо ни один из них.
Параметры
o |
объект, который сравнивается с этим экземпляром. |
Возвращает
true , если указанный объект эквивалентен с этим объектом, иначе false .
public int getDeviceClass ()
Возвращает поле класса устройства из дескрипторов. Некоторые полезные константы для классов устройства USB можно найти в UsbConstants .
public static int getDeviceId (String name)
public int getDeviceId ()
Возвращает уникальный целочисленный идентификатор ID для этого устройства. Это удобно для клиентов, которым нужно использовать некое уникальное представление для устройства, отличающееся от имени устройства. Значение идентификаторов ID не постоянное при переподключениях устройств USB.
Возвращает
- идентификатор устройства (device ID)
public String getDeviceName ()
Возвращает имя устройства. В стандартной реализации это путь к устройству в файловой системе usbfs. Пример такого имени: /dev/bus/usb/002/002.
public static String getDeviceName (int id)
То же самое, только возвращает имя устройства по его идентификатору.
public int getDeviceProtocol ()
Возвращает поле протокола устройства (из дескрипторов устройства USB).
public int getDeviceSubclass ()
Возвращает поле подкласса устройства (из дескрипторов устройства USB).
public UsbInterface getInterface (int index)
Возвращает интерфейс устройства UsbInterface по указанному индексу (номеру). Интерфейсов в устройстве USB может быть несколько, хотя обычно интерфейс только один.
public int getInterfaceCount ()
Возвращает количество интерфейсов UsbInterface в этом устройстве. Интерфейсов в устройстве USB может быть несколько, хотя обычно интерфейс только один.
public int getProductId ()
Возвращает product ID (PID) для этого устройства. Идентификатор продукта PID вместе с идентификатором VID обычно используют для программного поиска нужного устройства USB, т. е. того устройства USB, с которым программа должна работать.
Возвращает
- идентификатор продукта устройства USB (product ID, PID)
public int getVendorId ()
Возвращает vendor ID для устройства. Идентификатор производителя VID вместе с идентификатором PID обычно используют для программного поиска нужного устройства USB, т. е. того устройства USB, с которым программа должна работать.
Возвращает
- идентификатор производителя устройства USB (vendor ID, VID)
public int hashCode ()
Возвращает целочисленный хэшкод для этого объекта. По правилам любые два объекта, для которых метод equals(Object) возвращает true , должны возвращать одинаковое значение кода хэша из метода hashCode(). Это означает, что в подклассах от Object обычно либо перезадаются (override) оба этих метода (), либо ни один из них.
Обратите внимание, что значения хэш-функции не должны изменяться в течение долгого времени, за исключением случаев, когда изменилась какая-то информация, используемая для сравнения.
См. руководство Writing a correct hashCode method, если Вы хотите реализовать свой собственный метод расчета хэша hashCode .
Возвращает
хэшкод (контрольную сумму) объекта.
public String toString ()
Возвращает строку с кратким, удобным для чтения человеком описанием этого объекта. Рекомендуется для подклассов перезадавать (override) этот метод и предоставлять реализацию, которая учитывает тип и данные объекта. Реализация по умолчанию эквивалентна следующему выражению:
getClass().getName()+'@'+Integer.toHexString(hashCode())
См. документ Writing a useful toString method, если хотите создать свою собственную реализацию метода toString .
Возвращает
- печатаемое текстовое представление этого объекта.
public void writeToParcel (Parcel parcel, int flags)
Сводит этот объект в Parcel.
Параметры
parcel |
Parcel, в который объект должен быть записан. |
flags |
Дополнительные флаги, сигнализирующие о том, как этот объект должен быть записан. Может быть равен либо 0, либо PARCELABLE_WRITE_RETURN_VALUE . |
[Ссылки]
1. UsbDevice site:developer.android.com. 2. Android как USB хост и как USB устройство. |