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

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內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: