Die Kamera-Hardware-Abstraktionsschicht (HAL) von Android verbindet die höhere Ebene Kamera-Framework-APIs in android.hardware.camera2 an den zugrunde liegenden Kameratreiber und an die Hardware an. Ab Android 13: Kamera-HAL-Schnittstelle bei der Entwicklung mit AIDL. Einführung von Android 8.0 Höhen, Wechsel der Camera HAL API zu einer stabilen Schnittstelle, die durch die HAL Interface Description Language (HIDL) definiert wird. Wenn Sie bereits ein Kamera-HAL-Modul und einen Kameratreiber für Android 7.0 entwickelt haben und geringer sind, sollten Sie sich in der Kamera-Pipeline zu ändern.
AIDL-Kamera HAL
Bei Geräten mit Android 13 oder höher hat die Kamera unterstützt AIDL-Kamera-HALs. Auch die Kamera unterstützt HIDL-Kamera-HALs. Die neuen Kamerafunktionen Android 13 oder höher ist nur über die HAL-Schnittstellen für AIDL-Kamera Um diese Funktionen auf Geräten zu implementieren, die ein Upgrade auf Android 13 oder höher müssen Gerätehersteller ihren HAL-Prozess von HIDL-Kameraschnittstellen auf die AIDL-Kamera umstellen Schnittstellen.
Weitere Informationen zu den Vorteilen von AIDL finden Sie unter AIDL für HALs
AIDL-Kamera-HAL implementieren
Eine Referenzimplementierung eines AIDL-Kamera-HAL finden Sie unter
hardware/google/camera/common/hal/aidl_service/
Die HAL-Spezifikationen der AIDL-Kamera finden Sie an folgenden Stellen:
- Kameraanbieter:
hardware/interfaces/camera/provider/aidl/
- Kameragerät:
hardware/interfaces/camera/device/aidl/
- Kamera-Metadaten:
hardware/interfaces/camera/metadata/aidl/
- Gängige Datentypen:
hardware/interfaces/camera/common/aidl/
Bei Geräten, die zu AIDL migrieren, müssen Gerätehersteller möglicherweise die Android SELinux-Richtlinie (sepolicy) und RC-Dateien abhängig vom Code Struktur.
AIDL-Kamera-HAL validieren
Prüfen Sie zum Testen der HAL-Implementierung Ihrer AIDL-Kamera, ob das Gerät alle
CTS- und VTS-Tests AIDL VTS wird mit Android 13 eingeführt
Test,
VtsAidlHalCameraProvider_TargetTest.cpp
Kamera-HAL3-Funktionen
Ziel der Neugestaltung der Android Camera API ist es, können Apps das Kamerasubsystem von Android-Geräten steuern, um sie effizienter und einfacher zu verwalten. Die zusätzliche ist es einfacher, hochwertige Kamera-Apps auf Android-Geräten zu entwickeln. Geräte, die produktübergreifend zuverlässig funktionieren und gleichzeitig gerätespezifische Algorithmen verwenden, um die Qualität und die Leistung.
In Version 3 des Kamera-Subsystems sind die Betriebsmodi Einheitliche Ansicht erstellen, mit der jeder der vorherigen Modi implementiert werden kann und einige andere, z. B. den Burst-Modus. Dies führt zu einer besseren Steuerung der Fokus und Belichtung sowie mehr Nachbearbeitung wie Rauschunterdrückung, Kontrast und Schärfen verwenden. Außerdem erleichtert diese vereinfachte Ansicht die verschiedenen Kamerafunktionen nutzen können.
Die API modelliert das Kamerasubsystem als Pipeline, die eingehende Anforderungen für Frame Captures auf 1:1-Basis in Frames. Die Ersuchen alle Konfigurationsinformationen zur Erfassung und Verarbeitung einer Frame. Dazu gehören Auflösung und Pixelformat, manueller Sensor, Objektiv und Blitz Kontrolle; 3A-Betriebsmodi; RAW->YUV-Verarbeitungskontrolle; Erstellung von Statistiken und so weiter.
In einfachen Worten fordert das Anwendungs-Framework einen Frame von der Kamera an. und das Kamerasubsystem gibt die Ergebnisse an einen Ausgabestream zurück. In Metadaten, die Informationen wie Farbräume und Linse enthalten, für jeden Satz von Ergebnissen eine Schattierung generiert. Bei der Kameraversion 3 als Pipeline zum Einwegstream der Kameraversion 1. Jede Erfassung wird konvertiert. in ein vom Sensor erfasstes Bild umwandeln, das in folgende Elemente verarbeitet wird:
- Ein Ergebnisobjekt mit Metadaten zur Aufnahme.
- Ein bis N Puffer von Bilddaten, jeweils in einer eigenen Zieloberfläche.
Die möglichen Ausgabeoberflächen sind vorkonfiguriert:
- Jede Oberfläche ist ein Ziel für einen Strom von Bildpuffern einer festen Problembehebung.
- Nur wenige Oberflächen können gleichzeitig als Ausgaben konfiguriert werden (~3).
Eine Anfrage enthält alle gewünschten Erfassungseinstellungen und die Liste der Ausgabe
Oberflächen, in die Bildzwischenspeicher für diese Anfrage verschoben werden sollen (aus der Gesamtzahl
konfigurierten Satz). Anfragen können in einem Schritt (mit capture()
) oder
kann unbegrenzt wiederholt werden (mit setRepeatingRequest()
). Aufnahmen
Vorrang vor wiederkehrenden Anfragen.
![Kameradatenmodell](https://source.android.google.cn/static/docs/core/camera/images/camera_simple_model.png?authuser=6&hl=de)
Abbildung 1: Hauptbetriebsmodell der Kamera
Kamera-HAL1 – Übersicht
Version 1 des Kamera-Subsystems wurde als Blackbox mit und die folgenden drei Betriebsmodi:
- Vorschau
- Videoaufnahme
- Foto aufnehmen
Die Funktionen der einzelnen Modi unterscheiden sich geringfügig und überschneiden sich. Das wars neue Funktionen wie den Burst-Modus, der zwischen zwei der die Betriebsmodi.
![Kamera-Blockdiagramm](https://source.android.google.cn/static/docs/core/camera/images/camera_block.png?authuser=6&hl=de)
Abbildung 2: Kamerakomponenten
Android 7.0 unterstützt weiterhin Kamera-HAL1, da viele Geräte immer noch . Außerdem unterstützt der Android-Kameradienst die Implementierung beider HALs (1 und 3). Diese Funktion ist nützlich, wenn Sie ein weniger leistungsfähiges Kamera mit Kamera HAL1 und einer moderneren Rückkamera mit Kamera HAL3.
Es gibt ein einzelnes Kamera-HAL-Modul (mit eigenem Version Nummer). Hier sind mehrere unabhängige Kamerageräte aufgeführt, die jeweils mit eine eigene Versionsnummer haben. Für die Unterstützung ist das Kameramodul 2 oder höher erforderlich Geräte mit Version 2 oder höher. Diese Kameramodule können mehrere Versionen verfügbar sind (das meinen wir, wenn wir sagen, dass Android die Implementierung HALs.