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

android-ndk – 在Android应用程序中使用libusb:如何允许应用程序访问USB,第1张

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

解决方法 在androID中,你无法使用libusb直接打开usb设备(这是你来到的结论:).

为什么你不能打开?

您需要获得AndroID系统(!= Kernel)的许可才能打开设备.

用Java做:

当您请求时,会向用户显示一个d出窗口以接受或拒绝.
所以你需要在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应用程序中使用libusb:如何允许应用程序访问USB全部内容,希望文章能够帮你解决android-ndk – 在Android应用程序中使用libusb:如何允许应用程序访问USB所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1135372.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存