Lista kontrolna testów interfejsu HAL aparatu

Na tej stronie znajdziesz listę wszystkich testów do oceny warstwy abstrakcji sprzętowej (HAL) aparatu w Androidzie. Jest on przeznaczony dla producentów oryginalnego sprzętu (OEM) i producentów procesorów aplikacji (AP), aby mogli oni zapewnić prawidłowe wdrożenie interfejsu HAL aparatu z minimalną liczbą błędów. Chociaż jest to dobrowolne uzupełnienie pakietu Compatibility Test Suite (CTS) na Androida, znacznie zwiększa zakres testów kamery i zdecydowanie pomoże wykryć potencjalne błędy.

Przechodząc te testy, producenci OEM sprawdzają, czy poprawnie zintegrowali interfejsy HAL 3 aparatu fotograficznego. Jeśli urządzenie spełnia wszystkie wymagania z listy kontrolnej, jego implementacja może być uznana za pełną w odniesieniu do interfejsów HAL aparatu w Androidzie. Umożliwi to urządzeniu prawidłowe korzystanie z pakietu android.hardware.camera2, na którym opierają się aplikacje aparatu.

Specyfikacja Camera HAL3

Specyfikacja Android Camera HAL3 jest wiarygodnym źródłem informacji o wymaganiach dotyczących urządzeń. Ta strona zawiera podsumowanie wszystkich testów, które można wykorzystać jako listę kontrolną. Implementatorzy interfejsu Camera HAL (np. dostawcy AP) powinni sprawdzić każdą linię specyfikacji Camera HAL3 i upewnić się, że ich urządzenia są z nią zgodne.

Aktualna specyfikacja HAL jest zdefiniowana w tych plikach w ramach ogólnego pakietu Android Platform Development Kit (PDK) w wersji 5.0 i nowszych:

Typy testów kamery

Oto główne typy testów dostępnych w najnowszej wersji aplikacji Aparat na Androidzie wraz z odwołaniami do instrukcji:

Wszystkie te typy testów zostały szczegółowo opisane poniżej. Testy te są prezentowane w kolejności chronologicznej, w jakiej OEM-y mają je przeprowadzać.

Jeśli na przykład urządzenie nie przejdzie testów natywnych, z pewnością nie przejdzie kolejnych testów Compatibility Test Suite (CTS). Jeśli urządzenie nie przejdzie testu CTS, nie ma sensu przechodzenie do testu ITS. Zalecamy usunięcie błędów w przypadku każdego typu testu przed przejściem do następnego zestawu testów.

testy Vendor Test Suite (VTS);

Pakiet testów dostawców Androida (VTS) to zestaw testów, który działa na poziomie interfejsu HIDL. Więcej informacji o używaniu VTS znajdziesz w artykule Vendor Test Suite.

testy Compatibility Test Suite (CTS),

Testy Compatibility Test Suite (CTS) na potrzeby kamery koncentrują się na zgodności urządzenia. Informacje o konfigurowaniu środowiska testowego znajdziesz w artykule Konfigurowanie CTS.

Ścieżka początkowa testów CTS aparatu to: platform/cts.

Podczas uruchamiania testu CTS aparatu na urządzeniach obsługujących kamery zewnętrzne (takie jak kamery internetowe USB) należy podłączyć urządzenie, w przeciwnym razie testy automatycznie się nie ukończą. Przykłady zewnętrznych kamer: Logitech HD Pro Webcam C920 i Microsoft LifeCam HD-3000.

Ogólne instrukcje dotyczące uruchamiania CTS znajdziesz w CTS: wprowadzeniu i na jego podstronach.

testy CTS interfejsu API android.hardware.Camera,

Te testy aparatu znajdziesz w sekcji 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

testy CTS interfejsu API android.hardware.camera2,

Te testy aparatu znajdziesz w sekcji cts/tests/tests/:

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

Testy kamery w weryfikatorze CTS

Te testy aparatu znajdziesz w tych miejscach:cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

testy Image Test Suite (ITS),

Testy z użyciem pakietu testów obrazu z aparatu (ITS) sprawdzają poprawność obrazu. Aby przeprowadzić testy, uruchom skrypty Pythona na stacji roboczej z połączonym przez USB urządzeniem z Androidem.

Infrastruktura i testy ITS kamery znajdują się w katalogu cts/apps/CameraITS. Każdy test znajduje się w podkatalogu tests/scene#.

Więcej informacji o konfigurowaniu i przeprowadzaniu testów znajdziesz w artykule ITS aparatu.

Opisy scen i testów znajdziesz w artykule Testy ITS kamery.

Testy ITS są zaliczane lub niezaliczone. Wszystkie obowiązkowe testy w każdym folderze sceny muszą zakończyć się pomyślnie. Testy, które nie są wymagane, mogą zakończyć się niepowodzeniem, ale i tak zostaną zaliczone w CtsVerifier.

Testy ITS sprawdzają scenariusze, które nie są testowane w CTS, i stanowią ważny element planu testów HAL 3.2.

Testy Media Framework

Przejść wszystkie testy multimediów związane z kamerą w MediaFrameworkTest. Pamiętaj, że te testy wymagają zainstalowania pliku mediaframeworktest.apk na urządzeniu z Androidem. Musisz użyć make mediaframeworktest, a potem użyć adb do zainstalowania pliku .apk. Poniżej znajdziesz przykładowe polecenia.

Ścieżka początkowa testów frameworku multimediów związanych z aparatami:platform/frameworks/base

Kod źródłowy testów znajdziesz tutaj:frameworks/base/media/tests/MediaFrameworkTest

Aby skonfigurować te testy:

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

Gdzie zmienna name reprezentuje katalog zawierający produkt sprzedawcy.

Wszystkie testy znajdziesz w tym katalogu lub jego podkatalogach:

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

Każdy podkatalog reprezentuje klasę testów:

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

Przeprowadzanie testów Media Framework

Aby wyświetlić wszystkie dostępne testy:

adb shell pm list instrumentation

Da to wyniki podobne do tych:

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)

Zidentyfikuj i wyodrębnij komponent (między instrumentation:(target=com.android.mediaframeworktest) ) z każdej linii testowej. Składa się on z nazwy docelowego pakietu (com.android.mediaframeworktest) i nazwy testu (MediaFrameworkTestRunner).

Na przykład:

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

Następnie możesz przekazywać poszczególne komponenty do funkcji adb shell am instrument w taki sposób:

adb shell am instrument -w component.name

Gdzie component.name jest równe wyodrębnionej wartości podanej powyżej. Przykład:

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

Pamiętaj, że ścieżka klasy to pakiet Java plus nazwa klasy, ale pakiet instrumentacji nie musi być taki sam jak pakiet Java. Pamiętaj, aby podczas łączenia nazwy komponentu używać pliku AndroidManifest.xml, a nie pakietu Java, w którym znajduje się klasa mechanizmu uruchamiania testów.

Aby uruchomić pojedynczą klasę testów, prześlij argument -e class , na przykład:

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

Aby uruchomić tylko jedną metodę w klasie testowej, dodaj do nazwy klasy znak krzyżyka (#) i nazwę metody (w tym przypadku testConnectPro), na przykład:

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

Testy funkcjonalne ustawień multimediów

Oto przykład wykonania testu funkcjonalnego. Ten test sprawdza podstawową funkcjonalność różnych kombinacji ustawień aparatu. (np. błysk, ekspozycja, WB, scena, rozmiar zdjęcia i tag geograficzny);

Uruchom polecenie testowe:

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

Testy integracji multimediów

Oto przykład uruchomienia testu integracji, w tym przypadku mediaframeworktest/integration/CameraBinderTest.java i mediaframeworktest/CameraStressTestRunner.java:

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

Jeśli operacja się powiedzie, wyświetli się komunikat podobny do tego:

-----

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

OK (11 tests)

-----

Testy skuteczności multimediów

Ten test pamięci podglądu spowoduje 200 razy otwarcie i zwolnienie podglądu aparatu. Po 20 iteracjach zostanie zarejestrowany ps mediaserver i porównany z użyciem pamięci po 200 iteracjach. Test zakończy się niepowodzeniem, jeśli różnica będzie większa niż 150 tys. zł.

Uruchom polecenie testowe:

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

Bardziej szczegółowe dane znajdziesz w tym pliku:/sdcard/mediaMemOutput.txt

Testy jednostek mediów

Polecenia do uruchamiania testów jednostkowych są podobne. Na przykład w przypadku pliku CameraMetadataTest.java będzie to:

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

Testy obciążeniowe multimediów

Ten test ma na celu sprawdzenie działania aparatu i nagrywarki wideo.

Uruchom polecenie testowe:

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

Wszystkie testy powinny zostać zaliczone.

Testy ręczne TestingCam

Aplikację TestingCam należy uruchomić ręcznie, wykonując te czynności. Kod źródłowy TestingCam: pdk/apps/TestingCamera/

ostrość nieskończoności z pochyleniem aparatu

Uruchom aplikację TestingCam, włącz podgląd i upewnij się, że tryb autofokusa jest ustawiony na „nieskończoność”. Za pomocą przycisku Zrób zdjęcie rób zdjęcia odległych obiektów (co najmniej 10 m) z kamerą skierowaną poziomo, w górę (blisko pionu) i w dół (blisko pionu). Przykładem zdjęcia w górę może być zdjęcie liści lub gałęzi drzewa z poziomu, a przykładem zdjęcia w dół może być zdjęcie ulicy zrobione z dachu budynku. W każdym przypadku obiekt w dalszym planie powinien być ostry i ostre. Zapisz i wyświetl ujęcia w widoku galerii, aby łatwiej powiększyć i sprawdzić ostrość.

Pamiętaj, że aby aparat z silnikiem krokowym VCM mógł przejść ten test, musi mieć system sterowania AF z zamkniętą pętlą lub jakiś rodzaj korekty oprogramowania, który wykorzystuje dane z akcelerometru do określenia orientacji aparatu. Potrzebna jest też niezawodna kalibracja fabryczna pozycji nieskończoności obiektywu.

Testy ręczne Cam2

Aplikację TestingCam2 należy uruchomić ręcznie, wykonując te czynności. Źródło TestingCam2: pdk/apps/TestingCamera2/

Przechwytywanie w formacie JPEG

Uruchom aplikację TestingCam2 i kliknij przycisk JPEG. Obraz wyświetlany po prawej stronie wizjera powinien być taki sam jak obraz w wizjerze, w tym mieć taką samą orientację.