第三方库LibUSB在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:http://libusb.sourceforge.net/api-1.0/libusb_api.html   如果看API也没啥子头绪就看实例代码吧,前面那个github连接中example目录下多个简单实例

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

5、END!

你可能感兴趣的:(USB,Android,Code,Transplant,Android,NDK,LibUSB)