Kamera-HAL-Testprüfliste

Auf dieser Seite sind alle Tests aufgeführt, die zur Überprüfung der Android-Kamera zur Verfügung stehen. Hardware-Abstraktionsschicht (HAL) Es ist für Erstausrüstung vorgesehen Hersteller (OEMs) und Anwendungen Anbieter von Prozessoren, damit sie die ordnungsgemäße Implementierung der Kamera HAL mit minimalen Fehlern. Obwohl dies eine freiwillige Ergänzung Kompatibilitätstest-Suite (Compatibility Test Suite, CTS) können Sie die Testabdeckung der Kameras erheblich erhöhen potenzielle Fehler identifizieren.

Durch das Bestehen dieser Tests validieren OEMs ob sie die Android-Plattform Kamerahardware HAL (Abstraktionsschicht) 3. Wenn Sie alle Punkte im kann eine Geräteimplementierung in Bezug auf die Verwendung als vollständig mit den HAL-Schnittstellen von Android Camera. Dadurch kann ein Gerät die die <ph type="x-smartling-placeholder"></ph> android.hardware.camera2-Paket, das Kamera-Apps bauen auf.

Kamera-HAL3-Spezifikation

Die Spezifikation Android Camera HAL3 ist die maßgebliche Quelle für Informationen dazu, welche Geräte die Anforderungen erfüllen müssen finden Sie auf dieser Seite aller Tests, die als Checkliste verwendet werden können. Kamera-HAL-Implementierer (z.B. AP Anbietern) sollte die Kamera HAL3-Spezifikation Zeile für Zeile durchgehen und sicherstellen, ob ihre Geräte diesen entsprechen.

Die aktuelle HAL-Spezifikation wird in diesen Dateien im Android- 5.0 und höher, generisches Android Platform Development Kit (PDK):

Kameratesttypen

Hier sind die wichtigsten Testtypen für die neueste Android-Kamera zusammen mit Verweisen auf die entsprechenden Anleitungen unten:

Alle diese Testtypen werden unten detailliert beschrieben. Diese Tests sind in chronologischer Reihenfolge dargestellt, in der die OEMs .

Wenn ein Gerät beispielsweise die nativen Tests nicht besteht, schlägt es die Ausführung der nachfolgende CTS-Tests (Compatibility Test Suite, Kompatibilitätstest-Suite). Und wenn ein Gerät mit CTS nicht funktioniert, es wenig Nutzen für die Nutzung der Image Test Suite (ITS) gibt. Wir empfehlen, die Fehler in jedem Testtyp beheben, bevor Sie Tests durchführen.

Tests der Anbieter-Test-Suite (VTS)

Die Android Vendor Test Suite (VTS) ist eine Testsuite, die auf dem HIDL-Benutzeroberflächenebene Weitere Informationen zur Verwendung von VTS finden Sie unter Anbieter-Test-Suite

CTS-Tests (Compatibility Test Suite)

Kameratests der Android Compatibility Test Suite (CTS) konzentrieren sich auf das Gerät Kompatibilität. Informationen zum Einrichten einer Testumgebung finden Sie unter CTS einrichten.

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

Wenn Sie CTS für Kameras auf Geräten ausführen, die externe Kameras unterstützen (z. B. USB-Webcams), muss zum Ausführen der CTS oder der Tests ein Gerät angeschlossen sein. schlägt automatisch fehl. Beispiele für externe Kameras: Logitech HD Pro Webcam C920 und Microsoft LifeCam HD-3000.

Siehe CTS und den zugehörigen Unterseiten finden Sie eine allgemeine Anleitung zum Ausführen von CTS.

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

Diese Kameratests findest du 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

Diese Kameratests findest du 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 Camera Image Test Suite (ITS) testet die Bildgenauigkeit. Führen Sie zum Durchführen der Tests die Python-Skripts auf einer Workstation mit der Android-Gerät über USB verbunden

Die ITS-Infrastruktur und die Tests der Kamera befinden sich in der <ph type="x-smartling-placeholder"></ph> cts/apps/CameraITS-Verzeichnis. Jeder Test befindet sich in einem tests/scene#-Unterverzeichnis.

Weitere Informationen zum Einrichten und Ausführen der Tests finden Sie unter Kamera ITS.

Beschreibungen von Szenen und Tests finden Sie unter ITS-Tests für Kameras.

Die ITS-Tests haben entweder bestanden oder schlagen fehl. Alle vorgeschriebenen Tests in den einzelnen Szenenordnern müssen bestanden werden. Nicht vorgeschriebene Tests können fehlschlagen und dennoch als bestanden gelten CtsVerifier

ITS testet Testszenarien, die nicht in CTS getestet werden und ein wichtiges Komponente des HAL 3.2-Testplans.

Media Framework-Tests

Alle kamerabezogenen Medientests in MediaFrameworkTest bestehen. Bitte Beachten Sie, dass für diese Tests die Datei mediaframeworktest.apk auf dem Android-Gerät . Sie müssen make mediaframeworktest und dann ADB verwenden um die resultierende APK-Datei zu installieren. Beispielbefehle sind unten aufgeführt.

Der Ausgangspunkt für Tests des kamerabezogenen Medien-Frameworks 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

Dabei steht die Variable name für den Verzeichnis mit dem Produkt des Anbieters.

Suchen Sie alle Tests im folgenden Verzeichnis oder seinen Unterverzeichnissen:

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

Jedes Unterverzeichnis stellt eine Klasse von Tests dar:

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

Media Framework-Tests ausführen

So rufen Sie alle verfügbaren Tests auf:

adb shell pm list instrumentation

Die Ergebnisse sehen in etwa so aus:

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)

Komponente identifizieren und extrahieren (zwischen instrumentation: und (target=com.android.mediaframeworktest) aus jeder Testzeile. Die Komponente besteht aus dem Namen des Zielpakets. (com.android.mediaframeworktest) und der Name des Test-Runners (MediaFrameworkTestRunner)

Beispiel:

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

Sie können dann jede Komponente an adb shell am instrument übergeben, Also:

adb shell am instrument -w component.name

Dabei entspricht component.name dem extrahierten Wert. oben. Für Beispiel:

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

Beachten Sie, dass der Klassenpfad zwar das Java-Paket und der Klassenname ist, der Instrumentierungspakets nicht unbedingt mit dem Java-Paket identisch ist. Marke Achten Sie darauf, beim Verketten der Komponente das Paket AndroidManifest.xml zu verwenden. und nicht auf das Java-Paket, in dem sich die Test-Runner-Klasse befindet.

Um eine einzelne Klasse von Tests auszuführen, übergeben Sie das Argument der -e-Klasse wie folgt: Also:

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

Um nur eine Methode in einer Testklasse auszuführen, hängen Sie ein Rautezeichen (#) und den Methodenname (in diesem Fall testConnectPro) zum Klassennamen hinzu. Beispiel:

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

Funktionstests für Medieneinstellungen

Hier ist ein Beispiel für einen Funktionstest. Mit diesem Test wird überprüft, der verschiedenen Kombinationen von Kameraeinstellungen. (d. h. Flash, 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

Mediaintegrationstests

Hier ist ein Beispiel für einen Integrationstest, 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 der Vorgang erfolgreich ist, sieht die Ausgabe in etwa so aus:

-----

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

OK (11 tests)

-----

Tests zur Medienleistung

Diese Vorschau des Arbeitsspeichertests wird geöffnet und die Kameravorschau wird für 200 Sekunden Mal. In jedem 20. Durchlauf wird der Snapshot von ps mediaserver aufgezeichnet. und die Arbeitsspeichernutzung nach 200 Iterationen verglichen. Test wird Fehlgeschlagen, wenn die Differenz 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 hier: /sdcard/mediaMemOutput.txt

Media Unit-Tests

Die Befehle zum Ausführen von Einheitentests sind alle ähnlich. Beispiel: CameraMetadataTest.java lautet der Befehl:

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

Medien-Stresstests

Dieser Test dient dazu, die Bild- und Videoaufzeichnung der Kamera zu 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 bestanden werden.

Manuelle TestingCam-Tests

Die TestingCam-App sollte manuell mit den folgenden Prüfungen ausgeführt werden. Die Quelle für TestingCam findest du hier: pdk/apps/TestingCamera/

Unendlichkeitsfokus mit Kameraneigung

Starten Sie TestingCam, aktivieren Sie die Vorschau und stellen Sie sicher, dass der Autofokusmodus auf unendlich. Mit der Schaltfläche Bild aufnehmen können Sie auf mindestens 10 m entfernte Motive, wobei die Kamera horizontal ausgerichtet ist nach oben (nahe senkrecht) und nach unten (nahe senkrecht) ein Beispiel für Bei der Aufnahme nach oben könnten die Blätter/Zweige eines Baumes von unten hoch und ein Ein Beispiel für eine niedrigere Aufnahme ist die Straße vom Dach eines Das entfernte Objekt sollte in jedem Fall scharf und scharf sein. Speichern und sich die Aufnahmen in der Galerieansicht ansehen, sodass Sie heranzoomen und die Schärfe verbessern.

Damit eine Kamera mit einem VCM-Aktuator diesen Test besteht, ist entweder ein Closed-Loop-AF-Steuersystem oder eine Art SW benötigt. anhand der Daten des Beschleunigungsmessers zur Bestimmung der Kameraausrichtung. Außerdem ist eine zuverlässige Werkskalibrierung der Endlosposition des Objektivs erforderlich.

Manuelle TestingCam2-Tests

Die TestingCam2-App sollte unter folgenden Voraussetzungen manuell ausgeführt werden: durchgeführt wurde. Die Quelle für TestingCam2 ist hier: pdk/apps/TestingCamera2/

JPEG-Aufnahme

Starten Sie TestingCam2 und klicken Sie auf die Schaltfläche JPEG. Das Bild rechts neben dem Bild im Sucher genau so aussehen wie die Sucher, auch mit derselben Ausrichtung.