Input devices что это за программа на андроид
Общие принципы получения доступа к устройствам USB на платформе Android описаны в документации API [1]. В этой статье будет на практическом примере показано, как программно получить список подключенных устройств USB.
Для того, чтобы можно было физически подключить к Android устройство USB (флешку, клавиатуру, мышку, или любое другое устройство USB HID или USB CDC) нужно иметь как минимум 2 вещи:
1. Современное устройство Android, у которого операционная система не старее Android 3.1.x (API Level 12 или выше). Более старые системы не поддерживают режим хоста USB, т. е. они принципиально не способны опознавать USB-устройства.
2. Переходник «Android OTG micro usb cable».
На фото показан внешний вид такого переходника, который на ebay, dealextreme или Aliexpress продается по цене порядка 2 долларов, или даже дешевле. Конечно, его можно купить также на рынке или в магазине, но несколько дороже. Дешевизна переходника легко объяснима — у него внутри ничего, кроме проводов, нет [2]. На переходнике с одной стороны имеется штеккер microUSB, который втыкается в Android, а на другой стороне стандартное гнездо USB type A, куда можно воткнуть любой шнур USB.
Learn Computer || What are The Input Devices of Computer || Nasir — The Explainer
Примеры программ Android, описанных в этой статье, можно скачать в архиве [3]. Программы были написаны в среде Eclipse, и испытывались на смартфоне Samsung Galaxy Note GT-N7000, версия Android 4.1.2 (API Level 16).
[Как программно узнать, какие USB-устройства подключены к устройству Android]
Для начала разберем, как получить список USB-устройств, подключенных к Android.
1. Создайте в Eclipse проект приложения Android при помощи стандартного мастера. На этом шаге выберите минимальную версию целевого SDK API 12. Target SDK и Compile With можете выставить по максимуму, на самую последнюю поддерживаемую версию Android. Так же задайте, как обычно, имя приложения, имя проекта и имя пакета.
2. Бросьте на форму приложения кнопку и виджет TextView. Кнопку будем использовать для запуска опроса устройств, а TextView для вывода информации. Создайте для них глобальные переменные в теле класса, и в обработчике onCreate сделайте привязку этих переменных к соответствующим ресурсам. Добавьте также глобальную переменную типа UsbManager:
Для вывода в TextView создайте процедуру clog, принимающую строку. Для упрощения код процедуры не привожу, подробнее, как делать вывод в текстовый лог, можете посмотреть в FAQ [4], или загрузите готовый код в виде проекта Eclipse [3].
private void clog(String text);
3. Добавьте в манифест приложения секцию uses-feature android_name=»android.hardware.usb.host». Вот пример файла манифеста:
4. Создайте обработчик клика на кнопке:
public void btnClick(View v) UsbDevice device; boolean nodevices = true;
mUsbManager = (UsbManager)getSystemService(Context.USB_SERVICE); HashMap String, UsbDevice> deviceList = mUsbManager.
getDeviceList(); IteratorUsbDevice> deviceIterator = deviceList.values().iterator(); while(deviceIterator.
컴퓨터의 입력 장치 | (예시 및 목적)
hasNext()) nodevices = false; device = deviceIterator.next(); clog(«getDeviceName: » + device.getDeviceName()); clog(«toString: » + device.toString()); > if (nodevices) clog(«Устройства USB не найдены»); > >
Программа готова. Вот пример её вывода, когда ничего не подключено, когда подключена флешка и когда подключено устройство USB HID (макетная плата AVR-USB-MEGA16).
[Ссылки]
1. Android как хост USB.
2. Как сделать для смартфона Android кабель microUSB OTG.
3. 140419android-USB-devices-access.zip — проекты Eclipse с примерами управления макетной платой AVR-USB-MEGA16 из Android, проект устройства USB HID с исходными кодами и готовыми прошивками.
4. Eclipse, Android Studio: FAQ, устранение ошибок.
Комментарии
+1 #3 Игорь Горшков 23.04.2017 16:07
А вы бы не могли бы сами выслать эту программу мне на мою почту? А то я весь мозг сломал. Ни хрена ничего не понимаю. Если чего, то вот моя почта: .
microsin: скачайте пожалуйста архив по ссылке [3].
0 #2 charkin 13.06.2016 01:01
Сделал проект в Android Studio по этому примеру, работает, однако не показывает информацию о некоторых классах устройств: не видит мышь (HID) и не видит usb-hub. Если подключить флешку — все ок.
С фильтрацией игрался, в итоге оставил в таком виде: . Может у кого есть мысли, в чем проблема?
microsin: скорее всего проблема с текущей версией прошивки Android. Хост USB на нем поддерживает только класс USB MSD. Установите с Google Play программу проверки функций хоста Android (прогуглите Android USB host test), и проверьте на ней работу разных устройств USB.
Источник: microsin.net
Input devices что это за программа на андроид
Данная тема является продолжением статьи https://4pda.to/2014/12/12/190359/
Здесь обсуждаем способ создания нативной поддержки для устройств ввода и делимся готовыми решениями.
Сообщения, не относящиеся к теме обсуждения (оффтоп), удаляются без предупреждения.
Инструментарий
- устройство на Android 4+ (проверял только на 5.0 и 4.4);
- поддержка устройством USB OTG;
- наличие root-доступа;
- файловый менеджер с поддержкой root (в моём случае это Total Commander);
- текстовый редактор (в моём случае это опять Total Сommander);
- лист бумаги и карандаш;
- USB Device Info (для определения свойств устройства);
- KeyTest (для отображения кодов кнопок устройства) временно недоступна по ссылке, скачивайте с форума, ссылка ниже.
Еще одна программа, отображающая коды кнопок и действия осей Google Play
Универсальная программа для тестирования кнопок, редактирования действий и создания конфига Gamepad Tester
Шаг первый. VID и PID
1. Создание файла с VID и PID
Подключаем наше устройство ввода и запускаем приложение USB Device Info. Нас интересует вкладка Linux, в которой выбираем своё устройство (у меня оно было последним в списке) и ищем значения строчек Vendor ID и Product ID. В моём случае это были 0c45 и 7700 соответственно.
Так же VID и PID можно посмотреть подключив устройство к ПК.
Для Bluetooth устройств:
Узнать эти значения для Bluetooth девайсов можно открыв файл /proc/bus/input/devices.
Копируем любой файл из /system/usr/keylayout на sdcard и переименовываем его в соответствии с полученными данными, для моего джойстика название получилось таким: Vendor_0c45_Product_7700.kl. (Обратите внимание, что регистр букв имеет значение)
Шаг второй. Получение кодов кнопок.
2. Получение кодов кнопок
Запускаем приложение KeyTest и, вооружившись бумагой и карандашом, начинаем поочерёдно нажимать кнопки на устройстве, записывая цифры, высвечивающиеся после scanCode=. Я записывал коды, располагая их на бумаге, как кнопки на геймпаде.
Из программы можно выйти только по кнопке «Домой».
ВНИМАНИЕ!
Если Геймпад видно в первом шаге, но кейтест не реагирует на нажатия, возможно, у вас отсутствует нужный модуль в ядре — скажите «спасибо» автору прошивки.
Но не отчаивайтесь, есть возможное решение Нативная поддержка для устройств ввода (Пост wm-hater #52134473)
Шаг третий. Маппинг кнопок.
3. Маппинг кнопок
Теперь, когда стали известны коды всех клавиш, необходимо прописать их функции. Тут есть два пути:
а) найти среди имеющихся в Android конфигов устройство, максимально приближенное к вашему, и просто изменить в нём коды кнопок, скопировав содержимое в свой файл;
б) прописать все самому.
Я пошёл по второму пути, ибо мой джойстик имеет только крестовину управления и четыре кнопки. Для начала нужно понять синтаксис файла раскладки, он очень прост:
key код_кнопки действие_кнопки
Но тут возник вопрос: а какие действия кнопок писать в конфиге? За много лет использования различных геймпадов на Android я для себя определил, что самый универсальный конфиг — это раскладка от Sony Xperia Play, она одинаково хорошо ведёт себя как в играх, так и в интерфейсе системы.
Ok Google, key mapping for Xperia Play
Key code constant scancode
X 23 KEYCODE_DPAD_CENTER 304
circle 4 KEYCODE_BACK 305
square 99 KEYCODE_BUTTON_X 307
triangle 100 KEYCODE_BUTTON_Y 308
up 19 KEYCODE_DPAD_UP 106
down 20 KEYCODE_DPAD_DOWN 105
left 21 KEYCODE_DPAD_LEFT 103
right 22 KEYCODE_DPAD_RIGHT 108
select 109 KEYCODE_BUTTON_SELECT 314
start 108 KEYCODE_BUTTON_START 28
L trigger 102 KEYCODE_BUTTON_L1 310
R trigger 103 KEYCODE_BUTTON_R1 311
Нас интересует третья колонка, но запись действий в ней немного отличается от тех, что были найдены в системе — это не помеха, просто убираем KEYCODE_.
Прописываю свои кнопки (помните листок с карандашными записями? Самое время найти его. ):
. ВНИМАНИЕ .
Нужен текстовый редактор с поддержкой unix кодировки!
Блокнот из состава Windows НЕ подойдет ,
Используйте, к примеру, Notepad++
key 147 DPAD_CENTER
key 149 BUTTON_B
key 148 BUTTON_Y
key 146 BUTTON_X
key 157 DPAD_DOWN
key 145 DPAD_LEFT
key 155 DPAD_UP
key 156 DPAD_RIGHT
Но и тут не обошлось без нюансов. У Sony на кнопку «круг» (circle) назначено действие KEYCODE_BACK (привычная нам кнопка «назад»). Несложно догадаться, что нажатие такой кнопки в игре может вызвать нервный срыв. А всё дело в том, что во время игры на Xplay эта кнопка принимает альтернативное значение — KEYCODE_BUTTON_B. Вот её мы и пропишем.
Смещение по оси прописывается так:
axis 0x00 HAT_X
axis 0x01 HAT_Y
Шаг четвертый. Момент истины.
4. Момент истины
Сохраняем наш файл и копируем его в папку /system/usr/keylayout. Выставляем права -rw -r -r (644). Перезагружаем устройство (сам я этого не делал, просто заблокировал и разблокировал, но для чистоты совести и эксперимента обязан был это написать).
Подключаем наше устройство, и если всё сделали правильно, тут же сможете «крестовиной» перемещаться по меню Android. Кнопка, на которую назначили DPAD_CENTER, будет кнопкой выбора, а BUTTON_B — кнопкой «назад».
Проблемы и возможные решения
Q: Все прописываю верно, но конфиг не цепляется.
А: Если вы пропишете коды действий с ошибкой, например:
key 123 BUTTON_HOME вместо key 123 HOME
то система будет считать этот файл ошибочным.
Проверить свой файл на ошибки можно на сайте: https://ris58h.github.io/validatekeymaps/ (спасибо говорим prakop29 )
Также есть способ проверить подхватывается ваш kl файл системой или нет — стереть все кейкоды или закомментировать их знаком #:
# key 123 BUTTON_HOME
Если файл подхватился — никакой реакции на кнопки не будет, но в KeyTest все будет отображаться.
Q: Все прописываю верно и без ошибок но все или часть кнопок не работают.
А: Попробуйте прописать scancode в hex формате: Нативная поддержка для устройств ввода (Пост romanctest #69194647)
Q: Дуалшок 4 постоянно отваливается или работает с задержкой.
А: Нативная поддержка для устройств ввода (Пост maxmergov #81264882)
Источник: 4pda.to