詳解Android開(kāi)啟OTG功能/USB?Host?API功能
Android USB 模式簡(jiǎn)介設(shè)備模式
當(dāng)計(jì)算機(jī)或其他USB主機(jī)需要連接安卓設(shè)備時(shí),此時(shí)安卓設(shè)備是作為“USB設(shè)備”角色的,在計(jì)算機(jī)上顯示為 USB 外設(shè)?,F(xiàn)在的安卓設(shè)備已經(jīng)被賦予了愈加豐富的功能,如MTP相機(jī)模式、文件傳輸模式(類似于U盤(pán))、RNDIS網(wǎng)卡模式等。當(dāng)使用普通手機(jī)數(shù)據(jù)線連接安卓手機(jī)和電腦就可以使用這些功能。
主機(jī)模式
Android 設(shè)備充當(dāng)USB主機(jī),安卓此時(shí)充當(dāng)類似于計(jì)算機(jī)PC的角色,可以連接鍵盤(pán)、鼠標(biāo)、U盤(pán)以及嵌入式應(yīng)用USB轉(zhuǎn)串口、轉(zhuǎn)I2C等設(shè)備。注意,此時(shí)不能再使用普通數(shù)據(jù)線,而應(yīng)該使用OTG(On-The-Go)轉(zhuǎn)接線。原理是Android設(shè)備通過(guò)USB接口中的ID信號(hào)線狀態(tài)決定其接口是工作在主機(jī)還是設(shè)備模式。如下為OTG轉(zhuǎn)接頭:

配件模式
設(shè)備模式與配件模式之間的區(qū)別在于,在配件模式下,除了 adb 之外,主機(jī)還可以看到其他 USB 功能。Android 設(shè)備從設(shè)備模式開(kāi)始運(yùn)行,然后通過(guò)重新協(xié)商過(guò)程轉(zhuǎn)換到配件模式。除了提供AOA功能外,還額外提供了音頻功能。如:安卓Host AOA接口轉(zhuǎn)換芯片CH9343。
Android主機(jī)模式的開(kāi)啟
如上文主機(jī)模式的介紹,開(kāi)啟Android OTG主機(jī)功能,務(wù)必使用OTG轉(zhuǎn)換線,確認(rèn)是否成功可以通過(guò)連接的外設(shè)是否可以從Android設(shè)備USB口是否有電來(lái)確認(rèn),若仍沒(méi)有電,其一可以查看設(shè)備廠商規(guī)格書(shū),其二可以點(diǎn)擊系統(tǒng)的“設(shè)置”,查看有無(wú)主動(dòng)開(kāi)啟OTG功能的菜單項(xiàng)。
若如上主機(jī)功能可以順利開(kāi)啟,那么我們的安卓設(shè)備就可以連接鍵盤(pán)、鼠標(biāo)、U盤(pán)這些常用外設(shè)了。除此類設(shè)備之外,安卓系統(tǒng)還提供了一套USB Host API可以支持直接通過(guò)應(yīng)用程序和USB設(shè)備通訊,而無(wú)需預(yù)置設(shè)備的USB驅(qū)動(dòng)。該功能極大的提高了安卓設(shè)備使用USB產(chǎn)品的靈活性,用戶端僅安裝APK安卓軟件即可。如客戶使用安卓連接USB轉(zhuǎn)串口設(shè)備CH340、USB轉(zhuǎn)多串口設(shè)備CH342或者用戶使用USB MCU開(kāi)發(fā)的自定義廠商類設(shè)備、HID設(shè)備等使用場(chǎng)景。
當(dāng)然因?yàn)樵撎匦圆⒎撬邪沧繌S商都會(huì)強(qiáng)制支持和開(kāi)放,所以我們需要通過(guò)以下方式來(lái)確認(rèn)或者進(jìn)行必要的配置來(lái)開(kāi)啟該功能。
Android USB Host API功能的確認(rèn)和開(kāi)啟
步驟一:確定 Android 設(shè)備是否支持 USB Host 功能,具體可以通過(guò)以下步驟進(jìn)行確認(rèn):
1. 查看手機(jī)或平板設(shè)備參數(shù),或者直接聯(lián)系廠家咨詢;
2. 使用 UsbHostDiagnostics.APK 安卓應(yīng)用軟件直接進(jìn)行檢測(cè),漢化版軟件名稱為:USB 主機(jī)診斷;
Note:若步驟1提示支持,則無(wú)需進(jìn)行如下步驟。
步驟二:確認(rèn)系統(tǒng)是否包含 USB Host API 相關(guān)的庫(kù)文件,習(xí)慣也稱驅(qū)動(dòng)文件。存放路徑為:/system/lib。
通過(guò)手機(jī)助手工具或者直接使用“adb shell”連接手機(jī),進(jìn)入該目錄進(jìn)行查看,以我的手機(jī)為例,通過(guò) adb 查看結(jié)果如下圖所示:

如果沒(méi)有該文件,可以咨詢廠家或者拷貝相同處理器的安卓系統(tǒng)下的該文件至此目錄下。
步驟三:確認(rèn) Android 系統(tǒng)是否已經(jīng)開(kāi)放了 USB Host 權(quán)限,這一步也是最重要的一步。
由于需要修改系統(tǒng)文件,所以要保證 Android 設(shè)備已經(jīng)具有 Root 權(quán)限,否則會(huì)遇到各種未知的問(wèn)題。Root 之后,可以通過(guò)手機(jī)助手或者“ES文件瀏覽器”等軟件等操作系統(tǒng)文件。
進(jìn)入目錄“/system/etc/permissons”,查看該目錄下,是否有文件“android.hardware.usb.host.xml”,如果沒(méi)有,則需要自己創(chuàng)建一個(gè)或者直接從其他系統(tǒng)中拷貝過(guò)來(lái)。之后打開(kāi)該文件,添加如下內(nèi)容:
<permissons>
<feature name="android.hardware.usb.host"/>
</permissons>在該文件下查找是否存在名稱為“handheld_core_hardware.xml”或者“tablet_core_hardware.xml”的文件。同理,未找到需要新建或者拷貝過(guò)來(lái)。打開(kāi)文件,在 <permissions> section 中添加如下內(nèi)容:
<feature name="android.hardware.usb.host">
添加完成后文件內(nèi)容如下所示:

步驟四:非常重要,就是重啟 Android 設(shè)備。
注:查看安卓系統(tǒng)的 CPU 信息,可以進(jìn)入“adb shell”之后,通過(guò)“cat /proc/cpuinfo”查看。
讀者也可以移步至《CH340安卓應(yīng)用開(kāi)發(fā)指南》,來(lái)了解關(guān)于此用法的詳情。
到此這篇關(guān)于Android開(kāi)啟OTG功能/USB Host API功能的文章就介紹到這了,更多相關(guān)Android USB Host內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
android實(shí)現(xiàn)文件讀寫(xiě)功能
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)文件讀寫(xiě)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
Window下adb shell中文亂碼問(wèn)題解決方法
這篇文章主要介紹了Window下adb shell中文亂碼問(wèn)題解決方法,本文講解了出現(xiàn)這個(gè)問(wèn)題的原因以及解決方法,需要的朋友可以參考下2015-04-04
Android 通過(guò)ViewHolder優(yōu)化適配器的實(shí)現(xiàn)方法(必看)
下面小編就為大家?guī)?lái)一篇Android 通過(guò)ViewHolder優(yōu)化適配器的實(shí)現(xiàn)方法(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04
基于android樣式與主題(style&theme)的詳解
本篇文章是對(duì)android中的樣式與主題(style&theme)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Android實(shí)現(xiàn)圖片滾動(dòng)和頁(yè)簽控件功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android實(shí)現(xiàn)圖片滾動(dòng)控件含頁(yè)簽功能的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Kotlin注解實(shí)現(xiàn)Parcelable序列化流程詳解
有時(shí)我們會(huì)在界面跳轉(zhuǎn)的過(guò)程中,做對(duì)象傳值,這時(shí)就需要對(duì)該對(duì)象做序列化處理了。Android中對(duì)對(duì)象的序列化處理有兩種方式,這篇文章主要介紹了Kotlin注解實(shí)現(xiàn)Parcelable序列化2022-12-12

