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

2024-02-18

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

提前致谢。

P.S. 至于问题 1,我已经尝试对 /dev/bus/usb 执行 chmod 666,但它显示“权限被拒绝”(请注意,我的设备已 root)。

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


我确信可以让 libusb 在具有 USB 主机的 root 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 https://gitlab.com/madresistor/libusb/blob/android/README

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Android应用程序中使用libusb:如何允许应用程序访问USB 的相关文章

  • 我们可以在android NDK代码中使用系统IPC吗

    在这里我想使用系统 IPC 方法 例如
  • Eclipse ADT“...无法解析”Android NDK 和 C 文件

    我的 NDK 项目的 Eclipse 索引器出现问题 那里有很多类似的线程 但似乎没有一个涉及相同的问题根源 我有一个 OpenGL ES 应用程序 我需要将其移植到纯粹用 C 编写的 Android 我想将其作为 NativeActivi
  • 如何使用 Cygwin 打开 RTTI?

    当我的Android NDK C 本机代码编译时 出现以下错误 错误 fno rtti 不允许使用 dynamic cast 有人告诉我打开RTTI 但我不知道该怎么做 我需要修改吗Application mk或者是什么 my Applic
  • 使用 FFMPEG 播放音频

    我一直在尝试使用 NDK 将 FFMPEG 用于播放音频 移植到 Android 中 我取得了一些成功 我可以构建 FFMPEG 并通过 NDK 链接它 我可以打电话avcodec decode audio3 并解码给定的音频文件 所以这里
  • Android Studio 与 ndk 和 googletest

    我正在尝试设置我的 CI 服务器以与 Android Studio 一起使用 我希望通过新的 UI 运行 NDK 的单元测试 我正在使用 GoogleTest 当我从命令行构建时 gcov 可以完美地实现代码覆盖率 我遇到的问题是 UI 中
  • Tegra 平板电脑上的 NDK 调试

    今天 我购买了用于本机开发的 Android 平板电脑 采用 Tegra 的 Acer Iconina Tab A500 Honeycomb 3 1 然后我从以下位置下载并安装了 Tegra Android Development Pack
  • Android视频删除色度键背景

    我检查过this https stackoverflow com questions 12813089 i am working on android camera app i want to capture image and chang
  • Android Studio、OpenCV、C++、jni、NDK - 无法配置?

    我正在尝试使用 jni 和 Android Studio NDK 在 Android Studio 中进行 OpenCV C 调用 这些是我一直在工作的参考资料 https github com opencv opencv tree mas
  • (二进制、NDK)C 应用程序与 Java 应用程序的反编译(Dalvik 字节码)

    Well 由于我对重新设计很感兴趣 到目前为止我在 Android 重新设计上花费了大量时间 尽管如此 我还是遇到了编译二进制 C 代码 NDK 的问题 并且我知道将其反编译回 C C 比将 DEX 文件反编译回或多或少要困难得多 以及Ja
  • Android JNI异常处理

    我需要在 JNI 代码中实现异常处理 我不擅长 jni 找不到任何好的例子 因此 请提供完整的示例 这就是我正在做的 jint JNI OnLoad JavaVM vm void reserved jint result 1 g JavaV
  • ANDROID NDK - android:找不到命令

    我试图完成 Android NDK 中提供的第一个示例练习 我试图在 cygwin 上运行以下命令 android update project p 然而 我得到android command not found error 我检查了我的
  • 如何链接 ndk 应用程序中的任何库

    From 本教程 http marakana com forums android examples 49 html 看到我有一个预构建的静态库 名为stackoverflow a它有stackoverflow h 现在我想使用该静态库的功
  • Readelf 报告程序是共享库而不是可执行文件

    使用独立的 Android NDK r10e 工具链 使用 toolchain x86 clang3 6 开关构建 出现这种奇怪的行为 交叉编译的环境变量已设置在运行makefile之前 SYSROOT指向Android工具链位置 CXX等
  • build.gradle 文件中的 abiFilters 属性是什么?

    我找到了关于什么的文档ABI https developer android com ndk guides abis html是 但我找不到任何有关 ndk abiFilters 属性的确切用途的文档 具体有几个问题 如果我设置该属性 列出
  • 无法加载(查找)j2v8_android_x86 库

    我有一个使用的 gradle 项目j2v8 android 2 2 1 http mvnrepository com artifact com eclipsesource j2v8 j2v8 android 2 2 1库 为 V8 JS 引
  • Android OpenGL ES 2.0 模拟器

    好吧 我有一个支持 OpenGl ES 2 0 HTC Desire 的设备 当然在设备上部署应用程序比在模拟器上部署应用程序要快得多 默认的android模拟器不支持2 0 androidX86项目和类似的androbox项目不支持本机代
  • 为什么我的原生 C++ 代码在 Android 上运行速度比 Java 慢很多?

    我将 Java 代码的某些部分移植到 C 以加快 Android 上的计算速度 这是一个物理子例程 我发现本机代码的运行速度比 Java 代码慢几倍 我认为我的项目配置可能有问题 或者可能是数组处理有问题 所以我在 HelloAndroid
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • android ndk 硬件调试内存

    背景 我对 C 很有经验 对 Android 和 Java 还很陌生 但这是编程的环境问题 我已经用 ANSI C 开发了一个管理应用程序 可以移植到任何操作系统 只需在依赖于操作系统的代码中添加 UI 即可 它使用相当多的内存 特别是对于
  • 从 NDK 获取应用程序名称

    我需要从本机端获取我的 Android 应用程序的名称 如下所示 android content context context android content context this current activiy Resources

随机推荐