7

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

提前致谢。

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

PPS mount usbfs none /proc/bus/usb -o devmode=0666 甚至不执行,就好像我拼错了什么(但我没有)。


我确信可以让 libusb 在带有 USB 主机的根 Android 设备上运行,但我从未管理过它,所以我不得不将应用程序限制为 Android 3.1+ 并使用 USB API。

4

1 回答 1

1

在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

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

于 2014-07-15T12:48:26.397 回答