詳解Android開啟OTG功能/USB?Host?API功能
Android USB 模式簡介設(shè)備模式
當計算機或其他USB主機需要連接安卓設(shè)備時,此時安卓設(shè)備是作為“USB設(shè)備”角色的,在計算機上顯示為 USB 外設(shè)?,F(xiàn)在的安卓設(shè)備已經(jīng)被賦予了愈加豐富的功能,如MTP相機模式、文件傳輸模式(類似于U盤)、RNDIS網(wǎng)卡模式等。當使用普通手機數(shù)據(jù)線連接安卓手機和電腦就可以使用這些功能。
主機模式
Android 設(shè)備充當USB主機,安卓此時充當類似于計算機PC的角色,可以連接鍵盤、鼠標、U盤以及嵌入式應(yīng)用USB轉(zhuǎn)串口、轉(zhuǎn)I2C等設(shè)備。注意,此時不能再使用普通數(shù)據(jù)線,而應(yīng)該使用OTG(On-The-Go)轉(zhuǎn)接線。原理是Android設(shè)備通過USB接口中的ID信號線狀態(tài)決定其接口是工作在主機還是設(shè)備模式。如下為OTG轉(zhuǎn)接頭:
配件模式
設(shè)備模式與配件模式之間的區(qū)別在于,在配件模式下,除了 adb 之外,主機還可以看到其他 USB 功能。Android 設(shè)備從設(shè)備模式開始運行,然后通過重新協(xié)商過程轉(zhuǎn)換到配件模式。除了提供AOA功能外,還額外提供了音頻功能。如:安卓Host AOA接口轉(zhuǎn)換芯片CH9343。
Android主機模式的開啟
如上文主機模式的介紹,開啟Android OTG主機功能,務(wù)必使用OTG轉(zhuǎn)換線,確認是否成功可以通過連接的外設(shè)是否可以從Android設(shè)備USB口是否有電來確認,若仍沒有電,其一可以查看設(shè)備廠商規(guī)格書,其二可以點擊系統(tǒng)的“設(shè)置”,查看有無主動開啟OTG功能的菜單項。
若如上主機功能可以順利開啟,那么我們的安卓設(shè)備就可以連接鍵盤、鼠標、U盤這些常用外設(shè)了。除此類設(shè)備之外,安卓系統(tǒng)還提供了一套USB Host API可以支持直接通過應(yīng)用程序和USB設(shè)備通訊,而無需預(yù)置設(shè)備的USB驅(qū)動。該功能極大的提高了安卓設(shè)備使用USB產(chǎn)品的靈活性,用戶端僅安裝APK安卓軟件即可。如客戶使用安卓連接USB轉(zhuǎn)串口設(shè)備CH340、USB轉(zhuǎn)多串口設(shè)備CH342或者用戶使用USB MCU開發(fā)的自定義廠商類設(shè)備、HID設(shè)備等使用場景。
當然因為該特性并非所有安卓廠商都會強制支持和開放,所以我們需要通過以下方式來確認或者進行必要的配置來開啟該功能。
Android USB Host API功能的確認和開啟
步驟一:確定 Android 設(shè)備是否支持 USB Host 功能,具體可以通過以下步驟進行確認:
1. 查看手機或平板設(shè)備參數(shù),或者直接聯(lián)系廠家咨詢;
2. 使用 UsbHostDiagnostics.APK 安卓應(yīng)用軟件直接進行檢測,漢化版軟件名稱為:USB 主機診斷;
Note:若步驟1提示支持,則無需進行如下步驟。
步驟二:確認系統(tǒng)是否包含 USB Host API 相關(guān)的庫文件,習(xí)慣也稱驅(qū)動文件。存放路徑為:/system/lib。
通過手機助手工具或者直接使用“adb shell”連接手機,進入該目錄進行查看,以我的手機為例,通過 adb 查看結(jié)果如下圖所示:
如果沒有該文件,可以咨詢廠家或者拷貝相同處理器的安卓系統(tǒng)下的該文件至此目錄下。
步驟三:確認 Android 系統(tǒng)是否已經(jīng)開放了 USB Host 權(quán)限,這一步也是最重要的一步。
由于需要修改系統(tǒng)文件,所以要保證 Android 設(shè)備已經(jīng)具有 Root 權(quán)限,否則會遇到各種未知的問題。Root 之后,可以通過手機助手或者“ES文件瀏覽器”等軟件等操作系統(tǒng)文件。
進入目錄“/system/etc/permissons”,查看該目錄下,是否有文件“android.hardware.usb.host.xml”,如果沒有,則需要自己創(chuàng)建一個或者直接從其他系統(tǒng)中拷貝過來。之后打開該文件,添加如下內(nèi)容:
<permissons> <feature name="android.hardware.usb.host"/> </permissons>
在該文件下查找是否存在名稱為“handheld_core_hardware.xml”或者“tablet_core_hardware.xml”的文件。同理,未找到需要新建或者拷貝過來。打開文件,在 <permissions> section 中添加如下內(nèi)容:
<feature name="android.hardware.usb.host">
添加完成后文件內(nèi)容如下所示:
步驟四:非常重要,就是重啟 Android 設(shè)備。
注:查看安卓系統(tǒng)的 CPU 信息,可以進入“adb shell”之后,通過“cat /proc/cpuinfo”查看。
讀者也可以移步至《CH340安卓應(yīng)用開發(fā)指南》,來了解關(guān)于此用法的詳情。
到此這篇關(guān)于Android開啟OTG功能/USB Host API功能的文章就介紹到這了,更多相關(guān)Android USB Host內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android 通過ViewHolder優(yōu)化適配器的實現(xiàn)方法(必看)
下面小編就為大家?guī)硪黄狝ndroid 通過ViewHolder優(yōu)化適配器的實現(xiàn)方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04基于android樣式與主題(style&theme)的詳解
本篇文章是對android中的樣式與主題(style&theme)進行了詳細的分析介紹,需要的朋友參考下2013-06-06Android實現(xiàn)圖片滾動和頁簽控件功能的實現(xiàn)代碼
這篇文章主要介紹了Android實現(xiàn)圖片滾動控件含頁簽功能的實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助,一起跟隨小編過來看看吧2018-05-05Kotlin注解實現(xiàn)Parcelable序列化流程詳解
有時我們會在界面跳轉(zhuǎn)的過程中,做對象傳值,這時就需要對該對象做序列化處理了。Android中對對象的序列化處理有兩種方式,這篇文章主要介紹了Kotlin注解實現(xiàn)Parcelable序列化2022-12-12