Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Elenco di controllo per test HAL della videocamera

Questo documento elenca tutti i test disponibili per la valutazione del livello di astrazione hardware (HAL) della fotocamera Android. È destinato ai produttori di apparecchiature originali (OEM) e ai fornitori di processori di applicazioni (AP), pertanto possono garantire la corretta implementazione dell'HAL della fotocamera con difetti minimi. Sebbene si tratti di un'aggiunta volontaria ad Android Compatibility Test Suite (CTS), aumenta notevolmente la copertura dei test della fotocamera e identificherà sicuramente i potenziali bug.

Superando questi test, gli OEM confermano se hanno integrato correttamente le interfacce HAL (3) di hardware hardware camera. In conformità con tutti gli elementi dell'elenco di controllo, un'implementazione del dispositivo può essere considerata completa rispetto alle interfacce HAL della fotocamera Android. Ciò a sua volta consentirà a un dispositivo di supportare correttamente il pacchetto android.hardware.camera2 cui si basano le app della fotocamera.

Specifiche della videocamera HAL3

La specifica HAL3 di Android Camera è la fonte autorevole di informazioni su quali dispositivi devono soddisfare; questa pagina fornisce un riepilogo di tutti i test che possono essere utilizzati come lista di controllo. Gli implementatori di Camera HAL (ad esempio i fornitori di AP) dovrebbero esaminare le specifiche Camera HAL3 riga per riga e assicurarsi che i loro dispositivi siano conformi ad essa.

L'attuale specifica HAL è definita in questi file all'interno di Android 5.0 e versioni successive di Android Platform Development Kit (PDK) generico:

Tipi di test della fotocamera

Ecco i principali tipi di test disponibili per l'ultima fotocamera Android insieme ai riferimenti alle istruzioni associate di seguito:

Tutti questi tipi di test sono descritti in dettaglio di seguito. Questi test sono presentati nell'ordine cronologico in cui gli OEM dovrebbero eseguirli.

Ad esempio, se un dispositivo non supera i test nativi, fallirà sicuramente i successivi test Suite di test di compatibilità (CTS). E se un dispositivo fallisce CTS, è poco utile procedere con Image Test Suite (ITS). Si consiglia di risolvere gli errori in ciascun tipo di test prima di passare alla serie di test successiva.

Test della Vendor Test Suite (VTS)

Android Vendor Test Suite (VTS) è una suite di test che funziona a livello di interfaccia HIDL. Per ulteriori informazioni sull'uso di VTS, consultare Vendor Test Suite .

Test di compatibilità Suite (CTS)

I test Camera Android Compatibility Test Suite (CTS) si concentrano sulla compatibilità dei dispositivi. Per informazioni sull'impostazione di un ambiente di test, vedere Impostazione di CTS .

Il percorso iniziale per i test Camera CTS è: platform/cts .

Quando si esegue Camera CTS per dispositivi che supportano telecamere esterne (come webcam USB), è necessario disporre di un dispositivo collegato quando si esegue CTS o i test falliranno automaticamente. Esempi di telecamere esterne includono: Logitech HD Pro Webcam C920 e Microsoft LifeCam HD-3000 .

Vedere l' introduzione di CTS e le sue pagine secondarie per istruzioni generali sull'esecuzione di CTS.

Test CTS per l'API android.hardware.Camera

Trova questi test della fotocamera in 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

Test CTS per l'API android.hardware.camera2

Trova questi test della fotocamera in cts/tests/tests/ :

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

Test della telecamera CTS Verifier

Trova questi test della fotocamera in: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Test di Image Test Suite (ITS)

I test Camera Image Test Suite (ITS) si concentrano sulla correttezza dell'immagine. Per eseguire i test, eseguire gli script Python su una workstation con il dispositivo Android collegato tramite USB.

L'infrastruttura e i test di Camera ITS si trovano nella directory cts/apps/CameraITS . Ogni test risiede in una sottodirectory tests/scene # .

Per configurare l'ambiente di test, eseguire:
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

Per ulteriori informazioni su come impostare ed eseguire i test, consultare il file PDF CameraITS in cts/apps/CameraITS . Vedi tutorial.py nella sottodirectory tests per una guida su come usare gli script.

I test statici ITS (scene 0-5) possono essere eseguiti con qualsiasi sistema operativo con l'ambiente Python 2.7 richiesto. Tuttavia, il test sensor_fusion con Sensor Fusion Box deve essere eseguito con il sistema operativo Linux.

L'impostazione consigliata per le scene 0-4 è descritta in ITS-in-a-box . L'impostazione consigliata per la scena sensor_fusion è descritta nella Guida rapida di Sensor Fusion Box .

Per eseguire ITS manualmente, preparare un ambiente fisico semplice con un target specifico e riutilizzabile come un muro bianco, una scheda grigia e una lampada da scrivania. Montare il dispositivo Android su un treppiede ed eseguire gli script per testare le funzioni della fotocamera. La maggior parte dei test ha esito positivo o negativo, ma alcuni offrono metriche.

Questi script testano scenari che non sono stati testati in CTS e sono un componente importante del piano di test HAL 3.2.

I test ITS hanno esito positivo o negativo. Tutti i test obbligatori in ciascuna cartella di scena devono superare. I test che non sono obbligatori possono fallire e continuano a essere considerati passaggi in CtsVerifier .

Test da scena 0 a scena 4

Queste scene rappresentano gran parte dei test ITS e sono incluse come file PDF nella cartella delle scene . Per automatizzare questi test, utilizzare il sistema ITS-in-a-box della fotocamera .

  • Scena 0: non richiede installazione.
  • Scena 1: richiede una carta grigia.
  • Scena 2: richiede una scena del viso.
  • Scena 3: grafico ISO12233.
  • Scena 4: scena personalizzata con un cerchio all'interno di un quadrato.

Test della scena 5

I test della scena 5 richiedono che un diffusore sia posizionato sulla parte superiore della videocamera.

Test di fusione del sensore

I test di fusione dei sensori richiedono movimenti specifici della videocamera per verificare la differenza di data / ora tra la videocamera e il giroscopio per applicazioni AR e VR. Questo test viene ignorato se non è incluso alcun giroscopio o se il parametro REALTIME non è abilitato. Il test sensor_fusion può essere automatizzato con Sensor Fusion Box .

Test del Media Framework

Supera tutti i test multimediali relativi alla videocamera in MediaFrameworkTest. Nota: questi test richiedono l'installazione di mediaframeworktest.apk sul dispositivo Android. Dovrai make mediaframeworktest e quindi utilizzare adb per installare il .apk risultante. I comandi di esempio sono inclusi di seguito.

Il percorso iniziale per i test del framework dei media relativi alla telecamera è: platform/frameworks/base

Trova il codice sorgente per i test qui: frameworks/base/media/tests/MediaFrameworkTest

Per impostare questi test:

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

Dove la variabile name rappresenta la directory contenente il prodotto del fornitore.

Trova tutti i test nella seguente directory o nelle sue sottodirectory:

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

Ogni sottodirectory rappresenta una classe di test:

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

Esecuzione di test di Media Framework

Per vedere tutti i test disponibili:

adb shell pm list instrumentation

Ciò produrrà risultati simili a:

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)

Identificare ed estrarre il componente (tra la instrumentation: e (target=com.android.mediaframeworktest) da ciascuna linea di test. Il componente è composto dal nome del pacchetto di destinazione ( com.android.mediaframeworktest ) e dal nome del test runner ( MediaFramework TestRunner MediaFramework TestRunner ).

Per esempio:

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

È quindi possibile passare ciascun componente allo adb shell am instrument modo:

adb shell am instrument -w component.name

Dove component.name uguale al valore estratto sopra. Per esempio:

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

Nota, mentre il percorso della classe è il pacchetto Java + nome della classe, il pacchetto di strumentazione non è necessariamente uguale al pacchetto Java. Assicurarsi di utilizzare il pacchetto AndroidManifest.xml durante la concatenazione del nome del componente, non del pacchetto Java in cui risiede la classe del corridore di prova.

Per eseguire una singola classe di test, passare la classe -e argomento, in questo modo:

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

Per eseguire un solo metodo in una classe di test, aggiungi un segno di cancelletto (#) e il nome del metodo (in questo caso testConnectPro ) al nome della classe, in questo modo:

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

Test funzionali delle impostazioni multimediali

Ecco un esempio di esecuzione di un test funzionale. Questo test verifica la funzionalità di base di diverse combinazioni di impostazioni della fotocamera. (ad es. Flash, esposizione, bilanciamento del bianco, scena, dimensione dell'immagine e geoTag)

Esegui il comando test:

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

Test di integrazione dei media

Ecco un esempio di un test di integrazione, in questo caso mediaframeworktest / integration / CameraBinderTest.java e mediaframeworktest / CameraStressTestRunner.java:

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

Se l'operazione ha esito positivo, il risultato è simile a:

-----

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

OK (11 tests)

-----

Test delle prestazioni dei media

Questo test della memoria di anteprima si aprirà e rilascerà l'anteprima della fotocamera per 200 volte. In ogni 20 iterazioni, l'istantanea di ps mediaserver verrà registrata e confronterà l'utilizzo della memoria diverso dopo 200 iterazioni. Il test fallirà Se la differenza è maggiore di 150 kM.

Esegui il comando test:

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

È possibile trovare output più dettagliati in: /sdcard/mediaMemOutput.txt

Test delle unità multimediali

I comandi per eseguire unit test sono tutti simili. Ad esempio, per CameraMetadataTest.java, il comando sarebbe:

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

Stress test sui media

Questo test serve a sottolineare l'acquisizione di immagini della videocamera e la registrazione di video.

Esegui il comando test:

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

Tutti i test dovrebbero passare.

Test manualiCam test

L'app TestingCam deve essere eseguita manualmente con i seguenti controlli eseguiti. La fonte per TestingCam è qui: pdk/apps/TestingCamera/

Messa a fuoco infinita con inclinazione della fotocamera

Inizia TestingCam, attiva l'anteprima e assicurati che la modalità autofocus sia impostata su infinito. Usando il pulsante Scatta foto , scatta foto di soggetti distanti (almeno 10 m di distanza) con la fotocamera puntata in orizzontale, verso l'alto (vicino alla verticale) e verso il basso (vicino alla verticale); un esempio di tiro verso l'alto potrebbe essere foglie / rami alti di un albero da sotto e un esempio di tiro verso il basso potrebbe essere la strada vista dal tetto di un edificio. In tutti i casi, il soggetto distante deve essere nitido e a fuoco. Salvare e visualizzare gli scatti nella vista galleria in modo da poter ingrandire e ispezionare la nitidezza più facilmente.

Si noti che affinché una fotocamera con un attuatore VCM superi questo test, richiederà un sistema di controllo AF a circuito chiuso o avrà bisogno di una sorta di correzione SW basata sull'utilizzo dei dati dell'accelerometro per determinare l'orientamento della fotocamera. Sarà inoltre necessaria una calibrazione di fabbrica affidabile della posizione di infinito dell'obiettivo.

Test manualiCam2 test

L'app TestingCam2 deve essere eseguita manualmente, con i seguenti controlli eseguiti. La fonte per TestingCam2 è qui: pdk/apps/TestingCamera2/

Acquisizione JPEG

Inizia TestingCam2 e premi il pulsante JPEG . L'immagine che appare a destra dell'immagine del mirino dovrebbe apparire uguale al mirino, anche con lo stesso orientamento.