Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Lista de comprobación de la prueba HAL de la cámara

Este documento enumera todas las pruebas disponibles para evaluar la capa de abstracción del hardware de la cámara de Android (HAL). Está destinado a fabricantes de equipos originales (OEM) y proveedores de procesadores de aplicaciones (AP) para que puedan garantizar la implementación adecuada de la cámara HAL con defectos mínimos. Aunque se trata de una adición voluntaria al conjunto de pruebas de compatibilidad de Android (CTS), aumenta enormemente la cobertura de prueba de la cámara y sin duda identificará posibles errores.

Al aprobar estas pruebas, los OEM validan si han integrado correctamente las interfaces de la capa de abstracción del hardware de la cámara (HAL) 3 de Android. Cuando conforme con todos los elementos de la lista de verificación, una implementación dispositivo podrá considerarse completa con respecto a las interfaces de Android Cámara de HAL. Esto a su vez permite un dispositivo para soportar adecuadamente el android.hardware.camera2 paquete que la cámara aplicaciones aprovechar.

Especificación de la cámara HAL3

El androide cámara HAL3 especificación es la fuente autorizada de información sobre qué dispositivos deben satisfacer; esta página proporciona un resumen de todas las pruebas que se pueden utilizar como lista de verificación. Los implementadores de la cámara HAL (por ejemplo, los proveedores de AP) deben revisar la especificación de la cámara HAL3 línea por línea y asegurarse de que sus dispositivos se ajusten a ella.

La especificación HAL actual se define en estos archivos dentro del kit de desarrollo de plataforma (PDK) genérico de Android 5.0 y versiones posteriores:

Tipos de prueba de cámara

Estos son los tipos principales de pruebas disponibles para la última cámara de Android junto con referencias a las instrucciones asociadas a continuación:

Todos estos tipos de pruebas se describen en detalle a continuación. Estas pruebas se presentan en el orden cronológico en el que se espera que las ejecuten los OEM.

Por ejemplo, si un dispositivo falla las pruebas nativas, seguramente fallará las pruebas posteriores de Compatibility Test Suite (CTS). Y si un dispositivo falla en CTS, es de poca utilidad pasar al Image Test Suite (ITS). Recomendamos abordar las fallas en cada tipo de prueba antes de pasar al siguiente conjunto de pruebas.

Pruebas de Vendor Test Suite (VTS)

Android Vendor Test Suite (VTS) es un paquete de pruebas que funciona en el nivel de interfaz HIDL. Para obtener más información sobre el uso del STM, véase el vendedor del conjunto de pruebas .

Pruebas de Compatibility Test Suite (CTS)

Las pruebas de Camera Android Compatibility Test Suite (CTS) se centran en la compatibilidad del dispositivo. Para obtener información sobre la configuración de un entorno de prueba, consulte Configuración de CTS .

El camino de partida para las pruebas de cámara CTS es: platform/cts .

Cuando ejecute CTS de cámara para dispositivos que admitan cámaras externas (como cámaras web USB), debe tener un dispositivo conectado cuando ejecute CTS o las pruebas fallarán automáticamente. Ejemplos de cámaras externas incluyen: Logitech HD Pro Webcam C920 y la Microsoft LifeCam HD-3000 .

Ver la introducción CTS y sus sub-páginas para obtener instrucciones generales sobre la ejecución de CTS.

CTS pruebas para la android.hardware.Camera API

Encuentra estas pruebas de cámara bajo 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

CTS pruebas para la android.hardware.camera2 API

Encuentra estas pruebas de cámara bajo cts/tests/tests/ :

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

Pruebas de cámara CTS Verifier

Encuentra estas pruebas de cámara bajo: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Pruebas de Image Test Suite (ITS)

Las pruebas de Camera Image Test Suite (ITS) se centran en la corrección de la imagen. Para realizar las pruebas, ejecute los scripts de Python en una estación de trabajo con el dispositivo Android conectado a través de USB.

La cámara de su infraestructura y las pruebas se encuentran en el cts/apps/CameraITS directorio. Cada prueba reside en un tests/scene # subdirectorio.

Para configurar el entorno de prueba, ejecute:
extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r -g CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

Para obtener más información sobre cómo configurar y ejecutar las pruebas, consulte la CameraITS archivo PDF en cts/apps/CameraITS . Ver tutorial.py en el tests subdirectorio para una guía sobre cómo utilizar los scripts.

Las pruebas de ITS requieren un entorno Linux. Para más detalles sobre las versiones de Python específicos necesarios para ejecutar las pruebas de ITS, ver el CameraITS archivo PDF para la liberación o también las notas de la versión de Android 12 para Android 12.

La configuración recomendada para escenas estáticas se describe en la Cámara ITS-in-a-box . La configuración recomendada para la escena sensor_fusion se describe en la caja Guía de inicio rápido de la fusión de sensores .

Para ejecutar ITS manualmente, prepare un entorno físico simple con un objetivo específico y reutilizable, como una pared blanca, una tarjeta gris y una lámpara de escritorio. Monte el dispositivo Android en un trípode y ejecute los scripts para probar las funciones de la cámara. La mayoría de las pruebas se aprueban o no, pero algunas ofrecen métricas.

Estos scripts prueban escenarios que no se prueban en CTS y son un componente importante del plan de prueba HAL 3.2.

Sus pruebas pasan o no pasan. Todas las pruebas obligatorias en cada carpeta de escena deben pasar. Los exámenes que no tienen el mandato puede fallar y todavía cuentan como un pase en CtsVerifier .

Para descripciones de la escena y de prueba, consulte la cámara sus pruebas .

Pruebas de Media Framework

Pase todas las pruebas de medios relacionadas con la cámara en MediaFrameworkTest. Tenga en cuenta que estas pruebas requieren que mediaframeworktest.apk esté instalado en el dispositivo Android. Usted tendrá que make mediaframeworktest y luego usar adb para instalar el apk resultante. Los comandos de ejemplo se incluyen a continuación.

El camino de partida para pruebas marco medios de comunicación de la cámara relacionada es: platform/frameworks/base

Encontrar el código fuente de las pruebas aquí: frameworks/base/media/tests/MediaFrameworkTest

Para configurar estas pruebas:

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

Cuando el name variable representa el directorio que contiene el producto del proveedor.

Encuentre todas las pruebas en el siguiente directorio o sus subdirectorios:

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

Cada subdirectorio representa una clase de pruebas:

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

Ejecución de pruebas de Media Framework

Para ver todas las pruebas disponibles:

adb shell pm list instrumentation

Esto producirá resultados parecidos 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)

Identificar y extraer el componente (entre instrumentation: y (target=com.android.mediaframeworktest) de cada línea de prueba El componente se compone del nombre del paquete de destino (. com.android.mediaframeworktest ) y el nombre corredor de prueba ( MediaFramework TestRunner MediaFramework TestRunner ).

Por ejemplo:

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

A continuación, puede pasar a cada componente a adb shell am instrument de este modo:

adb shell am instrument -w component.name

Donde component.name es igual al valor extraído anteriormente. Por ejemplo:

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

Tenga en cuenta que, si bien la ruta de clase es el paquete Java + el nombre de la clase, el paquete de instrumentación no es necesariamente el mismo que el paquete Java. Asegúrese de utilizar el paquete AndroidManifest.xml cuando concatene el nombre del componente, no el paquete Java en el que reside la clase del ejecutor de pruebas.

Para ejecutar una sola clase de pruebas, pase la clase -e argumento, así:

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

Para ejecutar un solo método en una clase de prueba, anexar un signo de número (#) y el nombre del método (en este caso, testConnectPro ) al nombre de la clase, así:

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

Pruebas funcionales de configuración de medios

A continuación se muestra un ejemplo de ejecución de una prueba funcional. Esta prueba verifica la funcionalidad básica de diferentes combinaciones de ajustes de la cámara. (es decir, flash, exposición, balance de blancos, escena, tamaño de imagen y geoTag)

Ejecute el comando de prueba:

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

Pruebas de integración de medios

Aquí hay un ejemplo de ejecución de una prueba de integración, en este caso mediaframeworktest / integration / CameraBinderTest.java y mediaframeworktest / CameraStressTestRunner.java:

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

Si tiene éxito, esto da como resultado una salida similar a:

-----

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

OK (11 tests)

-----

Pruebas de rendimiento de medios

Esta prueba de memoria de vista previa abrirá y lanzará la vista previa de la cámara 200 veces. En cada 20 iteraciones, se grabará la instantánea de ps mediaserver y comparará el uso de memoria diferente después de 200 iteraciones. La prueba fallará si la diferencia es superior a 150 kM.

Ejecute el comando de prueba:

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

Más de salida detallada se puede encontrar en: /sdcard/mediaMemOutput.txt

Pruebas de unidades de medios

Los comandos para ejecutar pruebas unitarias son todos similares. Por ejemplo, para CameraMetadataTest.java, el comando sería:

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

Pruebas de estrés mediático

Esta prueba es para enfatizar la captura de imágenes de la cámara y la grabación de video.

Ejecute el comando de prueba:

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

Todas las pruebas deben pasar.

Pruebas manuales de cámara

La aplicación TestingCam debe ejecutarse manualmente con las siguientes comprobaciones realizadas. La fuente de TestingCam está aquí: pdk/apps/TestingCamera/

Enfoque infinito con inclinación de la cámara

Inicie TestingCam, active la vista previa y asegúrese de que el modo de enfoque automático esté configurado en infinito. Usando el botón Tomar foto, disparos de captura de objetos distantes (por lo menos 10 metros de distancia) con la cámara dirigida horizontalmente, hacia arriba (cerca de la vertical), y hacia abajo (cerca de la vertical); un ejemplo de tiro hacia arriba podría ser hojas altas / ramas de un árbol desde abajo y un ejemplo de tiro hacia abajo podría ser la calle vista desde el techo de un edificio. En todos los casos, el sujeto distante debe ser nítido y enfocado. Guarde y vea las tomas en la vista de galería para que pueda acercar e inspeccionar la nitidez más fácilmente.

Tenga en cuenta que para que una cámara con un actuador VCM pase esta prueba, necesitará un sistema de control de AF de circuito cerrado o algún tipo de corrección de SW basada en el uso de datos del acelerómetro para determinar la orientación de la cámara. También se necesitará una calibración de fábrica confiable de la posición infinita de la lente.

Pruebas manuales Pruebas de cam2

La aplicación TestingCam2 debe ejecutarse manualmente, con las siguientes comprobaciones realizadas. La fuente de TestingCam2 está aquí: pdk/apps/TestingCamera2/

Captura de JPEG

Inicio TestingCam2, y pulse el botón JPEG. La imagen que aparece a la derecha de la imagen del visor debe tener el mismo aspecto que el visor, incluida la misma orientación.