Контроллер Android и Guitar Hero
Я знаю, что последние версии Android (Honeycomb и ICS) имеют поддержку джойстиков и геймпадов. Контроллеры Guitar Hero (и Garage Band) по сути являются USB HID-устройствами, верно?
Итак, мой вопрос: возможно ли получать данные (нажатия кнопок) с контроллеров Guitar Hero (или Rock Band) на устройстве Android? Будет ли Android понимать это как ввод с геймпада?
PS Все, что мне нужно, это обнаружить в моей игре вход от этих пяти кнопок на пластиковом гитарном ладу.
3 ответа
Хорошей отправной точкой было бы рассмотрение исходного кода linux для Frets On Fire, который поддерживает некоторые контроллеры Guitar Hero.
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
метод. Я бы регистрировал все, что мог найти о UsbDevice device
и попробуйте поэкспериментировать с этими условиями в 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. Используйте ваш C для привязки к соответствующему сокету, и вы сможете передавать данные туда и обратно. Вам также может понадобиться скомпилировать модуль ядра для поддержки драйверов.
Как я уже сказал, это полный взлом для устройства ниже 4.0. Но это возможно.