Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Checkliste für HAL-Tests der Kamera

In diesem Dokument sind alle verfügbaren Tests zur Bewertung der Hardware-Abstraktionsschicht (HAL) für Android-Kameras aufgeführt. Es richtet sich an Erstausrüster (OEMs) und Anbieter von Anwendungsprozessoren (AP), damit diese die ordnungsgemäße Implementierung der Kamera-HAL mit minimalen Fehlern sicherstellen können. Obwohl dies eine freiwillige Ergänzung der Android Compatibility Test Suite (CTS) ist, erhöht es die Abdeckung von Kameratests erheblich und wird sicherlich potenzielle Fehler identifizieren.

Durch Bestehen dieser Tests überprüfen OEMs, ob sie die HAL 3-Schnittstellen (Android Camera Hardware Abstraction Layer) ordnungsgemäß integriert haben. Wenn alle Elemente in der Checkliste eingehalten werden, kann eine Geräteimplementierung in Bezug auf die HAL-Schnittstellen der Android-Kamera als vollständig angesehen werden. Dadurch kann ein Gerät das Paket android.hardware.camera2 , auf dem Kamera-Apps aufbauen, ordnungsgemäß unterstützen.

Kamera HAL3 Spezifikation

Die Android Camera HAL3- Spezifikation ist die maßgebliche Informationsquelle darüber, welche Geräte erfüllt werden müssen. Diese Seite enthält eine Zusammenfassung aller Tests, die als Checkliste verwendet werden können. Camera HAL-Implementierer (z. B. AP-Anbieter) sollten die Camera HAL3-Spezifikation Zeile für Zeile durchgehen und sicherstellen, dass ihre Geräte dieser entsprechen.

Die aktuelle HAL-Spezifikation ist in diesen Dateien im generischen Android Platform Development Kit (PDK) für Android 5.0 und höher definiert:

Kameratesttypen

Hier sind die wichtigsten Testarten für die neueste Android-Kamera sowie Verweise auf die folgenden Anweisungen:

Alle diese Testtypen werden nachstehend ausführlich beschrieben. Diese Tests werden in der chronologischen Reihenfolge dargestellt, in der die OEMs sie ausführen sollen.

Wenn ein Gerät beispielsweise die nativen Tests nicht besteht, werden die nachfolgenden CTS-Tests (Compatibility Test Suite) mit Sicherheit nicht bestanden. Und wenn ein Gerät CTS nicht besteht, ist es wenig sinnvoll, mit der Image Test Suite (ITS) fortzufahren. Wir empfehlen, Fehler in jedem Testtyp zu beheben, bevor Sie mit den nächsten Tests fortfahren.

Vendor Test Suite (VTS) -Tests

Die Android Vendor Test Suite (VTS) ist eine Testsuite, die auf der Ebene der HIDL-Schnittstelle funktioniert. Weitere Informationen zur Verwendung von VTS finden Sie unter Vendor Test Suite .

CTS-Tests (Compatibility Test Suite)

CTS-Tests (Cats Android Compatibility Test Suite) konzentrieren sich auf die Gerätekompatibilität. Informationen zum Einrichten einer Testumgebung finden Sie unter Einrichten von CTS .

Der Startpfad für Kamera-CTS-Tests lautet: platform/cts .

Wenn Sie Camera CTS für Geräte ausführen, die externe Kameras unterstützen (z. B. USB-Webcams), muss beim Ausführen von CTS ein Gerät angeschlossen sein. Andernfalls schlagen die Tests automatisch fehl. Beispiele für externe Kameras sind: Logitech HD Pro Webcam C920 und Microsoft LifeCam HD-3000 .

Allgemeine Anweisungen zum Ausführen von CTS finden Sie in der CTS-Einführung und auf ihren Unterseiten.

CTS-Tests für die android.hardware.Camera API

Finden Sie diese Kameratests unter cts/tests/tests/ :

  • hardware/src/android/hardware/cts/CameraTest.java
  • hardware/src/android/hardware/cts/CameraGLTest.java
  • hardware/src/android/hardware/cts/Camera_SizeTest.java
  • permission/src/android/permission/cts/CameraPermissionTest.java

CTS-Tests für die android.hardware.camera2 API

Finden Sie diese Kameratests unter cts/tests/tests/ :

  • hardware/src/android/hardware/camera2/cts/*
  • permission/src/android/permission/cts/Camera2PermissionTest.java

CTS Verifier Kameratests

Diese Kameratests finden Sie unter: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

ITS-Tests (Image Test Suite)

Die Tests der Camera Image Test Suite (ITS) konzentrieren sich auf die Bildkorrektheit. Führen Sie zum Ausführen der Tests die Python-Skripte auf einer Workstation aus, auf der das Android-Gerät über USB angeschlossen ist.

Die ITS-Infrastruktur und -Tests der Kamera befinden sich im Verzeichnis cts/apps/CameraITS . Jeder Test befindet sich in einem Unterverzeichnis tests/scene # .

Führen Sie Folgendes aus, um die Testumgebung einzurichten:
extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

Weitere Informationen zum Einrichten und Ausführen der Tests finden Sie in der CameraITS PDF-Datei unter cts/apps/CameraITS . Unter tutorial.py im Unterverzeichnis tests eine Anleitung zur Verwendung der Skripte.

Die statischen ITS-Tests (Szenen 0-5) können mit jedem Betriebssystem mit der erforderlichen Python 2.7-Umgebung ausgeführt werden. Der sensor_fusion Test mit der Sensor Fusion Box muss jedoch mit dem Linux-Betriebssystem ausgeführt werden.

Das empfohlene Setup für die Szenen 0-4 ist in Camera ITS-in-a-Box beschrieben . Das empfohlene Setup für die sensor_fusion-Szene ist in der Kurzanleitung zur Sensor Fusion Box beschrieben.

Um ITS manuell auszuführen, bereiten Sie eine einfache physische Umgebung mit einem bestimmten, wiederverwendbaren Ziel vor, z. B. einer weißen Wand, einer grauen Karte und einer Schreibtischlampe. Montieren Sie das Android-Gerät auf einem Stativ und führen Sie die Skripte aus, um die Kamerafunktionen zu testen. Die meisten Tests bestehen oder scheitern, aber einige bieten Metriken an.

Diese Skripte testen Szenarien, die nicht in CTS getestet wurden und ein wichtiger Bestandteil des HAL 3.2-Testplans sind.

ITS-Tests bestehen oder scheitern. Alle vorgeschriebenen Tests in jedem Szenenordner müssen bestanden werden. Nicht vorgeschriebene Tests können fehlschlagen und gelten in CtsVerifier weiterhin als CtsVerifier .

Tests von Szene 0 bis Szene 4

Diese Szenen stellen einen großen Teil seiner Prüfung und sind als PDF - Dateien in der mitgelieferten scene Ordner. Verwenden Sie zum Automatisieren dieser Tests das Camera ITS-in-a-Box- System.

  • Szene 0: Erfordert kein Setup.
  • Szene 1: Benötigt eine Graukarte.
  • Szene 2: Benötigt eine Gesichtsszene.
  • Szene 3: ISO12233-Diagramm.
  • Szene 4: Benutzerdefinierte Szene mit einem Kreis innerhalb eines Quadrats.

Szene 5 Tests

Bei Tests in Szene 5 muss ein Diffusor oben auf der Kamera platziert werden.

Sensorfusionstests

Sensorfusionstests erfordern eine bestimmte Kamerabewegung, um den Zeitstempeldifferenz zwischen Kamera und Gyroskop für AR- und VR-Anwendungen zu testen. Dieser Test wird übersprungen, wenn kein Gyroskop enthalten ist oder wenn der Parameter REALTIME nicht aktiviert ist. Der sensor_fusion Test kann mit der Sensor Fusion Box automatisiert werden.

Media Framework-Tests

Bestehen Sie alle kamerabezogenen Medientests in MediaFrameworkTest. Bitte beachten Sie, dass für diese Tests die Datei mediaframeworktest.apk auf dem Android-Gerät installiert sein muss. Sie müssen make mediaframeworktest und dann adb verwenden, um das resultierende .apk zu installieren. Beispielbefehle sind unten enthalten.

Der Startpfad für kamerabezogene Medien-Framework-Tests lautet: platform/frameworks/base

Den Quellcode für die Tests finden Sie hier: frameworks/base/media/tests/MediaFrameworkTest

So richten Sie diese Tests ein:

make mediaframeworktest
adb install out/target/product/ name /data/app/mediaframeworktest.apk

Wo der name Variable steht für das Verzeichnis des Verkäufers Produkt enthält.

Finden Sie alle Tests im folgenden Verzeichnis oder in den Unterverzeichnissen:

frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest

Jedes Unterverzeichnis repräsentiert eine Klasse von Tests:

  • functional/
  • integration/
  • performance/
  • power/
  • stress/
  • unit/

Ausführen von Media Framework-Tests

Um alle verfügbaren Tests zu sehen:

adb shell pm list instrumentation

Dies führt zu ähnlichen Ergebnissen:

instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
(target=com.android.mediaframeworktest)

Identifizieren und extrahieren Sie die Komponente (zwischen instrumentation: und (target=com.android.mediaframeworktest) aus jeder (target=com.android.mediaframeworktest) . Die Komponente besteht aus dem Namen des com.android.mediaframeworktest ( com.android.mediaframeworktest ) und dem Namen des Testläufers ( MediaFramework TestRunner MediaFramework TestRunner ).

Zum Beispiel:

com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
com.android.mediaframeworktest/.MediaRecorderStressTestRunner
com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner

Sie können dann jede Komponente wie adb shell am instrument an adb shell am instrument :

adb shell am instrument -w component.name

Wobei component.name dem oben extrahierten Wert entspricht. Beispielsweise:

adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Bitte beachten Sie, dass der Klassenpfad zwar das Java-Paket + Klassenname ist, das Instrumentierungspaket jedoch nicht unbedingt mit dem Java-Paket identisch ist. Stellen Sie sicher, dass Sie das Paket AndroidManifest.xml verwenden, wenn Sie den Komponentennamen verketten, nicht das Java-Paket, in dem sich die Testrunner-Klasse befindet.

Übergeben Sie die Klasse -e, um eine einzelne Testklasse auszuführen Argument, wie so:

adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Um nur eine einzelne Methode in einer testConnectPro , testConnectPro dem Klassennamen ein testConnectPro (#) und den Methodennamen (in diesem Fall testConnectPro ) wie testConnectPro :

adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Funktionstests für Medieneinstellungen

Hier ist ein Beispiellauf eines Funktionstests. Dieser Test überprüft die Grundfunktionalität verschiedener Kombinationen von Kameraeinstellungen. (dh Blitz, Belichtung, WB, Szene, Bildgröße und GeoTag)

Führen Sie den Testbefehl aus:

adb shell am instrument -w -r  -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner

Medienintegrationstests

Hier ist ein Beispiellauf eines Integrationstests, in diesem Fall mediaframeworktest / integration / CameraBinderTest.java und mediaframeworktest / CameraStressTestRunner.java:

adb  shell am instrument -e class \ 'com.android.mediaframeworktest. integration . CameraBinderTest' -w \ 'com.android.mediaframeworktest/. CameraStressTestRunner'

Wenn dies erfolgreich ist, führt dies zu einer Ausgabe, die wie folgt aussieht:

-----

com.android.mediaframeworktest.integration.CameraBinderTest:...........
Test results for CameraStressTestRunner=...........
Time: 3.328

OK (11 tests)

-----

Medienleistungstests

Dieser Vorschau-Speichertest öffnet und gibt die Kameravorschau 200 Mal frei. In jeweils 20 Iterationen wird der Snapshot von ps mediaserver aufgezeichnet und die nach 200 Iterationen unterschiedliche Speichernutzung verglichen. Test schlägt fehl Wenn der Unterschied größer als 150 km ist.

Führen Sie den Testbefehl aus:

adb shell am instrument -w -r  -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner

Eine detailliertere Ausgabe finden Sie unter: /sdcard/mediaMemOutput.txt

Medieneinheitentests

Die Befehle zum Ausführen von Komponententests sind alle ähnlich. Für CameraMetadataTest.java lautet der Befehl beispielsweise:

adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'

Medienstresstests

Dieser Test soll die Bilderfassung und Videoaufzeichnung der Kamera belasten.

Führen Sie den Testbefehl aus:

adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner

Alle Tests sollten bestehen.

Manuelle TestCam-Tests

Die TestingCam-App sollte manuell ausgeführt werden, wobei die folgenden Überprüfungen durchgeführt werden. Die Quelle für TestingCam ist hier: pdk/apps/TestingCamera/

Unendlichkeitsfokus mit Kamerakippung

Starten Sie TestingCam, aktivieren Sie die Vorschau und stellen Sie sicher, dass der Autofokusmodus auf unendlich eingestellt ist. Nehmen Sie mit der Schaltfläche Bild aufnehmen Aufnahmen von entfernten Motiven (mindestens 10 m entfernt) auf, wobei die Kamera horizontal, nach oben (nahe an der Vertikalen) und nach unten (nahe an der Vertikalen) zeigt. Ein Beispiel für den Aufwärtsschuss könnten hohe Blätter / Zweige eines Baumes von unten sein, und ein Beispiel für den Abwärtsschuss könnte die Straße sein, vom Dach eines Gebäudes aus gesehen. In allen Fällen sollte das entfernte Motiv scharf und scharf sein. Speichern und anzeigen Sie die Aufnahmen in der Galerieansicht, damit Sie die Schärfe einfacher vergrößern und überprüfen können.

Beachten Sie, dass für eine Kamera mit einem VCM-Aktuator, um diesen Test zu bestehen, entweder ein AF-Steuerungssystem mit geschlossenem Regelkreis oder eine Art SW-Korrektur erforderlich ist, die auf der Verwendung von Beschleunigungsmesserdaten zur Bestimmung der Kameraausrichtung basiert. Eine zuverlässige Werkskalibrierung der Linsen-Unendlichkeitsposition ist ebenfalls erforderlich.

Manuelle TestingCam2-Tests

Die TestingCam2-App sollte manuell ausgeführt und die folgenden Überprüfungen durchgeführt werden. Die Quelle für TestingCam2 ist hier: pdk/apps/TestingCamera2/

JPEG-Aufnahme

Starten Sie TestingCam2 und drücken Sie die JPEG- Taste. Das Bild rechts neben dem Sucherbild sollte genauso aussehen wie das Sucherbild, einschließlich der gleichen Ausrichtung.