我想在我的Android应用(java GUI + native(C++)核心)中使用libusb。我已经编译了libusb并尝试调用其函数,但是libusb_open返回LIBUSB_ERROR_ACCESS。我想USB访问权限有问题,但是我不知道如何解决该问题。因此,这里有2个问题:
1)如何使libusb在 Root过的Android 3.1设备上运行?
2)是否可以在无根的工厂默认设备上使用libusb?

提前致谢。

P. S.关于问题1,我已经尝试将chmod 666用于/dev/bus/usb,但是它显示“权限被拒绝”(请注意,我的设备已 Root )。

P.P.S.挂载usbfs none/proc/bus/usb -o devmode = 0666甚至不执行,好像我拼错了什么(但我没有)。

我知道有可能让libusb在带有USB主机的有根Android设备上运行,但是我从未对其进行管理,因此我不得不将应用程序限制为Android 3.1+并使用USB API。

最佳答案

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

为什么您无法打开?

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

用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

关于android-ndk - 在Android应用程序: how to allow application to access USB中使用libusb,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7469518/

10-12 15:26