Zur Unterstützung der HAL-API (USB Hardware Extraction Layer) müssen Gerätehersteller die entsprechende USB-HAL-Version implementieren. Für die Verwendung der USB HAL API ist eine App mit Systemberechtigungen erforderlich.
Die USB HAL unterstützt die USB Port Reset API, für die USB HAL v2.0 erforderlich ist. Sie ist auf Geräten mit Android 13 und höher verfügbar. Setzen Sie mit dieser API die USB-Verbindung mit dem verbundenen Host zurück.
USB HAL und zugehörige APIs finden
Gerätehersteller müssen die USB HAL implementieren, um die APIs zu unterstützen.
Die Standardimplementierung des USB HAL finden Sie unter den folgenden Pfaden:
Versions-AIDL (aktuell):
<aosp>/hardware/interfaces/usb/gadget/1.2/default/
Die Headerdatei der Hardwareschnittstelle finden Sie unter folgendem Pfad:
Version AIDL (aktuell):
<aosp>/hardware/interfaces/usb/gadget/1.2/IUsbGadget.hal
Sie finden die APIs unter dem folgenden Pfad in der AIDL-Headerdatei. Dieser Pfad ist auch der Einstiegspunkt des Android-Frameworks für die API:
android.hardware.usb
:<aosp>/core/java/android/hardware/usb
USB HAL implementieren
Implementieren Sie Folgendes, um mit der USB HAL API zu arbeiten:
Korrekte USB HAL-Version. Eine System-UI-Implementierung ist nicht erforderlich.
USB AIDL HAL für die USB Port Reset API, um die USB-Verbindung zwischen dem Zielgerät und dem Host zurückzusetzen.
USB HAL API-Architektur
Die USB HAL API ist in das android.hardware.usb
-Paket eingebunden und nutzt den USB HAL, um mit dem Gerät zu interagieren. Details zur Architektur der API finden Sie in der Abbildung unten.
USB Port Reset API
Die folgende Abbildung veranschaulicht den Codefluss der USB Port Reset API in einem Framework, einschließlich der Implementierung der USB HAL.
Abbildung 1.1: Beispiel für den API-Codefluss zum Neusetzen des USB-Anschlusses
Implementierung validieren
Jede USB-HAL-Version und die entsprechende API ist einem Testlauf in der Vendor Test Suite (VTS) zugeordnet.
USB Port Reset API
Den VTS-Testfall für die USB Port Reset API finden Sie hier:
<aosp>/test/vts-testcase/hal/usb/gadget/V1_2/
Der VTS-Testfall für USB HAL v1.2 ist ein hostseitiger Testfall, mit dem Sie diese Aktionen ausführen können.
Verwenden Sie den Befehl
adb shell
(#svc usb resetUsbPort
), um die USB Port Reset API aufzurufen.Prüfen Sie, ob die Verbindung zum Testgerät getrennt und wiederhergestellt werden kann.