Контроллер Android и Guitar Hero

Я знаю, что в последних версиях Android (Honeycomb и ICS) есть поддержка джойстиков и игровых приставок. Контроллеры Guitar Hero (и Garage Band) – это, по сути, USB-HID-устройства, верно?

Поэтому мой вопрос: возможно ли получать данные (нажатия кнопки) из контроллеров Guitar Hero (или Rock Band) на Android-устройстве? Будет ли Android понимать это как вход в геймпад?

PS Мне нужно только обнаружить в моей игре вход от этих пяти кнопок на пластиковой гитаре.

Solutions Collecting From Web of "Контроллер Android и Guitar Hero"

Хорошей отправной точкой будет просмотр исходного кода Linux для Frets On Fire, который поддерживает некоторые из контроллеров Guitar Hero.

Фрейты в огне: SourceForge

SVN: https://fretsonfire.svn.sourceforge.net/svnroot/fretsonfire

Похоже, что было бы сложно повсеместно поддерживать все контроллеры с разных платформ. Каждая консоль имеет собственный протокол, но похоже, что JoyStick для эмуляции клавиатуры возможен на ПК с контроллером PS3. Существует файл конфигурации для контроллера PS3 на втором канале, который может быть полезен, это для JoyToKey (который не является открытым исходным кодом), но некоторые из значений в конфигурации могут вам помочь.

Эй, это действительно крутая идея. начало здесь:

http://developer.android.com/guide/topics/usb/host.html

Затем проверьте этот пример:

http://developer.android.com/resources/samples/USB/MissileLauncher/index.html

В этом примере существует метод с именем setDevice(UsbDevice device)

Если бы я реализовал это, я бы начал с дубликата проекта MissileLauncher и setDevice этот метод setDevice . Я бы зарегистрировал все, что мог найти о UsbDevice device и попытался поэкспериментировать с этими условными setDevice методе setDevice :

 if (ep.getType() != UsbConstants.USB_ENDPOINT_XFER_INT) { ... if (intf.getEndpointCount() != 1) { 

Хотя MissileLauncher использует этот type и этот endpointCount , очень вероятно, что контроллер гаражного диапазона будет иметь разные значения

ТАКЖЕ

Проверьте метод run чтобы увидеть пример обратной и четвертой связи

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не знаю, будет ли это работать. Я также видел блоги, в которых говорится, что это невозможно.

Я предполагаю, что он должен обнаруживать данные. Это возможно даже на существующих устройствах Android – но это не Android Market.

Чтобы выполнить это на устройствах не-4.0, вы должны предоставить альтернативный источник питания для USB-порта. Обычно это можно сделать с помощью дешевого USB-концентратора, который теряет мощность. Устройство также должно быть укоренено. Как только это будет завершено, вам необходимо создать интерфейс к оболочке устройства, чтобы запустить родной язык, например, C вне вашей Dalvik VM. Используйте C для привязки к соответствующему сокету, и вы должны иметь возможность шить данные взад и вперед. Вам также может потребоваться скомпилировать модуль ядра для поддержки драйверов.

Как я уже сказал, это полный взлом для устройства ниже 4.0. Но это возможно.