为了支持 USB 硬件抽象层 (HAL) API,设备制造商必须实现相应的 USB HAL 版本。要使用 USB HAL API,需要系统特权应用。
USB HAL 支持 USB 端口重置 API,该 API 需要 USB HAL v2.0,并且适用于运行 Android 13 及更高版本的设备。使用此 API 可重置与连接主机的 USB 连接。
查找 USB HAL 及其 API
设备制造商必须实现 USB HAL 才能支持这些 API。
要查找 USB HAL 的默认实现,请使用以下路径
版本 AIDL(最新):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
要查找硬件接口标头文件,请使用以下路径
版本 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 端口重置 API 的 USB AIDL HAL,方法是重置目标设备和主机之间的 USB 连接。
了解 USB HAL API 架构
USB HAL API 内置于 android.hardware.usb
软件包中,并利用 USB HAL 与设备进行互动。下图提供了有关 API 架构的详细信息。
USB 端口重置 API
下图说明了框架中 USB 端口重置 API 的代码流,包括 USB HAL 的实现。
图 1.1 USB 端口重新连接 API 代码流示例。
验证您的实现
每个 USB HAL 版本及其对应的 API 都与供应商测试套件 (VTS) 中的一个测试用例相关联。
USB 端口重置 API
要查找 USB 端口重置 API 的 VTS 测试用例,请转到
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
USB HAL v1.2 的 VTS 测试用例是一个主机端测试用例,您可以使用它来执行以下操作。
要调用 USB 端口重置 API,请使用
adb shell
命令 (#svc usb resetUsbPort
)。确认被测设备 (DUT) 可以断开连接并重新连接。