如要支援 USB 硬體抽象層 (HAL) API,裝置製造商必須實作對應的 USB HAL 版本。如要使用 USB HAL API,您必須使用具備系統特權的應用程式。
USB HAL 支援 USB 連接埠重設 API,但必須使用 USB HAL 2.0,且適用於搭載 Android 13 以上版本的裝置。使用這個 API 重設與已連結主機的 USB 連線。
尋找 USB HAL 及其 API
裝置製造商必須實作 USB HAL,才能支援這些 API。
如要找出 USB HAL 的預設實作項目,請使用下列路徑:
Version AIDL (最新版本):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
如要找出硬體介面標頭檔案,請使用下列路徑:
Version AIDL (最新版本):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
如要找出 API,請使用下列路徑,在 AIDL 標頭檔案下找到 API。這個路徑也是 API 的 Android 架構進入點:
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
實作 USB HAL
如要使用 USB HAL API,請實作以下項目:
正確的 USB HAL 版本。不需要實作系統 UI。
透過重設目標裝置和主機之間的 USB 連線,為 USB Port Reset API 提供 USB AIDL HAL。
瞭解 USB HAL API 架構
USB HAL API 已內建於 android.hardware.usb
套件中,並利用 USB HAL 與裝置互動。下圖說明 API 架構的詳細資訊。
USB 連接埠重設 API
下圖說明架構中 USB Port Reset API 的程式碼流程,包括 USB HAL 的實作方式。
圖 1.1 USB 連接埠重置 API 程式碼流程範例。
驗證導入狀態
每個 USB HAL 版本及其對應的 API 都會與供應商測試套件 (VTS) 中的測試案例相關聯。
USB 連接埠重設 API
如要查看 USB Port Reset API 的 VTS 測試案例,請前往:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
USB HAL 1.2 版的 VTS 測試案例是主機端測試案例,可用於執行這些動作。
如要叫用 USB 通訊埠重設 API,請使用
adb shell
指令 (#svc usb resetUsbPort
)。確認接受測試的裝置 (DUT) 可以中斷連線並重新連線。