Контроллер Android и Guitar Hero - PullRequest
11 голосов
/ 23 февраля 2012

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

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

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

Ответы [ 3 ]

6 голосов
/ 25 февраля 2012

Хорошей отправной точкой было бы рассмотрение исходного кода linux для Frets On Fire, который поддерживает некоторые контроллеры Guitar Hero.1006 * SVN: https://fretsonfire.svn.sourceforge.net/svnroot/fretsonfire

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

4 голосов
/ 01 марта 2012

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

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, чтобы увидеть пример обратной связи

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

0 голосов
/ 02 марта 2012

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

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

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

...