Контроллер Android и Guitar Hero
Я знаю, что в последних версиях Android (Honeycomb и ICS) есть поддержка джойстиков и игровых приставок.
Контроллеры Guitar Hero (и Garage Band) - это устройства USB HID, правда?
Итак, мой вопрос:
Возможно ли получать данные (нажатие кнопок) с контроллеров Guitar Hero (или Rock Band) на Android-устройстве?
Будет ли Android понимать это как вход геймпада?
P.S. все, что мне нужно, - это обнаружить в моей игре вход от этих пяти кнопок на пластиковой гитаре.
Ответы
Ответ 1
Хорошей отправной точкой будет просмотр исходного кода linux для Frets On Fire, который поддерживает некоторые из контроллеров Guitar Hero.
Фрейты в огне: SourceForge
SVN: https://fretsonfire.svn.sourceforge.net/svnroot/fretsonfire
Похоже, что было бы сложно повсеместно поддерживать все контроллеры с разных платформ. У каждой консоли есть собственный протокол, но это похоже на JoyStick для эмуляции клавиатуры можно на ПК с контроллером PS3. Существует файл конфигурации для контроллера PS3 на втором канале, который может быть полезен, это для JoyToKey (который не является открытым исходным кодом), но некоторые из значений в конфигурации могут вам помочь.
Ответ 2
Эй, это действительно крутая идея. начинайте здесь:
http://developer.android.com/guide/topics/usb/host.html
Затем проверьте этот пример:
http://developer.android.com/resources/samples/USB/MissileLauncher/index.html
в этом примере, существует метод с именем setDevice(UsbDevice device)
Если бы я реализовал это, я бы начал с дубликата проекта MissileLauncher
и изменил этот метод setDevice
. Я бы зарегистрировал все, что мог найти в UsbDevice device
, и попытался поэкспериментировать с этими условными выражениями в методе setDevice
:
if (ep.getType() != UsbConstants.USB_ENDPOINT_XFER_INT) {
...
if (intf.getEndpointCount() != 1) {
В то время как MissileLauncher
использует этот type
и этот endpointCount
, очень вероятно, что контроллер гаражной полосы будет иметь разные значения
и
проверьте метод run
, чтобы увидеть пример обратной и четвертой связи
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не знаю, будет ли это работать. Я также видел блоги, в которых говорится, что это невозможно.
Ответ 3
Я предполагаю, что он должен обнаруживать данные. Это возможно даже на существующих устройствах Android - но это не Android Market.
Чтобы выполнить это на устройствах не-4.0, вы должны предоставить альтернативный источник питания для USB-порта. Обычно это можно сделать с помощью дешевого USB-концентратора, который теряет мощность. Устройство также должно быть внедрено. Как только это будет завершено, вам необходимо создать интерфейс для оболочки устройства, чтобы запустить родной язык, например, C вне вашей Dalvik VM. Используйте C для привязки к соответствующему сокету, и вы должны иметь возможность шить данные взад и вперед. Вам также может потребоваться скомпилировать модуль ядра, чтобы предоставить поддержку драйверов.
Как я уже сказал, это полный взлом для устройства ниже 4.0. Но это возможно.