Elenco di controllo per il test dell'HAL per videocamera

In questa pagina sono elencati tutti i test disponibili per valutare la fotocamera Android HAL (Hardware Astrazione Layer). È destinata all'apparecchiatura originale produttori (OEM) e applicazioni di processori (AP) per garantire la corretta implementazione della videocamera HAL con difetti minimi. Sebbene si tratti di un'aggiunta volontaria al la Compatibility Test Suite (CTS), aumenta notevolmente la copertura dei test della fotocamera e identificherà sicuramente potenziali bug.

Superando questi test, gli OEM convalidano se hanno integrato correttamente Android hardware della videocamera con tre interfacce HAL (Astrazione strato). Quando sei conforme a tutti gli articoli della elenco di controllo, l'implementazione di un dispositivo può essere considerata completa in relazione alle interfacce Android Camera HAL. Questo consente a un dispositivo di correttamente android.hardware.camera2 che le app per la fotocamera.

Specifiche della fotocamera HAL3

Le specifiche della fotocamera Android HAL3 sia la fonte autorevole informazioni sui dispositivi che devono soddisfare; questa pagina fornisce un riepilogo di tutti i test che possono essere usati come elenco di controllo. Implementatori della fotocamera HAL (ad es. AP i fornitori) devono esaminare la specifica della fotocamera HAL3 riga per riga e assicurarsi i loro dispositivi sono conformi.

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

Tipi di test della fotocamera

Di seguito sono riportati i tipi principali di test disponibili per la fotocamera Android più recente insieme ai riferimenti alle istruzioni associate riportate di seguito:

Tutti questi tipi di test sono descritti in dettaglio di seguito. Questi test presentati nell'ordine cronologico di esecuzione prevista degli OEM. che li rappresentano.

Ad esempio, se un dispositivo non supera i test nativi, non supererà i test nativi i successivi test della Compatibility Test Suite (CTS). E se un dispositivo non funziona, è poco utile procedere con il Test Suite (ITS). I nostri suggerimenti risolvere gli errori in ogni tipo di test prima di passare al set successivo test.

Test della suite di test del fornitore (VTS)

La suite di test per fornitori Android (VTS, Android Vendor Test Suite) è una suite di test che funziona Livello di interfaccia HIDL. Per ulteriori informazioni sull'utilizzo di VTS, consulta Suite di test del fornitore.

Test della Compatibility Test Suite (CTS)

I test della suite di test di compatibilità Android (Android Compatibility Test Suite) della fotocamera (CTS) eseguono i test sulla messa a fuoco sul dispositivo la compatibilità. Per informazioni sulla configurazione di un ambiente di test, consulta la sezione Configurazione di CTS.

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

Quando si esegue la CTS della fotocamera per i dispositivi che supportano le fotocamere esterne (come webcam USB), è necessario che un dispositivo sia collegato durante l'esecuzione di CTS o i test avranno automaticamente esito negativo. Esempi di fotocamere esterne includono: webcam Logitech HD Pro C920 e Microsoft LifeCam HD-3000.

Consulta il CTS introduzione e relative pagine secondarie per istruzioni generali su come eseguire CTS.

Test CTS per l'API android.hardware.Camera

Trova questi test della videocamera 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 videocamera in cts/tests/tests/:

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

Test delle videocamere CTS Verifier

Puoi trovare questi test della videocamera in: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Test di Image Test Suite (ITS)

La Camera Image Test Suite (ITS) testa la messa a fuoco sulla correttezza dell'immagine. Per eseguire i test, esegui gli script Python su una workstation con Dispositivo Android connesso tramite USB.

L'infrastruttura ITS della fotocamera e i test si trovano nella cts/apps/CameraITS. Ogni test si trova in una sottodirectory tests/scene#.

Per ulteriori informazioni su come configurare ed eseguire i test, consulta Fotocamera ITS.

Per le descrizioni delle scene e dei test, vedi Test ITS della fotocamera.

I test ITS vengono superati o non superati. Tutti i test obbligatori in ogni cartella delle scene devono essere superati. I test non obbligatori possono non riuscire e comunque essere conteggiati come un superamento CtsVerifier.

Scenari di test ITS che non sono testati in CTS e che sono un componente del piano di test dell'HAL 3.2.

Test del Media Framework

Supera tutti i test dei contenuti multimediali relativi alla fotocamera in MediaFrameworkTest. Non dimenticare di apporre Tieni presente che per questi test è necessario installare mediaframeworktest.apk su Android dispositivo. Dovrai make mediaframeworktest e poi usare ADB per installare il file .apk risultante. Di seguito sono riportati alcuni comandi di esempio.

Il percorso iniziale per i test del framework multimediale relativo alla fotocamera è il seguente: platform/frameworks/base

Qui puoi trovare il codice sorgente per i test: frameworks/base/media/tests/MediaFrameworkTest

Per configurare questi test:

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

Dove la variabile name rappresenta contenente il prodotto del fornitore.

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

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

Ogni sottodirectory rappresenta una classe di test:

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

Esecuzione dei test del Media Framework

Per visualizzare tutti i test disponibili:

adb shell pm list instrumentation

I risultati saranno simili ai seguenti:

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)

Identifica ed estrai il componente (tra instrumentation: e (target=com.android.mediaframeworktest) da ogni riga di test. Il componente è composto dal nome del pacchetto di destinazione (com.android.mediaframeworktest) e il nome dell'esecutore del test (MediaFrameworkTestRunner).

Ad esempio:

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

Puoi quindi passare ogni componente a adb shell am instrument come quindi:

adb shell am instrument -w component.name

Dove component.name è uguale al valore estratto in alto. Per esempio:

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

Nota che, mentre il percorso della classe è composto dal nome del pacchetto Java + della classe, di strumentazione non corrisponde necessariamente al pacchetto Java. Marca assicurati di utilizzare il pacchetto AndroidManifest.xml quando concateni il componente , non il pacchetto Java in cui risiede la classe dell'esecutore del test.

Per eseguire una singola classe di test, passa l'argomento classe -e , come quindi:

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 il simbolo del cancelletto (#) e il (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 dei contenuti multimediali

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

Esegui il comando di 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 contenuti multimediali

Ecco un esempio di esecuzione 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, l'output sarà simile al seguente:

-----

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

OK (11 tests)

-----

Test del rendimento dei media

Questo test di anteprima della memoria aprirà e rilascerà l'anteprima della fotocamera per 200 volte. In ogni 20 iterazioni, verrà registrata l'istantanea di ps mediaserver e confronterà l'utilizzo della memoria diverso dopo 200 iterazioni. Il test non riesce se la differenza è superiore a 150 km.

Esegui il comando di test:

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

Per un output più dettagliato, consulta la pagina: /sdcard/mediaMemOutput.txt

Test delle unità multimediali

I comandi per eseguire i test delle unità 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'

Test di stress test sui contenuti multimediali

Questo test ha lo scopo di enfatizzare l'acquisizione delle immagini e la registrazione video con la fotocamera.

Esegui il comando di test:

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

Tutti i test devono essere superati.

Test manuali della videocamera

L'app TestingCam deve essere eseguita manualmente con i controlli indicati di seguito. La fonte di TestingCam è qui: pdk/apps/TestingCamera/

Messa a fuoco infinito con inclinazione della fotocamera

Avvia TestingCam, attiva l'anteprima e assicurati che la modalità di messa a fuoco automatica sia impostata su all'infinito. Utilizzando il pulsante Scatta foto, acquisisci foto di soggetti lontani (a una distanza di almeno 10 metri) con la fotocamera puntata orizzontalmente verso l'alto (vicino alla verticale) e verso il basso (vicino alla verticale); un esempio di l'inquadratura verso l'alto potrebbe includere foglie/rami alti di un albero sotto e Un esempio di questa inquadratura verso il basso potrebbe essere la strada vista dal tetto di una edifici. In ogni caso, il soggetto lontano deve essere nitido e a fuoco. Salva e visualizzare gli scatti nella visualizzazione galleria in modo da poter aumentare lo zoom e ispezionare nitidezza più facilmente.

Tieni presente che, per superare questo test, una videocamera con attuatore VCM richiederà un sistema di controllo AF a circuito chiuso oppure necessita di una sorta di software correzione basata sull'uso dei dati dell'accelerometro per determinare l'orientamento della fotocamera. Sarà anche necessaria una calibrazione di fabbrica affidabile della posizione dell'infinito dell'obiettivo.

Test manuali di TestingCam2

L'app TestingCam2 dovrebbe essere eseguita manualmente con i seguenti controlli in esecuzione. La fonte di TestingCam2 è qui: pdk/apps/TestingCamera2/

Acquisizione JPEG

Avvia TestingCam2 e premi il pulsante JPEG. L'immagine a destra dell'immagine del mirino deve avere lo stesso aspetto mirino, incluso avere lo stesso orientamento.