欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

第三方库LibUSB在Android系统上的简单使用

程序员文章站 2022-06-01 20:37:36
背景:公司开发一个usb设备的固件升级工具。 1、为毛使用libusb库?因为使用android host api读取不到我想要的usb设备。有类似的兄弟姐妹们请看自定义hid设备与android设...

背景:公司开发一个usb设备的固件升级工具。

1、为毛使用libusb库?因为使用android host api读取不到我想要的usb设备。有类似的兄弟姐妹们请看自定义hid设备与android设备通信,看了这篇文章之后,是不是觉得可以不用了?是的,你们说得很对。可能会存在这个小概率事件——没有修改描述符的自定义设备已经发货到客户终端了,客户使用起来不爽,设备商于是更新了固件,需要在android下升级。这种小概率事件被我遇上了。既然遇上了就要解决。于是于是采用第三方库libusb。

2、使用libusb库又会遇到什么问题呢?使用该库存在一个权限问题,官方文档有三种解决办法。https://github.com/libusb/libusb/blob/master/android/readme,不过在开机启动项中修改权限,只能修改一次,如果设备存在几种状态,即:对应不同的pid之间切换。那么只能使用java调用su命令的方法。(这些都针对我要写工具的设备使用)

3、写jni。主要问题就是层级之间数据的转换问题,写过jni的基本都会,这就不用多说了。补充个libusb的api:https://libusb.sourceforge.net/api-1.0/libusb_api.html? ?如果看api也没啥子头绪就看实例代码吧,前面那个github连接中example目录下多个简单实例

4、弄清与设备之间的控制命令通道与数据通道,以及设备切换,命令切换之间的延时关系。开发该app就不再话下了。

5、end!