Um die USB Hardware Abstraction Layer (HAL) API zu unterstützen, müssen Gerätehersteller die entsprechende USB HAL-Version implementieren. Um die USB-HAL-API nutzen zu können, ist eine systemprivilegierte App erforderlich.
Der USB HAL unterstützt die USB Port Reset API, die USB HAL v2.0 erfordert und für Geräte mit Android 13 und höher verfügbar ist. Verwenden Sie diese API, um die USB-Verbindung mit dem verbundenen Host zurückzusetzen.
Finden Sie den USB-HAL und seine APIs
Gerätehersteller müssen den USB-HAL implementieren, um die APIs zu unterstützen.
Um die Standardimplementierung von USB HAL zu finden, verwenden Sie die folgenden Pfade:
Version AIDL (aktuell):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
Um die Headerdatei der Hardwareschnittstelle zu finden, verwenden Sie den folgenden Pfad:
Version AIDL (aktuell):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
Um die APIs zu finden, verwenden Sie den folgenden Pfad, um die APIs unter der AIDL-Headerdatei zu finden. Dieser Pfad ist auch der Android Framework-Einstiegspunkt für die API:
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
Implementieren Sie den USB-HAL
Um mit der USB-HAL-API zu arbeiten, implementieren Sie Folgendes:
Richtige USB-HAL-Version. Es ist keine System-UI-Implementierung erforderlich.
USB AIDL HAL für die USB-Port-Reset-API durch Zurücksetzen der USB-Verbindung zwischen dem Zielgerät und dem Host.
Verstehen Sie die USB-HAL-API-Architektur
Die USB-HAL-API ist in das Paket android.hardware.usb
integriert und nutzt die USB-HAL für die Interaktion mit dem Gerät. Einzelheiten zur Architektur der API finden Sie in der folgenden Abbildung.
USB-Port-Reset-API
Die folgende Abbildung veranschaulicht den Codefluss der USB-Port-Reset-API in einem Framework, einschließlich der Implementierung des USB-HAL.
Abbildung 1.1 Beispiel-API-Codefluss zum erneuten Einsetzen des USB-Ports.
Validieren Sie Ihre Implementierung
Jede USB-HAL-Version und die entsprechende API sind einem Testfall in der Vendor Test Suite (VTS) zugeordnet.
USB-Port-Reset-API
Den VTS-Testfall für die USB Port Reset API finden Sie unter:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
Der VTS-Testfall für USB HAL v1.2 ist ein hostseitiger Testfall, den Sie zum Ausführen dieser Aktionen verwenden können.
Um die USB-Port-Reset-API aufzurufen, verwenden Sie den
adb shell
Befehl (#svc usb resetUsbPort
).Stellen Sie sicher, dass das zu testende Gerät (DUT) die Verbindung trennen und wieder herstellen kann.