2012-02-23 10 views
11

Wiem, że najnowsze wersje Androida (Honeycomb i ICS) mają obsługę joysticków i gamepadów. Kontrolery Guitar Hero (i Garage Band) to zasadniczo urządzenia USB HID, prawda?Kontroler Android i Guitar Hero

Moje pytanie: Czy można odbierać dane (kliknięcia przyciskami) z kontrolerów Guitar Hero (lub Rock Band) na urządzeniu z systemem Android? Czy Android zrozumie to jako wejście do gamepada?

P.S. Wszystko, czego potrzebuję, to wykrycie w mojej grze sygnału z tych pięciu przycisków na progu z tworzywa sztucznego.

+0

Jedną z alternatywnych metod jest hakowanie gitarzysty, pozwalając Arduino działać jako pośrednik między Androidem a gitarzystą. – Andreas

Odpowiedz

6

Dobrym punktem wyjścia byłoby przejrzenie kodu źródłowego Linuksa dla gry Frets On Fire, który obsługuje niektóre kontrolery Guitar Hero.

Frets on Fire: SourceForge

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

Wygląda byłoby trudne do powszechnie obsługuje wszystkich kontrolerów, z różnych platform. Każda konsola ma swój własny protokół, ale wygląda na to, że JoyStick to keyboard emulation jest możliwe na komputerze PC z kontrolerem PS3. Istnieje plik konfiguracyjny kontrolera PS3 na drugim łączu, który może być pomocny, dotyczy JoyToKey (który nie jest open source), ale niektóre wartości w konfiguracji mogą ci pomóc.

4

Hej, to naprawdę świetny pomysł. zacząć tutaj:

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

Następnie sprawdź tę próbkę:

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

w tej próbce, jest metoda o nazwie setDevice(UsbDevice device)

Gdybym realizacji tego, bym Rozpocznij od duplikatu projektu MissileLauncher i zmodyfikuj tę metodę setDevice. Chciałbym logowania wszystko, co mogłoby to możliwe znaleźć o UsbDevice device i wypróbować tych warunkowych w metodzie setDevice:

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

Choć MissileLauncher wykorzystuje tę type i ten endpointCount, to jest bardzo prawdopodobne, że kontroler GarageBand będą miały różne wartości

TAKŻE

Sprawdź metodę run aby zobaczyć przykład iz powrotem komunikacji

OŚWIADCZENIE: Nie mam pojęcia, czy to zadziała. Widziałem też blogi stwierdzające, że nie da się tego zrobić.

0

Zgaduję, że powinien wykryć dane. Jest to nawet możliwe na istniejących urządzeniach z Androidem - ale nie jest to zgodne z Android Market.

Aby tego dokonać na urządzeniach innych niż 4.0, należy dostarczyć alternatywne źródło zasilania do portu USB. Zwykle można to zrobić za pomocą taniego koncentratora USB, który przecieka mocą. Urządzenie musi być również zrootowane. Po zakończeniu musisz utworzyć interfejs do powłoki urządzenia, aby uruchomić język ojczysty, taki jak C poza maszyną Dalvik VM.Użyj C, aby powiązać z odpowiednim gniazdem i powinieneś być w stanie przesyłać dane do iz powrotem. Może być również konieczne skompilowanie modułu jądra, aby zapewnić wsparcie dla sterownika.

Tak jak powiedziałem, jest to kompletny hack dla urządzenia poniżej 4.0. Ale jest to możliwe.