我想在我的Android应用程序(java GUI + native(C ++)core)中使用libusb。我已经编译了libusb并尝试调用它的函数,但libusb_open返回LIBUSB_ERROR_ACCESS。我想USB访问权限有问题,但我不知道如何解决这个问题。那么,这里有两个问题: 1)如何让libusb在root的Android 3.1设备上运行? 2)是否可以在无根,出厂默认设备上使用libusb?
提前致谢。
P上。 S.至于问题1,我已经为/ dev / bus / usb尝试了chmod 666,但它说“权限被拒绝”(请注意我的设备已植根)。
P.P.S。 mount usbfs none / proc / bus / usb -o devmode = 0666甚至没有执行,好像我拼错了一些东西(但我没有)。
我知道可以让libusb在带有USB主机的root设备上工作,但我从未管理过它,所以我不得不将应用限制在Android 3.1+并使用USB API。
答案 0 :(得分:0)
在android中,你无法使用libusb直接打开usb设备(这是你得出的结论:)。
为什么你无法打开?
您需要获得Android系统(!= Kernel)的许可才能打开设备。
在Java中执行:
当您请求时,会向用户显示一个弹出窗口以接受或拒绝。 所以你需要在java中打开设备,并使用java解压缩fd并传递给libusb,以便它可以与设备通信。
现在libusb将如何从fd构建句柄?
更新:我维护了针对Android修改的libusb版本(更多修复程序 - 在Android 5.1及更低版本上测试/工作)。见https://gitlab.com/madresistor/libusb/blob/android/README
OLD LINK(DEAD LINK)这里的解决方案: https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/libusb/core.c#L993