2011-09-19 65 views
7

Tôi muốn sử dụng libusb trong ứng dụng Android của mình (lõi java GUI + gốc (C++)). Tôi đã biên soạn libusb và thử gọi các chức năng của nó, nhưng libusb_open trả về LIBUSB_ERROR_ACCESS. Tôi cho rằng có vấn đề với quyền truy cập USB, nhưng tôi không biết cách giải quyết vấn đề. Vì vậy, 2 câu hỏi ở đây: 1) Làm thế nào để có được libusb chạy trên một thiết bị Android 3.1 bắt nguồn từ? 2) Có thể sử dụng libusb trên thiết bị mặc định gốc, không bị bỏ qua không?Sử dụng libusb trong ứng dụng Android: cách cho phép ứng dụng truy cập USB

Xin cảm ơn trước.

P. S. Đối với câu hỏi 1, tôi đã thử chmod 666 cho/dev/bus/usb, nhưng nó nói "quyền bị từ chối" (lưu ý rằng thiết bị của tôi bị bắt nguồn từ).

P.P.S. mount usbfs không có/proc/bus/usb -o devmode = 0666 thậm chí không thực hiện, như thể tôi đã bỏ lỡ một cái gì đó (nhưng tôi đã không).


Tôi biết chắc chắn nó có thể để có được libusb làm việc trên một thiết bị Android rooted với USB host, nhưng tôi không bao giờ được quản lý nó, vì vậy tôi đã phải hạn chế ứng dụng Android 3.1+ và sử dụng các API USB.

+0

Như bạn dường như đang làm việc với Android 3.1, có bạn xem bằng cách sử dụng [USB API] (http://developer.android.com/ hướng dẫn/chủ đề/usb/index.html) trong SDK Android? – Frxstrem

+0

@Frxstrem: vâng, tôi phải nghỉ mát với giải pháp đó. Tôi không hoàn toàn hài lòng với nó, nhưng nó hoạt động và đó là cách tiêu chuẩn của việc sử dụng USB trên Android, vì vậy tôi đoán tôi nên đóng câu hỏi. –

+2

không đóng nó, chỉ cần trả lời nó. –

Trả lời

0

Trong Android, bạn không thể mở trực tiếp thiết bị USB bằng libusb (đây là kết luận mà bạn đã đến :).

lý do bạn không thể mở?

Bạn cần xin phép hệ thống Android (! = Kernel) để mở thiết bị.

Làm điều đó trong Java:

khi bạn yêu cầu, cửa sổ bật lên được hiển thị cho người dùng chấp nhận hoặc từ chối. vì vậy bạn cần mở thiết bị bằng java và giải nén fd bằng java và chuyển sang libusb để nó có thể giao tiếp với thiết bị.

bây giờ làm thế nào libusb sẽ tạo một xử lý từ fd?

Cập nhật: Tôi duy trì phiên bản libusb được sửa đổi cụ thể cho Android (với nhiều bản sửa lỗi hơn - được thử nghiệm/hoạt động trên Android 5.1 trở xuống). thấy https://gitlab.com/madresistor/libusb/blob/android/README

OLD LINK (DEAD LINK) đây là giải pháp: https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/libusb/core.c#L993

+0

Liên kết bị hỏng. – jayeffkay

+0

@jayeffkay Đã cập nhật liên kết. Cảm ơn. –

Các vấn đề liên quan