在Android应用程序中使用libusb:如何允许应用程序访问USB

Vio*_*ffe 7 android-ndk libusb-1.0

我想在我的Android应用程序(java GUI + native(C++)core)中使用libusb.我已经编译了libusb并尝试调用它的函数,但libusb_open返回LIBUSB_ERROR_ACCESS.我想USB访问权限有问题,但我不知道如何解决这个问题.那么,这里有两个问题:1)如何在一个有根的Android 3.1设备上运行libusb?2)是否可以在无根,出厂默认设备上使用libusb?

提前致谢.

PS至于问题1,我已经为/ dev/bus/usb尝试了chmod 666,但它说"权限被拒绝"(请注意我的设备已植根).

PPS mount usbfs none/proc/bus/usb -o devmode = 0666甚至没有执行,好像我拼错了一些东西(但我没有).


我知道可以让libusb在带有USB主机的root设备上工作,但我从来没有管理它,所以我不得不将应用限制在Android 3.1+并使用USB API.

Kul*_*aka 1

在android中,你不能直接使用libusb打开USB设备(这是你得出的结论:)。

为什么打不开?

您需要获得Android系统(!=内核)的许可才能打开设备。

用 Java 来做:

当您请求时,会向用户显示弹出窗口以接受或拒绝。所以你需要在java中打开设备,并使用java提取fd并传递给libusb,以便它可以与设备通信。

现在 libusb 如何从 fd 构建句柄?

更新:我维护了一个专门针对 Android 进行修改的 libusb 版本(有更多修复 - 在 Android 5.1 及更低版本上进行了测试/工作)。请参阅https://gitlab.com/madresistor/libusb/blob/android/README

旧链接(死链接)这里是解决方案: https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/libusb/core.c#L993