Можно ли написать драйвер для системы ввода в андроид

Возможно ли, чтобы общедоступное приложение SDK написало «драйвер» для устройства ввода, например джойстика, который использует какой-то неопределенный, возможно, чужой протокол через USB с использованием нового 3.1 USB Apis?

Например, можно ли будет реализовать драйвер для совершенно нового контроллера O-Triangle 3.15, который только что вышел из-за двери, с 13 джойстиками и 159 кнопками, виртуальным отслеживанием головы и дозатором содовой, или это придется ждать Android будет обновлен новым низкоуровневым драйвером для контроллера O-Triangle 3.15.


person Amanda    schedule 12.06.2011    source источник


Ответы (2)


Похоже, вы можете сделать это с помощью классов в файле android. hardware.usb: вы можете реализовать службу, которая определяет вставку/удаление устройства и генерирует соответствующие InputEvents. Не уверен, что какое-либо приложение, которое хочет использовать это устройство, должно будет включать Службу в свой apk, или вы можете сделать отдельный пакет, который передает необходимые события в подсистему ввода ОС.

person Femi    schedule 12.06.2011
comment
Да, мой вопрос был направлен на общесистемную реализацию, а не только на одно приложение, и, насколько мне известно, только приложение с клавиатурой может генерировать события ввода, что далеко не идеально из-за того, что вы хотите иметь возможность также введите обычный текст. - person Amanda; 13.06.2011
comment
Ну, вы, конечно, можете привязать свой метод ввода к аппаратному USB-устройству под капотом, нет? - person Femi; 13.06.2011
comment
Да, эту часть я могу понять, чего я не могу понять, так это того, можно ли отправлять эти события всем приложениям, прослушивающим события, без замены выбранного пользователем метода ввода текста, который я считаю довольно хакерским и далеко не идеальным. - person Amanda; 14.06.2011
comment
ХОРОШО. Вы МОЖЕТЕ внедрить услугу... но есть ли какие-нибудь подсказки о том, КАК? - person Behnam; 24.11.2014

Нам удалось записать на USB-устройства без драйверов ядра, используя этот код: http://android.serverbox.ch/?p=370

Мы можем записывать общие массовые пакеты на конечные точки USB. Я полагаю, что вы могли бы сделать то же самое для других типов USB-устройств (HID и т. д.). Обратите внимание, что в Samsung Galaxy Tab 10.1 отсутствуют компоненты, необходимые для правильного обнаружения USB-устройств (начиная с обновления 3.1 touchwiz). Однако у нас это работает на Acer A500.

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

Кроме того, я бы очень хотел контроллер с 13 джойстиками и дозатором содовой! ;)

person Taylor Alexander    schedule 17.11.2011
comment
Насколько я понимаю, приложения Wii Controller притворяются клавиатурой для отправки синтезированных событий, хотя у меня нет личного опыта, чтобы сказать так или иначе. - person Amanda; 07.12.2011