1. 程式人生 > >第三方庫LibUSB在Android系統上的簡單使用

第三方庫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!