Lista kontrolna testów 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 w identyfikacji potencjalnych błędów.

Przechodząc te testy, producenci OEM sprawdzają, czy poprawnie zintegrowali interfejsy HAL 3 dla aparatu w Androidzie. Jeśli wszystkie elementy na liście kontrolnej są zgodne, implementacja urządzenia może być uznana za pełną w odniesieniu do interfejsów interfejsu API 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 HAL3 aparatu Androida 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 uniwersalnym pakiecie 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 (oraz linki do instrukcji):

Wszystkie te typy testów szczegółowo opisujemy poniżej. Testy te są prezentowane w kolejności chronologicznej, w jakiej OEM powinien 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: platform/cts.

Jeśli korzystasz z modułu CTS z kamerą w przypadku urządzeń obsługujących zewnętrzne kamery (np. kamer internetowych USB), musisz podłączyć takie urządzenie do trybu CTS. W przeciwnym razie testy automatycznie zakończą się niepowodzeniem. 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 dotyczące interfejsu android.hardware.Camera API,

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 dotyczące interfejsu android.hardware.camera2 API,

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 aparatu fotograficznego 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 kończą się wynikiem pozytywnym lub negatywnym. Wszystkie wymagane testy w każdym folderze scen muszą zostać zaliczone. Testy, które nie są wymagane, mogą zakończyć się niepowodzeniem i zostać uznane za zaliczone w CtsVerifier.

ITS testuje scenariusze testowe, które nie są testowane w narzędziu CTS i są ważnym elementem planu testów HAL 3.2.

Testy platformy Media Framework

Zalicz wszystkie testy multimediów związane z aparatem 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 dostawcy.

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 platformy 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).

Przykłady:

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

Następnie możesz przekazać każdy komponent do adb shell am instrument w ten sposób:

adb shell am instrument -w component.name

Gdzie component.name jest równa wyodrębnionej wartości 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ć jedną klasę testów, przekaż argument -e class w następujący sposób:

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ładowe uruchomienie testu funkcjonalnego. Ten test sprawdza podstawową funkcjonalność różnych kombinacji ustawień aparatu. (np. Flash, ekspozycja, WB, scena, rozmiar obrazu 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 medió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, zwróci dane podobne do tych:

-----

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

OK (11 tests)

-----

Testy skuteczności mediów

Ten test pamięci podglądu spowoduje 200 razy otwarcie i zwolnienie podglądu aparatu. Po 20 iteracjach zostanie zarejestrowany ps mediaserver, a po 200 iteracjach zostanie porównany sposób wykorzystania pamięci. 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 wyjściowe znajdziesz w: /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 być 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 od aparatu) 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 poziomej perspektywy, a przykładem zdjęcia w dół – zdjęcie ulicy z dachu budynku. W każdym przypadku obiekt w dalszym planie powinien być ostry i ostre. Ujęcia możesz zapisywać i wyświetlać w widoku galerii, aby łatwiej je powiększać i sprawdzać 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ślania orientacji aparatu. Potrzebna jest też niezawodna kalibracja fabryczna pozycji nieskończoności obiektywu.

Testy ręczne TestingCam2

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ę.