首頁 > 軟體

詳解Android開啟OTG功能/USB Host API功能

2022-07-21 22:01:12

Android USB 模式簡介裝置模式

當計算機或其他USB主機需要連線安卓裝置時,此時安卓裝置是作為“USB裝置”角色的,在計算機上顯示為 USB 外設。現在的安卓裝置已經被賦予了愈加豐富的功能,如MTP相機模式、檔案傳輸模式(類似於U盤)、RNDIS網路卡模式等。當使用普通手機傳輸線連線安卓手機和電腦就可以使用這些功能。

主機模式

Android 裝置充當USB主機,安卓此時充當類似於計算機PC的角色,可以連線鍵盤、滑鼠、U盤以及嵌入式應用USB轉串列埠、轉I2C等裝置。注意,此時不能再使用普通傳輸線,而應該使用OTG(On-The-Go)轉接線。原理是Android裝置通過USB介面中的ID訊號線狀態決定其介面是工作在主機還是裝置模式。如下為OTG轉接頭:

配件模式

裝置模式與配件模式之間的區別在於,在配件模式下,除了 adb 之外,主機還可以看到其他 USB 功能。Android 裝置從裝置模式開始執行,然後通過重新協商過程轉換到配件模式。除了提供AOA功能外,還額外提供了音訊功能。如:安卓Host AOA介面轉換晶片CH9343。

Android主機模式的開啟

如上文主機模式的介紹,開啟Android OTG主機功能,務必使用OTG轉換線,確認是否成功可以通過連線的外設是否可以從Android裝置USB口是否有電來確認,若仍沒有電,其一可以檢視裝置廠商規格書,其二可以點選系統的“設定”,檢視有無主動開啟OTG功能的選單項。

若如上主機功能可以順利開啟,那麼我們的安卓裝置就可以連線鍵盤、滑鼠、U盤這些常用外設了。除此類裝置之外,安卓系統還提供了一套USB Host API可以支援直接通過應用程式和USB裝置通訊,而無需預置裝置的USB驅動。該功能極大的提高了安卓裝置使用USB產品的靈活性,使用者端僅安裝APK安卓軟體即可。如客戶使用安卓連線USB轉串列埠裝置CH340、USB轉多串列埠裝置CH342或者使用者使用USB MCU開發的自定義廠商類裝置、HID裝置等使用場景。

當然因為該特性並非所有安卓廠商都會強制支援和開放,所以我們需要通過以下方式來確認或者進行必要的設定來開啟該功能。

Android USB Host API功能的確認和開啟

步驟一:確定 Android 裝置是否支援 USB Host 功能,具體可以通過以下步驟進行確認:

1. 檢視手機或平板裝置引數,或者直接聯絡廠家諮詢;

2. 使用 UsbHostDiagnostics.APK 安卓應用軟體直接進行檢測,漢化版軟體名稱為:USB 主機診斷;

Note:若步驟1提示支援,則無需進行如下步驟。

步驟二:確認系統是否包含 USB Host API 相關的庫檔案,習慣也稱驅動檔案。存放路徑為:/system/lib。

通過手機助手工具或者直接使用“adb shell”連線手機,進入該目錄進行檢視,以我的手機為例,通過 adb 檢視結果如下圖所示:

如果沒有該檔案,可以諮詢廠家或者拷貝相同處理器的安卓系統下的該檔案至此目錄下。

步驟三:確認 Android 系統是否已經開放了 USB Host 許可權,這一步也是最重要的一步。

由於需要修改系統檔案,所以要保證 Android 裝置已經具有 Root 許可權,否則會遇到各種未知的問題。Root 之後,可以通過手機助手或者“ES檔案瀏覽器”等軟體等作業系統檔案。

進入目錄“/system/etc/permissons”,檢視該目錄下,是否有檔案“android.hardware.usb.host.xml”,如果沒有,則需要自己建立一個或者直接從其他系統中拷貝過來。之後開啟該檔案,新增如下內容:

<permissons>
        <feature name="android.hardware.usb.host"/>
    </permissons>

在該檔案下查詢是否存在名稱為“handheld_core_hardware.xml”或者“tablet_core_hardware.xml”的檔案。同理,未找到需要新建或者拷貝過來。開啟檔案,在 <permissions> section 中新增如下內容:

<feature name="android.hardware.usb.host">

新增完成後檔案內容如下所示:

步驟四:非常重要,就是重啟 Android 裝置。

注:檢視安卓系統的 CPU 資訊,可以進入“adb shell”之後,通過“cat /proc/cpuinfo”檢視。

讀者也可以移步至《CH340安卓應用開發指南》,來了解關於此用法的詳情。

到此這篇關於Android開啟OTG功能/USB Host API功能的文章就介紹到這了,更多相關Android  USB Host內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com