2012-02-23 24 views
11

Tôi biết rằng các phiên bản mới nhất của Android (Honeycomb và ICS) có hỗ trợ cho cần điều khiển và gamepad. Bộ điều khiển Guitar Hero (và Garage Band) về cơ bản là các thiết bị USB HID, phải không?Trình điều khiển Android và Guitar Hero

Vì vậy, câu hỏi của tôi: Có thể nhận dữ liệu (nút bấm) từ bộ điều khiển Guitar Hero (hoặc Rock Band) trên thiết bị Android không? Android có hiểu nó là đầu vào gamepad không?

P.S. tất cả những gì tôi cần là phát hiện trong trò chơi của tôi đầu vào từ năm nút trên băn khoăn bằng nhựa.

+0

Một giải pháp thay thế sẽ là hack guitarr, cho phép Arduino hoạt động như người trung gian giữa Android và guitarr. – Andreas

Trả lời

6

Điểm khởi đầu tốt là xem lại mã nguồn của Linux cho Frets On Fire, hỗ trợ một số bộ điều khiển Guitar Hero.

Frets on Fire: SourceForge

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

Dường như nó sẽ là khó khăn để hỗ trợ phổ biến tất cả các bộ điều khiển, từ các nền tảng khác nhau. Mỗi giao diện điều khiển có giao thức riêng của nó, nhưng nó trông giống như JoyStick to keyboard emulation là có thể trên PC với bộ điều khiển PS3. Có một tập tin cấu hình cho bộ điều khiển PS3 trên liên kết thứ hai có thể hữu ích, đó là cho JoyToKey (không phải là nguồn mở), nhưng một số giá trị trong cấu hình có thể giúp bạn.

4

Đây là một ý tưởng rất hay. bắt đầu ở đây:

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

Sau đó, hãy kiểm tra mẫu này:

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

trong mẫu đó, có một phương thức có tên setDevice(UsbDevice device)

Nếu tôi được thực hiện điều này, tôi sẽ bắt đầu với bản sao của dự án MissileLauncher và sửa đổi phương thức setDevice này. Tôi sẽ đăng nhập tất cả mọi thứ tôi có thể có thể tìm về UsbDevice device và cố gắng thử nghiệm với những điều kiện trong setDevice phương pháp:

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

Trong khi MissileLauncher sử dụng type này và endpointCount này, rất có khả năng điều khiển GarageBand sẽ có giá trị khác nhau

CŨNG

kiểm tra ra các phương pháp run để xem một ví dụ về thông tin liên lạc qua lại

KHUYẾN CÁO: Tôi không biết liệu điều này có hiệu quả hay không. Tôi cũng thấy các blog nói rằng điều này không thể thực hiện được.

0

Tôi đoán là nó sẽ phát hiện dữ liệu. Điều này thậm chí có thể trên các thiết bị Android hiện có - nhưng nó không phải là Android Market thân thiện.

Để thực hiện việc này trên các thiết bị không phải là 4.0, bạn phải cung cấp nguồn điện thay thế cho cổng USB. Thông thường điều này có thể được thực hiện với một trung tâm usb giá rẻ rò rỉ điện. Thiết bị này cũng phải được root. Khi điều này hoàn tất, bạn cần tạo một giao diện cho vỏ thiết bị để khởi chạy một ngôn ngữ bản địa như C bên ngoài máy ảo Dalvik của bạn.Sử dụng C của bạn để liên kết với các ổ cắm thích hợp và bạn sẽ có thể dữ liệu xe buýt qua lại. Bạn cũng có thể cần phải biên dịch một mô-đun hạt nhân để hỗ trợ trình điều khiển.

Như tôi đã nói đây là bản hack hoàn chỉnh dành cho thiết bị bên dưới 4.0. Nhưng có thể.