USB-host что это такое и для чего он нужен на телефоне планшете, компьютере.

image2016-02-12 в 5:55, , рубрики: android, driver, usb, периферия, Разработка под android

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

Несколько реже:

  • Сотовые модемы
  • Сетевые адаптеры
  • Вебкамеры

Хабы поддерживаются при наличии полноценных хост-портов, но не поддерживаются на портах OTG.

Подробнее список устройств, поддерживаемых на уровне ядра Linux, можно получить в sysfs:

$ ls /sys/bus/usb/drivers Если же модуль в принципе доступен в исходниках ядра Linux, но не включен в Android — не стоит рассчитывать на то, что его получится собрать и расставить на все целевые системы.

Однако, начиная с Android 3.1 (API 12), в системе содержатся средства, достаточные для поддержки на уровне приложения любой USB периферии. Данные средства описаны в разделе USB Host руководства по Android API. Здесь же я хочу привести примеры реальной работы с некоторыми видами устройств.

Права доступа

Как и для прочих действий, Android требует, чтобы приложение получило разрешение на доступ к USB периферии. Существует 2 способа получить такое разрешение:

  • Задекларировать список устройств в AndroidManifest
  • Явно показать пользователю диалог “разрешить”

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

Итак, нам необходимо добавить в манифест следующее:

 ...                                

А в res/xml/device_filter.xml вписать следующее:

<?xml version="1.0" encoding="utf-8"  <resources>                          

Отмечу, что хотя общепринято указывать VID:PID в 16-ричной системе счисления, здесь они должны быть указаны в десятичной. В документации заявляется, что возможно указание только класса, без VID и PID, но у меня это не стало работать.

Принтеры

На примере принтера я покажу, как непосредственно использовать API android.hardware.usb. На уровне передачи данных все принтеры поддерживают стандартый класс USB устройств:

int UsbConstants.USB_CLASS_PRINTER = 7; 

Класс предельно простой. В рамках этого класса устройство должно поддерживать:

  • Обязательный bulk out endpoind для отправки данных на принтер
  • Опциональный bulk in endpoind для получения статуса принтера
  • 3 управляющих запроса
int GET_DEVICE_ID = 0; int GET_PORT_STATUS = 1; int SOFT_RESET = 2; 

Код, приведенный ниже, предоставляет функциональность, аналогичную устройству /dev/usb/lp в Linux. Далее нам нужен фильтр, преобразующий исходный документ в пакет данных, понятный конкретной модели принтера. Но это тема иной статьи. Как один из вариантов — можно собрать ghostscript с помощью NDK.

Для работы с устройством нам в первую очередь нужно:

1. Найти устройство. В примере для простоты я ищу первый попавшийся:

UsbDevice findDevice() {     for (UsbDevice usbDevice: mUsbManager.getDeviceList().values()) {         if (usbDevice.getDeviceClass() == UsbConstants.USB_CLASS_PRINTER) {             return usbDevice;         } else {             UsbInterface usbInterface = findInterface(usbDevice);             if (usbInterface != null) return usbDevice;         }     }     return null; }  UsbInterface findInterface(UsbDevice usbDevice) {     for (int nIf = 0; nIf < usbDevice.getInterfaceCount(); nIf++) {         UsbInterface usbInterface = usbDevice.getInterface(nIf);         if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_PRINTER) {             return usbInterface;         }     }     return null; } UsbDevice mUsbDevice = findDevice(); UsbInterface mUsbInterface = findInterface(mUsbDevice); 

2. Получить endpoint’ы:

for (int nEp = 0; nEp < mUsbInterface.getEndpointCount(); nEp++) {     UsbEndpoint tmpEndpoint = mUsbInterface.getEndpoint(nEp);     if (tmpEndpoint.getType() != UsbConstants.USB_ENDPOINT_XFER_BULK) continue;      if ((mOutEndpoint == null)             && (tmpEndpoint.getDirection() == UsbConstants.USB_DIR_OUT)) {         mOutEndpoint = tmpEndpoint;     } else if ((mInEndpoint == null)             && (tmpEndpoint.getDirection() == UsbConstants.USB_DIR_IN)) {         mInEndpoint = tmpEndpoint;     } } if (mOutEndpoint == null) throw new IOException("No write endpoint: " + deviceName); 

3. Непосредсвенно открыть устройство:

mConnection = mUsbManager.openDevice(mUsbDevice); if (mConnection == null) throw new IOException("Can't open USB connection:" + deviceName); mConnection.claimInterface (mUsbInterface, true); 

4. После этого мы можем читать и писать в устройство:

public int read(final byte[] data) throws IOException {     int size = Math.min(data.length, mInEndpoint.getMaxPacketSize());     return mConnection.bulkTransfer(mInEndpoint, data, size, getReadTimeout()); }  public int write(final byte[] data, final int length) throws IOException {     int offset = 0;      while (offset < length) {         int size = Math.min(length - offset, mInEndpoint.getMaxPacketSize());         int bytesWritten = mConnection.bulkTransfer(mOutEndpoint,             Arrays.copyOfRange(data, offset, offset + size), size, getWriteTimeout());          if (bytesWritten <= 0) throw new IOException("None written");         offset += bytesWritten;     }     return offset; } </code>

5. По завершении работы — закрыть устройство:

mConnection.close(); 

Преобразователи USB-Serial

В отличие от притеров, преобразователи USB-Serial гораздо менее стандартизированы. Существует несколько распространенных чипов, для которых существенно отличается установка параметров последовательного порта — битрейта, чётности и проч. К счастью, есть библиотека github.com/mik3y/usb-serial-for-android, поддерживающая практически все существующие чипы. Библиотека полностью скрывает USB API, сводя все необходимые действия к минимуму вызовов с минимумом параметров.

1. Найти и открыть устройство:

UsbSerialPort mUsbSerialPort; UsbManager mUsbManager = (UsbManager) DEVICE.getSystemService(Context.USB_SERVICE); String type = “FTDI”;  for (UsbDevice usbDevice: mUsbManager.getDeviceList().values()) {     UsbSerialDriver usbSerialDriver = UsbSerialProber.probeSingleDevice(usbDevice);     if (usbSerialDriver == null) continue;     if (!type.equals(usbSerialDriver.getShortDeviceName())) continue;     mUsbSerialPort = usbSerialDriver.getPort(0);     mUsbSerialPort.open(mUsbManager);     break; } 

2. Установить параметры последовательного порта:

mUsbSerialPort.setParameters(baudRate, dataBits, stopBits, parity); 

3. Читать и писать в порт:

public int read(final byte[] data) throws IOException {     return mUsbSerialPort.read(data, getReadTimeout()); }  public int write(final byte[] data, final int length) throws IOException {     return mUsbSerialPort.write(data, length, getWriteTimeout()); } 

4. По завершении работы — закрыть порт:

mUsbSerialPort.close(); 

Резюме

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

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

Автор: sandworm

Источник

—> imageParallel Space — 32bit Support 4.6 5.0+ Google Play Store 4.5 4.1+ Google Apps Installer 4.5 4.4+ IQOS Connect 4.4 4.3+ SHAREit 4.4 4.1+ Пульт для любого телевизора — универсальный пульт 4.2 4.1+ Яндекс 4.7 5.0+ Gboard 5 5.0+ ТОП поиска скачать tank starsspaces apk скачатьdisorder androidяндекс маркет андроидскачать nordvpnmicrosoft teams androidteamviewer host androidскачать icq newскачать dawn of zombiesdev settings apk Популярное в блоге Пикантные игры на раздевание для Android Игры Полезные приложения 18+, которые могут пригодиться в постели Обзоры ТОП-5 лучших эмуляторов Windows для Android Обзоры Лучшие эмуляторы Nintendo Switch на Android Обзоры Топ-10 приложений для прослушивания аудиокниг на Android Обзоры Скачать APKРекламное Объявление

Приложение Для Android Usb Host Controller, Разработанное SztupY, Находится В Категории Инструменты. Текущая Версия — 1.10, Выпущенная На 2018-09-18. Согласно Google Play Usb Host Controller Достигнуто Более 2 Миллион Установок. Usb Host Controller В Настоящее Время Имеет 5 Тысяча Оценок Со Средним Значением 3.0

Показывает перечисляемые устройства USB и позволяет подключать внешние устройства хранения в файловую систему. Поддерживает дополнительные функции, такие как возможность перезагрузить таблицы разделов и переустановку USB устройств. Он может также контролировать функциональные возможности USB Host устройств S5PC210 (Galaxy S, Nexus S и Samsung Captivate), если они были обновлены с соответствующим обновлений ядра операционной системы.Приложение не использует USB Host API, поэтому он также может работать на старых, 2.3 устройств. Из-за этого, однако, почти все функции (для листинга USB устройств) требует корня (суперпользователя) доступа, а также последнюю версию BusyBox установлен! Также отметим, что на более новых версиях Android, некоторые усовершенствования системы безопасности могут также препятствовать этому приложению работать должным образом.Приложению требуется устройство, которое имеет функциональные возможности USB Host (или USB OTG). Большинство современных устройств высокого класса имеют эту возможность. Проверьте документацию и спецификацию вашего устройства (эта функциональность обычно называется USB OTG или USB Host)Если устройство не имеет встроенной функции USB OTG, есть патчи на ядро ​​для некоторых старых устройств, чтобы включить функцию, наиболее особенно для:- S5PC210 (Hummingbird) телефоны на базе Samsung (Galaxy S, Captivate, Nexus S)- QSD8250 (Snapdragon) на базе HTC телефонов (G1, Nexus One, Desire, Incredible)Вы можете найти соответствующие драйверы ядра для этих телефонов здесь:- Hummingbird / Samsung телефоны: http://forum.xda-developers.com/showthread.php?t=1450298- Snapdragon / HTC телефоны: http://sven.killig.de/android/N1/2.2/usb_host/Обратите внимание, что эти драйверы могут потребоваться навыки для установки, и может привести к повреждению телефона и аннулированию гарантии!Более подробную информацию об этом приложении по адресу: http://forum.xda-developers.com/showthread.php?t=1468531~~HEAD=pobj В Настоящее Время Мы Предлагаем Версию 1.10. Это Наша Последняя, ​​наиболее Оптимизированная Версия. Он Подходит Для Многих Различных Устройств. Бесплатно Скачать Apk Из Магазина Google Play Или Других Версий, Которые Мы Размещаем. Кроме Того, Вы Можете Скачать Без Регистрации И Без Входа В Систему. У Нас Есть Более 2000+ Доступных Устройств Для Samsung, Xiaomi, Huawei, Oppo, Vivo, Motorola, LG, Google, OnePlus, Sony, Tablet … С Таким Большим Количеством Опций, Что Вам Легко Выбрать Игры Или Программное Обеспечение, Подходящие Для Вашего Устройства. Это Может Пригодиться, Если Есть Какие-Либо Ограничения По Стране Или Какие-Либо Ограничения Со Стороны Вашего Устройства В Магазине Приложений Google.Read more

Оценка И Обзор В Магазине Google Play

USB Host Controller – приложение для мобильных устройств под управлением Android, позволяющее управлять внешним оборудованием. С его помощью можно настроить жесткий диск или любой другой накопитель, подключенный по USB OTG. Кроме того, пользователи могут управлять файловой системой, осуществлять форматирование и создавать новые разделы. Отметим, что в отличие от утилиты USB Camera, данное приложение требует наличия прав суперпользователя.

Подключение

Перед началом работы пользователю необходимо подключить к мобильному устройству внешний накопитель. В этом качестве может выступать жесткий диск, карта памяти или флешка. Затем нужно запустить утилиту и выбрать нужное действие.

Настройка

С помощью приложения можно выполнить форматирование накопителя. Также есть возможность создать точку монтирования.

Поддерживается функция создания и удаления разделов. При этом пользователи могут выбрать размер каждой области. Кроме того, утилита позволяет изменить тип файловой системы. Поддерживается FAT32 и NTFS.

В случае необходимости можно выполнить переподключение внешнего устройства без извлечения кабеля. Есть возможность включить запись отладочной информации в журнал.

Особенности

  • приложение можно скачать и использовать бесплатно;
  • утилита позволяет управлять внешними устройствами, подключенными к смартфону или планшету;
  • есть возможность отформатировать жесткий диск или создать на нем дополнительные разделы;
  • подключение осуществляется при помощи кабеля USB OTG;
  • необходимо иметь права суперпользователя;
  • поддерживается функция логирования событий;
  • приложение совместимо с актуальными версиями Android.

Развитие технологий позволяет мобильным устройствам догонять персональные компьютеры и ноутбуки по своим функциональным возможностям. Однако существуют некоторые опции, которые данные устройства все же не способны осуществлять: например, к телефону нельзя подключить флэшку, мышь или принтер, если он не поддерживает специальную функцию для этого – OTG.

Содержание

Что такое OTG на Андроид

Функция OTG позволяет связывать между собой периферийные устройства без использования ПК как посредника. При этом, каждое из этих устройств может выступать и в роли хоста, и в роли периферии.

OTG открывает множество полезных возможностей. Так, например, подключив жесткий диск к смартфону, открывается доступ ко всей информации находящейся на нем: от музыки до фотографий и фильмов. Присоединив камеру к смартфону, можно использовать его память как дополнительную, просматривать и редактировать получившиеся фотографии.

image

Так как все смартфоны Андроид имеют разъёмы micro-USB или Type-C, а подключаемые устройства, в основном, USB type a, то для их соединения используют специальные OTG переходники или адаптеры, кто как называет.

Читайте также: Что делать, если вылетают приложения на Android

Как узнать, есть ли в смартфоне OTG

Данная функция поддерживается на телефонах версии Android 2.3 и выше. Однако некоторые производители просто игнорируют установку специального программного обеспечения, чтобы снизить стоимость смартфона и расход аккумулятора. Самый простой способ проверить наличие OTG – осмотреть заводскую коробку телефона. Ищите специальный логотип, который может содержать соответствующие аббревиатуру. Если же вы ничего не нашли, то попробуйте просмотреть полный список характеристик смартфона, где должен быть пункт, содержащий фразу USB Host. Наконец, проверить поддерживает ли ваше устройства OTG или нет можно загрузив специальную утилиту USB OTG Checker из Play Market, которая быстро даст вам нужный ответ.

Необходимые компоненты для работы OTG

Когда вы убедились в том, что ваш телефон поддерживает OTG, дело остается за малым. Для того, чтобы начать использование, достаточно приобрести специальный OTG-кабель, который продается в любом специализированном магазине и стоит недорого. Подключив этот кабель, обычно, сразу же происходят соответствующие изменения на дисплее.

Рекомендуем:  Удаление SuperSU с телефона

image

Основной функционал (что можно подключить через OTG)

С помощью OTG к телефону можно подключать любые устройства с выходом USB:

  • Клавиатуры.
  • Флешки.
  • Жесткие диски.
  • Мыши.
  • Джойстики.
  • Принтеры и прочее.

При подключении флешки, например, на экране телефона должен открыться файловый менеджер, который даст доступ к информации хранящейся на носителе. Внешние накопители, пожалуй, являются самыми актуальными девайсами при использовании OTG. С их помощью вы можете значительно увеличить хранилище для хранения информации.

image

Другим популярным способом использования OTG среди пользователей Андроида является подключение к USB-модемам. И правда, ведь можно не переплачивать деньги за мобильный интернет, а хорошенько разобравшись, сидеть в интернете через модем. Однако сделать это «легальным» образом не получится и придется никнуть в соответствующий софт, чтобы найти обходные пути в устройстве Андроид.

image

Подключив геймпад к телефону, можно с помощью него играть в игры, разнообразив, таким образом, свой досуг. Однако не все видеоигры поддерживают такое и с этим уже ничего не поделать. После присоединения мыши, на экране Андроид моментально появляется знакомый курсор, с которым программы можно запускать двойным щелчком.

image

Очень часто вбивать много текста быстро бывает сложно на, как правило, небольшой встроенной сенсорной клавиатуре телефона и тут OTG снова существенно облегчит задачу. Подключив физическую клавиатуру к смартфону, вы можете с легкостью набирать текст на лекции, отвечать хейтерам в комментариях или писать новую главу в своих мемуарах.

image

Не у всех дома стоят свежие модели принтеров, оборудованные Wi-Fi модулем. В таком случае, принтер можно подключить через OTG-кабель и печатать нужные документы через смартфон.

image

Если в процессе фотосессии, вам нужно отредактировать фотографию и выложить ее в социальные сети, либо срочным образом отправить кому-либо через мессенджер, то тут снова на помощь придет функция OTG. Подключив телефон к фотоаппарату, вы мгновенно сможете получить доступ к фотографиям, через тот же файловый менеджер. Более того, через телефон можно контролировать различные настройки фотоаппарата, менять фокусировку, подстраивать нужные параметры и так далее.

Рекомендуем:  Как восстановить удаленные контакты

image

Нет предела фантазии в этом деле и если вам совсем станет скучно, то с помощью OTG можно присоединить один телефон к другому. Произойдет то, что телефоны смогут заряжать друг друга, что тоже, кстати, может пригодиться, если источника питания нигде больше не найти.

Что делать, если телефон не поддерживает OTG

Возникают случаи, когда по каким-либо причинам пользователь не может воспользоваться функцией OTG на своем смартфоне. Это может происходить по разным причинам, одной из них, как упоминалось ранее, является тот факт, что устройство просто на просто не поддерживает такую опцию.

Однако случается и то, что нужная прошивка в телефоне есть, но при подключении кабеля, никаких изменений не происходит. Причин этому может быть несколько:

  • OTG-кабель имеет повреждения и просто вышел из строя.
  • Разъем телефона с механическими неполадками.
  • Подключаемый накопитель носит слишком большой объем.
  • В случае, если смартфон не видит подключаемую флешку, возможно, что файловая система имеет форматы NTFS, ExFat, HPFS, которые нужно отформатировать на FAT32

С механическими проблемами в устройстве телефона, лучше обращаться в сервисный центр и не пытаться починить его своими усилиями. Если же устройство не видит слишком большой объем файлов, то имеет смысл сменить гаджет на версию поновее.

Технология OTG является очень полезной и многогранной, которая в некоторых случаях способна существенно облегчить выполнение поставленных задач.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Citilink-kabinet.ru
Добавить комментарий