USB-host что это такое и для чего он нужен на телефоне планшете, компьютере.
USB-host что это такое? На этой странице вы найдете информацию, что такое USB хост на телефоне, планшете, компьютере и для чего он нужен. Попробуем объяснить простыми словами, чтоб было понятно каждому, кто ищет об этом информацию в интернете. USB-хост одна из полезных функций на телефоне, планшете или другом устройстве.
Телефоны с поддержкой USB-хост позволяет подключать к смартфону флеш накопители, клавиатуру, мыши, внешние жесткие диски и другие USB устройства. То есть вы можете подключить к телефону или планшету клавиатуру и мышь как на компьютере и более комфортно пользоваться своим гаджетом. На сегодняшний день данной функцией оснащены большинство смартфонов и планшетов и лишь некоторые более доступные по цене телефоны не поддерживают эту технологию. В ближайшем будущем USB-хост на Андроид смартфоне или на телефонах с другой операционной системой станет обычной функцией и будет на всех устройствах, но в любом случае если вы хотите купить смартфон или планшет с поддержкой USB-host то лучше уточнить у продавца или посмотреть в характеристиках устройства. Из явных плюсов телефонов с USB-host конечно можно выделить возможность подключения флеш накопителей и внешних жестких дисков. Я не думаю, что много пользователей подключают клавиатуру и мышь к телефону с Android или с другим ОС, а вот флешки и жесткие диски это удобно и реально этой возможностью пользуются много владельцев Андроид смартфонов и планшетов.
Можно одновременно к телефону через USB-хост подключать несколько устройств, для этого можно купить кабель с двойным или тройным USB выходом. Флеш накопители, клавиатуру, мыши, внешние жесткие диски — это далеко не все что можно подключать к смартфону с поддержкой USB-хоста, можно подключать и другие устройства. Можно и более детально разъяснить что такое USB-хост на телефоне, но думаю что и этой информации вполне достаточно чтоб в общем понять для чего он нужен, да и не хотел особо растягивать статью описывая все мелочи, которые поймут не все пользователи гаджетов.
- Надеюсь, вы узнали что такое USB-host и для чего он нужен на смартфоне.
- Если у вас есть еще информация, то просим поделиться инфой ниже в отзывах.
- Возможно, оставленная именно вами информация окажется самой полезной.
- Спасибо за отзывчивость, взаимную помощь и полезные советы по теме USB хост.
Отзывы USB-host.
Добавить отзыв или поделиться полезной информацией по теме страницы.
ОБНОВИТЬ СТРАНИЦУ С ОТЗЫВАМИ
Автор:Леонид Васильевич Борзенков
03-02-2021
18 час. 24 мин.
Сообщение:
Спасибо. Полезная информация.
Автор:Иван
25-12-2020
18 час. 59 мин.
Сообщение:
А как проверить есть ли на телефоне юсб хост?
Оставляя отзывы, Вы помогаете
другим сделать правильный выбор.
ВАШЕ МНЕНИЕ ИМЕЕТ ЗНАЧЕНИЕ.
Источник
Что такое USB-host и USB OTG
Я начинаю серию справочных статей по отдельным компонентам и функциям различных электронных устройств — планшетов, ноутбуков, ридеров, плееров и так далее. Это такой своеобразный ликбез в сфере бытовой электроники. Я постараюсь сделать эти статьи понятными для максимально широкого круга людей.
Тема сегодняшней статьи — USB-host (USB-хост). Это весьма примечательная функция, которой оснащается достаточно большое количество устройств (в основном, правда, довольно дорогих), и рассказать о ней определенно стоит. Также я расскажу и о функции USB OTG — фактически, более современной разновидности USB-хоста.
Если говорить максимально просто и доступно, то наличие USB-хоста на каком-нибудь устройстве означает возможность подключения к нему различных внешних устройств — например, флэшек, внешних жестких дисков, кардридеров, плееров, фотоаппаратов и так далее. Весьма интересна возможность подключения и внешней «периферии» — клавиатур, мышек и так далее.
Устройство с функцией USB-хоста обладает полноценным портом USB и специальным программным обеспечением (в частности, драйверами), которое позволяет осуществлять работу с подключаемыми устройствами: передавать на них файлы, копировать файлы с них, использовать подключенное устройство в качестве клавиатуры и так далее.
Что интересно, к устройству с USB-хостом можно подключать также USB-хабы — устройства, которые подобны сетевым тройникам. Например, на планшетах обычно имеется только один порт USB. Подключив к нему USB-хаб (а стоит он недорого), вы получите уже два или даже четыре порта, что весьма удобно — например, к одному можно подсоединить клавиатуру, а к другому подключать флэшки.
В каких случаях USB-хост удобен и нужен? Да во многих. Согласитесь, возможность скопировать файлы на плеер, планшет или ридер без подключения его к компьютеру не может не радовать. Вам надо просто подключить к устройству флэшку или какое-либо другое устройство, с которого вам нужно перенести файлы.
Весьма приятна возможность перенести снимки с фотоаппарата на планшет или плеер с жестким диском, и тем самым освободить память фотоаппарата, сделать еще больше снимков. Подключение клавиатуры к планшету — тоже очень приятная возможность. Удобны и принтеры с наличием USB-хоста: к ним можно напрямую подключать фотоаппараты, телефоны, флэшки и печатать снимки или документы прямо с них; компьютер для этого совершенно необязателен.
При этом стоит отметить, что само наличие функции USB-хоста еще не гарантирует его нормальную работу. В частности, процесс обмена файлами через USB может осуществляться достаточно сложным и неудобным образом — в качестве примера можно привести PocketBook 302 (это, кстати, единственный ридер, оснащенный USB-хостом). Какие-то устройства могут просто не подключиться ввиду отсутствия драйверов или неких недоработок программистов, писавших программное обеспечение для USB-хоста.
Именно поэтому я советую перед покупкой того или иного устройства проверить, насколько качественно реализована в нем опция USB-host. Попробуйте подключить флэшку, посмотреть, насколько легко и удобно можно скопировать файлы с нее и на нее. Если у вас есть usb-клавиатура, которую вы планируете использовать вместе с покупаемым устройством, не лишним будет проверить корректность ее работы. Если же вы соберетесь купить такую клавиатуру уже после покупки самого устройства, то возьмите с собой в магазин это устройство и проверьте, насколько корректно будут с ним работать представленные в магазины клавиатуры.
Стоит отметить, что сейчас имеются в продаже устройства и с поддержкой так называемого USB OTG. Я бы сказал даже, что USB OTG сейчас встречается в устройствах довольно часто, чаще, чем классический USB-хост. В чем основное отличие USB OTG? В том, что USB OTG не предполагает наличие отдельного классического полноразмерного порта USB. Для подключения периферийных устройств используется порт microUSB или miniUSB, который, вообще говоря, служит главным образом для связи устройства с компьютером. На устройстве с USB OTG этот порт фактически совмещает в себе функции USB-host (подключение периферии) и USB-device (подключение к компьютеру).
Чтобы к miniUSB/microUSB порту с поддержкой OTG подключить флэшку или, скажем, клавиатуру, необходимо приобрести специальный переходник, который стоит порядка 500 рублей (при желании его можно найти по более низкой цене или же вовсе сделать самому — в интернете есть инструкции). Затем нужно вставить этот переходник в порт miniUSB/microUSB, а к соответствующему выходу переходника подключить нужное вам периферийное устройство.
И тут опять же стоит отметить, что не на всех устройствах USB OTG реализовано хорошо. Где-то поддержка USB OTG может быть заявлена, но ввиду отсутствия необходимого программного обеспечения она не работает. Пример — ридеры Onyx Boox. Также стоит отметить, что внешние жесткие диски по протоколу USB OTG подключить вряд ли удастся: они потребляют слишком много энергии; планшет «прокормить» их просто не в состоянии.
Так мы плавно переходим к основному недостатку USB-хоста (как классического, так и USB OTG): его активное использование способствует быстрой разрядке устройства. Конечно, клавиатура много энергии пожирать не будет, а вот постоянно подключенная и использующаяся флэшка — будет.
Под конец стоит ответить на вопрос: почему USB OTG сейчас популярнее, чем обычный USB-host? Ответ, на самом деле, довольно прост: USB OTG позволяет уменьшить толщину и вес устройства. В случае с классическим USB-host’ом в устройство надо встроить полноразмерный USB-порт (соответственно, увеличивается толщина) и обычный mini/micro-USB порт — для подключения к компьютеру (увеличивается и итоговый вес). В случае с USB OTG надо установить только один mini/microUSB-порт, просто многофункциональный — работающий и на вход, и на выход. Более того, USB OTG отличается более низким энергопотреблением, хотя и не позволяет поэтому подключать такие прожорливые устройства, как внешние жесткие диски.
Но USB OTG не лишен и недостатков, главным из которых является необходимость покупки переходника и постоянной его переноски с собой.
Посмотреть, поддерживает ли интересующее вас устройство опцию USB-host или USB OTG, можно на странице описания устройства в разделе «Технические характеристики» («Спецификации»). Описание, разумеется, можно найти на сайте производителя устройства, а также на сайтах многих магазинов.
17 Replies to “Что такое USB-host и USB OTG”
Кстати: может сделать небольшой обзор- справочник по кабелям? Что такое AM-AF, AM-BM и прочие абревиатуры. Для чего они нужны, полезны и т.д
Можно сюда и HDMI добавить. Сейчас в продаже как минимум три разновидности(модификации) этих кабелей. Последняя, самая дорогая позволяет использовать этот кабель для всего- вплоть до передачи интернета. Т.е из него пытаются сделать универсальный стандарт.
Увы, я совершенно не разбираюсь кабелях, во всех этих AM-AF, AM-BM и тому подобных разновидностях.
Самое оригинальное применение AM-AF : если пользуетесь модемом от сотового оператора, то при плохом приеме удлинить соединение с помощью этого кабеля и подвесить модем к потолку или выкинуть в форточку. 😉
. Но USB OTG не лишен и недостатков — невозможность подключения USB-хаба (разветвителя).
А как же это видео?
http://samsung-galaxy.mobi/samsung-galaxy-s3-i-dzhoystik-posredstvom-usb-otg/
Спасибо за информацию и ссылку! Сейчас сам удивляюсь, с чего взял, что нельзя подключить юсб-хаб к устройству с OTG:)
Убрал соответствующее предложение.
Hi All!
К моему Samsung Galaxy Tab 7.7 через USB-OTG кабель непосредственно подключаются маломощные (до 500мА потребляемого тока) USB-устройсва, как-то USB Flash, USB Card Readers, etc., а также мощные USB устройства типа EBook, Ext USB HDD с подключенным собственным питанием. Через внешний USB-hab со своим источником питания поключаются внешние USB HDD, не имеющие собственного источника питания — проверено на Jet HDD 0.5TB, который получает питание только через USB. Причем, в отличе от многих китайских недопланшетов, видится несколько поключенных к хабу устойств, а не «одно из…» То же самое могу сказать про Samsung Galaxy S3. Про другие врать не буду, пока лично не проверю! 🙂
Yours sincerely, Dmitry aka wcat
А в программном отношении USB OTG это просто USB или нет?
Насколько я знаю, нет. Нужны специальные драйвера. Бывает, что устройство оснащено USB OTG аппаратно, но программно возможность «общения» с внешними устройствами не поддерживается.
Зачем вообще эта глупость на планшетах? Обычный порт вполне бы подошёл как на нетбуках. Как и для usb типа В, так и для типа А есть варианты и мини, и микро. Через тип А нельзя подключать устройство к компу, но зачем вообще это надо? Мы же не подключаем нетбуки к компу через USB и не паримся по этому поводу. USB otg больше нужен телефонам, но планшет всё же ближе к нетбуку, чем к телефону.
Добрый день. при подключении планшета через USB OTG к ПК насколько свободно можно оперировать фалами на планшете?
USB-OTG — это всё извращение на самом деле, полезное, если только, для смартфонов на тот случай, когда понадобится к смартфону флешку подключить, но при этом сохранить возможность подключать смартфон к компу. Это, кстати, также является пережитком прошлого, из тех времён, когда не было флешек и приходилось покупать специальные кабеля для подключения телефонов к компьютерам. Ну, может быть остался в этом какой-то смысл, всё-таки не все компьютеры оснащены картридером для microSD-флешек. Вот это тот единственный случай, когда от USB-OTG есть реальная польза.
Использование же USB-OTG на планшетах — это реальный маразм, поскольку планшет подключать к компу смысла нет никакого, ибо есть встроенный wifi, нормального размера дисплей, короче говоря, есть возможность по-человечески работать в сети. А раз нет необходимости подключаться к компу, то, спрашивается, ЗАЧЕМ ВООБЩЕ НА ПЛАНШЕТЕ УСТАНАВЛИВАТЬ USB-ПОРТ ТИПА B? Это и есть главный вопрос, но такое впечатление, что производители воспринимают планшет как устройство более близкое к телефону, нежели чем к ноутбуку, по-другому эту глупость в виде установки USB портов типа B не объяснишь. Вполне себе замечательно можно было бы установить порт microUSB типа A и подключать к планшету не только флешки, но и принтеры, например: драйвера есть и для Windows, и для Android (ибо на Linux’e это дело собрано).
Салют,Колян! Ну вот я тоже пользовался флешками для передачи данных с телефона на планшет(и обратно).
Пока телефон перестал запускаться с флешкой.Теперь собрал один кабель,соединив по цветам два конца(папа-папа) с микроЮСБ,так как в продаже оного нет:-(.Не пойму,почему планшет на видит телефон,не появляется даже значок ЮСБ соединения.Может,что не правильно делаю?
Где можно приобрести нужные драйвера для отг?
Думаю, что в первую очередь стоит проверить сайт производителя гаджета, к которому нужны драйвера. Если там их нет, стоит связаться с их техподдержкой.
А хде реклама? хотел отблагодарить за инфу, а рекламы нету..
Источник
Usb host для андроид что это
Когда устройство на базе Android работает в режиме USB host, оно становится главным устройством на шине USB, подает питание на шину, и производит энумерацию для подключенных к шине устройств USB. Режим хоста USB поддерживается в Android 3.1 и более новых версиях. Непонятные термины касательно шины USB см. в USB in a NutShell [2] (на русском языке), а непонятные термины и сокращения, касающиеся Androd, в Словарике [5].
[Обзор API]
Чтобы разобраться в режиме USB host для Android, важно понимать, с какими классами устройств USB Вам предстоит работать. В следующей таблице описаны классы USB host API в пакете android.hardware.usb.
Таблица 1. USB Host API.
Класс | Описание |
---|---|
UsbManager | Позволяет Вам производить энумерацию подключенных устройств USB и организовать обмен с ними. |
UsbDevice | Представляет подключенное устройство USB, и содержит методы для доступа к идентификационной информации, интерфейсам и конечным точкам. |
UsbInterface | Представляет интерфейс устройства USB определяющий набор функционала устройства. Устройство может иметь один или большее количество интерфейсов, с которыми можно взаимодействовать. |
UsbEndpoint | Представляет конечную точку интерфейса (interface endpoint), которая дает канал связи для этого интерфейса. Интерфейс может иметь 1 или большее количество конечных точек, и обычно имеет отдельно конечную точку для ввода и отдельно конечную точку для вывода, чтобы можно было вести обмен данными в двух направлениях. |
UsbDeviceConnection | Представляет соединение с устройством, которое переносит данные между Android и конечными точками. Этот класс позволяет Вам отправить блок данных туда и обратно, синхронно или асинхронно. |
UsbRequest | Представляет асинхронный запрос для обмена с устройством через UsbDeviceConnection . |
UsbConstants | Определяет константы USB, соответствующие определениям в linux/usb/ch9.h ядра Linux. |
В большинстве ситуаций Вам нужно использовать все эти классы (UsbRequest требуется только если Вы осуществляете асинхронную связь), когда происходит взаимодействие с устройством USB device. Обычно Вы задействуете UsbManager для получения доступа к нужному UsbDevice. Когда Вы получили устройство USB, то для обмена данными нужно найти подходящий интерфейс UsbInterface и конечную точку UsbEndpoint на этом интерфейсе. Как только Вы получили правильную конечную точку, откройте соединение UsbDeviceConnection для обмена данными с устройством USB.
[Требования к Android Manifest]
Следующий список описывает, что Вам нужно добавить в манифест приложения перед тем, как начать работать с USB host API:
• Поскольку не все устройства на базе Android гарантированно поддерживают USB host API, включите элемент , который декларирует, что Ваше приложение использует фичу android.hardware.usb.host .
• Установите минимальный уровень SDK приложение на API Level 12 или более высокий, потому что USB host API не представлены в более старых уровнях API.
• Если Вы хотите, чтобы Ваше приложение получало оповещение о подключенных к шине USB устройствах, укажите пару элементов и для intent android.hardware.usb.action.USB_DEVICE_ATTACHED в главной активности приложения. Элемент указывает на внешний XML-файл ресурса, в котором указана идентификационная информация об устройстве, подключение которого нужно детектировать.
В XML-файле ресурсов продекларируйте элементы для устройств USB, которые хотите отфильтровать. Следующий список описывает атрибуты элемента . Обычно указываются идентификаторы вендора (vendor ID, VID) и продукта (product ID, PID), если хотите фильтровать специфическое устройство, и используется class, subclass и protocol, если хотите фильтровать группы (классы) устройств USB, такие как устройства хранения (mass storage devices, MSD) или цифровые камеры. Вы можете не указывать ни одного из этих атрибутов, в этом случае фильтрация подойдет под любое устройство USB, не только то, что Вам нужно. Вот имена атрибутов для устройств USB:
vendor-id
product-id
class
subclass
protocol (device или interface)
Сохраните XML-файл ресурсов в директории res/xml/ . Имя файла ресурса (без расширения .xml) должно быть то же самое, как указано в элементе . Формат файла ресурса XML показан в примере ниже (пример манифеста и соответствующего ему файла ресурсов):
В этом случае следующий файл ресурсов будет сохранен в файл res/xml/device_filter.xml (здесь указано, что должно фильтроваться любое устройство USB с указанными параметрами):
Примечание: указанные здесь в текстовом виде значения VID (vendor-id) и PID (product-id) должны быть не в шестнадцатеричном виде, а в десятичном. Таким образом, если например у Вас VID=0x16C0, PID=0x05DF, то вы должны преобразовать эти шестнадцатеричные значения в десятичные, и их в текстовом виде указать в XML:
VID 0x16C0 -> 5824
PID 0x05DF -> 1503
Если необходимо, чтобы под фильтр попадали все без исключения подключаемые устройства USB, то просто удалите из элемента usb-device его атрибуты:
[Как работать с устройствами USB, подключенными к Android]
Когда пользователи подключают устройства USB к Android, то система Android может определить интересно ли подключенное устройство USB для Вашего приложения. Если это так, то Вы можете установить обмен с устройством, если это нужно. Для этого приложение должно выполнить:
1. Определение подключенных устройств USB, используя intent фильтр для оповещения о ситуациях, когда пользователь подключает устройство USB, или путем энумерации устройств USB, которые уже подключены.
2. Запросить у пользователя разрешение на подключение к устройству USB, если оно еще не получено.
3. Далее можно осуществлять взаимодействие с устройством USB путем чтения и записи данных через соответствующие конечные точки интерфейса (interface endpoints).
[Определение наличия подключенного устройства USB]
Ваше приложение может распознать устройства USB либо с помощью использования intent-фильтра, который будет оповещать подключение пользователем устройств, либо путем энумерации устройств USB, которые уже подключены. Использование фильтра intent полезно, если Вы хотите иметь в приложении возможность автоматического детектирования (подключения) нужного устройства. Энумерация подключенных устройств USB полезна, если Вы хотите получить список всех подключенных устройств, или если Ваше приложение не делает фильтр для intent.
Использование intent filter
Чтобы приложение могло обнаружить какое-то отдельное устройство USB, Вы можете указать intent filter, чтобы фильтровать android.hardware.usb.action.USB_DEVICE_ATTACHED intent. Вместе с этим intent filter Вам нужно указать файл ресурса, который задает свойства устройства USB, такие как VID и/или PID. Когда пользователь подключает устройство, которое подходит под условие фильтра устройства, система представляет диалог, запрашивающий у пользователя, хочет ли он запустить Вашу программу. Если пользователь подтвердит запуск, то Ваше приложение автоматически будет иметь право на доступ (permission access) к устройству, пока устройство не будет отключено.
В следующем примере показано, как декларировать intent filter:
Следующий пример показывает, как декларировать соответствующий файл ресурса, который указывает интересующие Вас устройства USB:
В activity приложения Вы можете получить объект UsbDevice, который представляет подключенное устройство USB из intent примерно так:
Энумерация устройств
Если Ваше приложение нуждается в инспекции всех устройств USB, уже подключенных во время работы приложения, то оно может произвести энумерацию устройств на шине USB. Используйте метод getDeviceList() для получения карты всех устройств USB (hash map), которые сейчас подключены. В списке hash map есть имена устройств USB, которые Вы можете использовать для получения доступа к устройству.
Если необходимо, Вы также можете просто получить итератор из hash map и обработать каждое устройство друг за другом:
[Получение права на взаимодействие с устройством USB]
Перед тем, как начать обмен с устройством USB, Ваше приложение должно запросить на это разрешение от пользователя.
Примечание: если Ваше приложение использует intent filter, чтобы распознать подключенные устройства USB, то оно автоматически принимает разрешение, если пользователь разрешает разрешает Вашему приложению обработать intent. Если нет, то Вы должны в приложении явным образом запросить разрешение перед подключением к устройству.
Явный запрос на разрешение может быть необходим в некоторых ситуациях, таких как если Ваше приложение делает энумерацию уже подключенных устройств USB, и затем хочет обмениваться данными с ними. Вы должны проверить право на доступ к устройству, перед тем как сделать попытку взаимодействовать с ним. Если этого не сделать, то Вы получите runtime error (ошибка во время выполнения), когда пользователь не дал разрешения на доступ к устройству.
Чтобы явно получить разрешение, создайте сначала broadcast receiver (широковещательный приемник). Этот receiver прослушивает intent, которое получает broadcast, когда Вы вызываете requestPermission(). Вызов requestPermission() отображает диалог для пользователя с запросом разрешения на подключение к устройству USB. В следующем примере кода показано, как создать broadcast receiver:
Для того, чтобы зарегистрировать broadcast receiver, добавьте в метод onCreate() Вашей activity следующий код:
Чтобы отобразить диалог, запрашивающий у пользователей разрешение на подключение к устройству, вызовите метод requestPermission():
Когда пользователь ответит на этот диалог, Ваш broadcast receiver получит intent, который содержит расширение EXTRA_PERMISSION_GRANTED, представляющее суть ответа в двоичном виде. Проверьте его на значение true перед тем, как подключиться к устройству.
[Обмен с устройством USB]
Обмен с устройством USB может быть либо синхронным, либо асинхронным. В любом случае Вы должны создать новый поток, который будет обрабатывать все перемещения данных, чтобы не блокировать на ожидании поток интерфейса (UI thread). Чтобы правильно установить обмен с устройством, Вам нужно получить соответствующие объекты UsbInterface и UsbEndpoint устройства, с которым Вы хотите наладить обмен, и отправлять запросы в эти конечные точки с помощью UsbDeviceConnection . В общем случае Ваш код должен делать следующее:
• Нужно проверить атрибуты объекта UsbDevice , такие как product ID (идентификатор продукта, PID), vendor ID (идентификатор производителя, VID), или класс устройства — чтобы определить, хотите ли Вы соединиться именно с этим устройством USB.
• Когда принято положительное решение на обмен с этим устройством USB, найдите подходящий UsbInterface (), который Вы хотите использовать для обмена с подходящей UsbEndpoint интерфейса (конечные точки и их привязка к интерфейсу также задана в дескрипторах USB).
Прим. переводчика: интерфейс — это некая логическая сущность, описывающая метод взаимодействия с устройством USB. И интерфейсу привязаны конечные точки — другая логическая сущность, олицетворяющая какой-то буфер данных в устройстве USB. Наличие конкретного интерфейса (он обычно в устройстве USB один, но интерфейсом может быть и несколько), его тип, привязка к интерфейсу конечных точек, тип конечных точек — все это зависит от дескрипторов устройства USB (подробнее см. [2]). Дескрипторы устройств USB автоматически считываются системой Android при энумерации и подключении устройств USB.
Интерфейсу может принадлежать одна или большее количество конечных точек (endpoint). Обычно для осуществления двунаправленного обмена имеются 2 конечные точки — одна конечная точка работает на ввод от устройства (IN endpoint), а другая на вывод в устройство (OUT endpoint).
• Когда Вы нашли корректную конечную точку, откройте UsbDeviceConnection к этой конечной точке.
• Предоставьте данные, которые Вы хотите передать в конечную точку методами bulkTransfer() или controlTransfer() . Вы должны провести эту операцию передачи данных в другом потоке, чтобы не блокировать главный поток интерфейса пользователя (main UI thread). Для дополнительной информации по использованию потоков в Android см. [3].
Следующий кусок кода показывает тривиальный способ осуществить синхронную передачу данных. Ваш реальный рабочий код должен содержать больше логики, чтобы корректно найти нужный интерфейс и конечные точки для обмена, и также должен передавать данные в отдельном потоке (чтобы не блокировать main UI thread, и чтобы приложение визуально не тормозило [4]):
Чтобы отправить данные асинхронно (без ожидания), используйте класс UsbRequest для инициализации очереди на асинхронном запросе, и затем ждите результата с помощью вызова requestWait() .
Для дополнительной информации см. пример AdbTest, который показывает как делать асинхронные bulk передачи, и пример MissleLauncher, который показывает как асинхронно слушать interrupt endpoint.
[Прекращение обмена с устройством USB]
Когда Вы завершили обмен с устройством USB, или устройство USB было отключено, закройте UsbInterface и UsbDeviceConnection вызовом releaseInterface() и close() . Чтобы прослушивать события отключения, создайте broadcast receiver примерно так:
Создание broadcast receiver в приложении, не в манифесте, позволит Вашему приложению во время выполнения обрабатывать только события отключения. С таким методом события отключения будут отправлены только приложению, которое сейчас работает, и не всем приложениям.
Источник