In questa pagina sono elencati tutti i test disponibili per valutare l'HAL (Hardware Abstraction Layer) della fotocamera Android. È destinato ai produttori di apparecchiature originali (OEM) e ai fornitori di processori di applicazioni (AP) in modo che possano garantire l'implementazione corretta dell'HAL della fotocamera con difetti minimi. Sebbene si tratti di un'aggiunta volontaria alla Compatibility Test Suite (CTS) di Android, aumenta notevolmente la copertura dei test della fotocamera e identificherà sicuramente potenziali bug.
Superando questi test, gli OEM convalidano
se hanno integrato correttamente le interfacce
HAL (HAL) 3 della fotocamera Android. Se rispetti tutti gli elementi dell'elenco di controllo, l'implementazione del dispositivo può essere considerata completa rispetto alle interfacce della fotocamera Android HAL. Ciò consentirà a un dispositivo di
supportare correttamente il pacchetto
android.hardware.camera2
su cui
si basano le app per la videocamera.
Specifiche HAL3 della videocamera
La specifica Android Camera HAL3 è la fonte autorevole di informazioni sui requisiti dei dispositivi. Questa pagina fornisce un riepilogo di tutti i test che possono essere utilizzati come elenco di controllo. Gli implementatori di Camera HAL (ad es. i fornitori di AP) devono esaminare la specifica Camera HAL3 riga per riga e assicurarsi che i loro dispositivi siano conformi.
La specifica HAL corrente è definita in questi file all'interno del PDK (Platform Development Kit) generico Android 5.0 e versioni successive:
- Interfaccia e specifiche della fotocamera HAL 3.x:
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- Specifiche dei metadati HAL 3.x della fotocamera:
system/media/camera/docs/docs.html
- Interfaccia e specifiche del formato pixel HAL:
system/core/libsystem/include/system/graphics.h
Tipi di test della videocamera
Di seguito sono riportati i principali tipi di test disponibili per la videocamera Android più recente, insieme ai riferimenti alle istruzioni associate:
- Vendor Test Suite (VTS): test che verificano direttamente l'interfaccia HAL della videocamera
- Compatibility Test Suite (CTS): test Android automatici e standard per garantire la compatibilità del dispositivo. Per maggiori dettagli, consulta Compatibility Test Suite e Panoramica di Trade Federation.
- Image Test Suite (ITS): esegui manualmente test per garantire la correttezza delle immagini. Per maggiori dettagli, vedi Fotocamera ITS.
- Test manuali di TestingCam:
Esegui dall'origine in
pdk/apps/TestingCamera/
- Test manuali TestingCam2.1: eseguiti dall'origine in
pdk/apps/TestingCamera2/
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, non supererà di certo i test successivi della Compatibility Test Suite (CTS). Se un dispositivo non supera il CTS, è poco utile procedere con l'ITS (Image Test Suite). Ti consigliamo di risolvere gli errori in ogni tipo di test prima di passare all'insieme di test successivo.
Test della suite di test del fornitore (VTS)
La suite di test del fornitore Android (VTS) è una suite di test che funziona a livello di interfaccia HIDL. Per ulteriori informazioni sull'utilizzo di VTS, consulta Vendor Test Suite.
Test della suite di test di compatibilità (CTS)
I test della suite di test di compatibilità Android (Android Compatibility Test Suite) della fotocamera (CTS) si focalizzano sulla compatibilità del dispositivo. Per informazioni sulla configurazione di un ambiente di test, consulta Configurare CTS.
Il percorso iniziale per i test CTS della fotocamera è: platform/cts
.
Quando esegui il CTS della fotocamera per i dispositivi che supportano le fotocamere esterne (ad esempio le webcam USB), devi collegare un dispositivo durante l'esecuzione del CTS, altrimenti i test non andranno a buon fine automaticamente. Alcuni esempi di videocamere esterne sono: Logitech HD Pro Webcam C920 e Microsoft LifeCam HD-3000.
Consulta l'introduzione alla CTS e le relative pagine secondarie per istruzioni generali sull'esecuzione di 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 fotocamera in cts/tests/tests/
:
hardware/src/android/hardware/camera2/cts/*
permission/src/android/permission/cts/Camera2PermissionTest.java
Test della videocamera di CTS Verifier
Puoi trovare questi test della fotocamera nella sezione:
cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*
Test di Image Test Suite (ITS)
deprecata.I test della suite di test delle immagini della fotocamera (ITS) si concentrano sulla correttezza delle immagini. Per eseguire i test, esegui gli script Python su una workstation con il dispositivo Android collegato tramite USB.
L'infrastruttura e i test ITS della videocamera si trovano nella directory
cts/apps/CameraITS
.
Ogni test si trova in una sottodirectory tests/scene#
.
Per ulteriori informazioni su come configurare ed eseguire i test, consulta la pagina Fotocamera ITS.
Per le descrizioni delle scene e dei test, vedi Test ITS della fotocamera.
I test ITS possono essere superati o non superati. Tutti i test obbligatori in ogni cartella della scena devono essere superati.
I test non obbligatori possono non riuscire e comunque essere conteggiati come superati in
CtsVerifier
.
I test ITS testano scenari che non vengono testati in CTS e sono un componente importante del piano di test HAL 3.2.
Test del Media Framework
Supera tutti i test multimediali relativi alla fotocamera in MediaFrameworkTest. Tieni presente che questi test richiedono l'installazione di mediaframeworktest.apk sul dispositivo Android. Dovrai make mediaframeworktest
e poi utilizzare adb per installare il file APK risultante. Di seguito sono riportati alcuni comandi di esempio.
Il percorso iniziale per i test del framework multimediale relativi alla fotocamera è:
platform/frameworks/base
Trova il codice sorgente dei test qui:
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 la directory 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 dal nome del programma di test
(MediaFramework
).
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 segue:
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
Tieni presente che, sebbene il percorso della classe sia il nome del pacchetto Java + della classe, il pacchetto di strumenti non è necessariamente uguale al pacchetto Java. Assicurati di utilizzare il pacchetto AndroidManifest.xml quando concatena il nome del componente, non il pacchetto Java in cui risiede la classe dell'esecutore del test.
Per eseguire un singolo gruppo di test, passa l'argomento
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Per eseguire un solo metodo in un test class, aggiungi un cancelletto (#) e il nome del metodo (in questo caso testConnectPro
) al nome della classe, come segue:
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, WB, scena, dimensioni 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'
In caso di esito positivo, l'output sarà simile al seguente:
----- com.android.mediaframeworktest.integration.CameraBinderTest:........... Test results for CameraStressTestRunner=........... Time: 3.328 OK (11 tests) -----
Test sul rendimento dei contenuti multimediali
Questo test della memoria dell'anteprima aprirà e rilascierà l'anteprima della fotocamera 200 volte. In ogni 20 iterazioni, verrà registrato lo snapshot di ps mediaserver e verrà confrontato l'utilizzo della memoria diverso dopo 200 iterazioni. Il test non supererà 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
Un output più dettagliato è disponibile in:
/sdcard/mediaMemOutput.txt
Test delle unità media
I comandi per eseguire i test delle unità sono tutti simili. Ad esempio, per CameraMetadataTest.java, il comando sarà:
adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'
Stress test dei contenuti multimediali
Questo test ha lo scopo di sottoporre a stress l'acquisizione di immagini e la registrazione video della fotocamera.
Esegui il comando di test:
adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
Tutti i test dovrebbero essere superati.
Test manuali della videocamera
L'app TestingCam deve essere eseguita manualmente con i controlli indicati di seguito.
La fonte di TestingCam è disponibile qui: pdk/apps/TestingCamera/
Messa a fuoco su infinito con inclinazione della fotocamera
Avvia TestingCam, attiva l'anteprima e assicurati che la modalità di messa a fuoco automatica sia impostata su infinito. Utilizzando il pulsante Scatta foto, scatta foto di soggetti distanti (ad almeno 10 m di distanza) con la fotocamera rivolta orizzontalmente, verso l'alto (quasi in verticale) e verso il basso (quasi in verticale). Un esempio di foto verso l'alto potrebbe essere una foto di foglie/rami di un albero dall'alto, mentre un esempio di foto verso il basso potrebbe essere la strada vista dal tetto di un edificio. In ogni caso, il soggetto lontano deve essere nitido e a fuoco. Salva e visualizza gli scatti nella visualizzazione galleria per aumentare lo zoom e controllare più facilmente la nitidezza.
Tieni presente che, per superare questo test, una fotocamera con attuatore VCM avrà bisogno di un sistema di controllo AF a circuito chiuso oppure di una qualche tipo di correzione SW basata sull'uso dei dati dell'accelerometro per determinare l'orientamento della fotocamera. Sarà inoltre necessaria una calibrazione di fabbrica affidabile della posizione infinito dell'obiettivo.
Test manuali di TestingCam2
L'app TestingCam2 deve essere eseguita manualmente eseguendo i seguenti controlli. Il codice sorgente di TestingCam2 è disponibile qui: pdk/apps/TestingCamera2/
Acquisizione JPEG
Avvia TestingCam2 e premi il pulsante JPEG. L'immagine visualizzata a destra dell'immagine del mirino deve essere uguale a quella del mirino, incluso lo stesso orientamento.