2012-02-23 9 views
11

최신 버전의 Android (Honeycomb 및 ICS)는 조이스틱 및 게임 패드를 지원합니다. 기타 히어로 (및 Garage Band) 컨트롤러는 본질적으로 USB HID 장치입니다. 맞습니까?Android 및 기타 영웅 컨트롤러

내 질문 : 안드로이드 장치의 기타 히어로 (또는 록 밴드) 컨트롤러에서 데이터 (버튼 클릭)를받을 수 있습니까? Android에서 게임 패드 입력으로 인식합니까?

P. 내 게임에서 플라스틱 기타 프렛의 5 개의 버튼 입력을 감지하면됩니다.

+0

한 가지 대안으로 기타를 해킹하여 Arduino를 Android와 기타의 중개자 역할을하도록 할 수 있습니다. – Andreas

답변

6

좋은 출발점은 기타 히어로 컨트롤러 중 일부를 지원하는 Frets On Fire의 Linux 소스 코드를 검토하는 것입니다.

Frets on Fire: SourceForge

SVN은 : 보편적으로 다른 플랫폼에서 모든 컨트롤러를 지원하기 어려울 것 같은 https://fretsonfire.svn.sourceforge.net/svnroot/fretsonfire

것 같습니다. 각 콘솔에는 자체 프로토콜이 있지만 PS3 컨트롤러가있는 PC에서는 JoyStick to keyboard emulation이 가능합니다. 도움이 될 수도있는 두 번째 링크의 PS3 컨트롤러에 대한 설정 파일이 있습니다.이 파일은 JoyToKey (오픈 소스가 아닙니다)이지만 config의 값 중 일부가 도움이 될 수 있습니다.

4

안녕하세요. 정말 멋진 아이디어입니다. 여기에서 시작 :

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

다음

,이 샘플을 체크 아웃 :

그 샘플

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

이, 나는이 구현 된 경우

setDevice(UsbDevice device)라는 방법이 나는 것 MissileLauncher 프로젝트의 사본으로 시작하여이 setDevice 메소드를 수정하십시오. 그것은 매우 가능성이 GarageBand의 컨트롤러가 서로 다른 값을 가질 것,

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

MissileLaunchertypeendpointCount를 사용하는 동안 : 나는 가능한 UsbDevice device에 대해 찾을 수있는 모든 것을 기록하고 setDevice 방법이 조건문을 실험 해 것

는 또한

체크 아웃 run 방법 앞뒤로 통신의 예를 볼 수

,

면책 조항 :이 작동하는지 나는 잘 모른다. 나는 또한 이것을 할 수 없다는 블로그를 보았다.

0

내 생각에 데이터를 감지해야합니다. 기존 Android 기기에서도 가능하지만 안드로이드 마켓과 호환되지 않습니다.

4.0 이외의 장치에서이를 수행하려면 USB 포트에 대체 전원을 공급해야합니다. 대개 이것은 전력을 누출하는 저렴한 USB 허브로 수행 할 수 있습니다. 장치도 루팅해야합니다. 이 작업이 완료되면 장치 셸에 대한 인터페이스를 만들어 Dalvik VM 외부에서 C와 같은 모국어를 실행해야합니다.C를 사용하여 적절한 소켓에 바인딩하면 데이터를 앞뒤로 버스 할 수 있어야합니다. 드라이버 지원을 제공하기 위해 커널 모듈을 컴파일해야 할 수도 있습니다.

내가 말하듯이 4.0 이하 장치에 대한 완전한 해킹이라고합니다. 하지만 가능합니다.