Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Lista de verificación de prueba de cámara HAL

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 pasar 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. Al cumplir con todos los elementos de la lista de verificación, la implementación de un dispositivo puede considerarse completa con respecto a las interfaces HAL de la cámara Android. Esto, a su vez, permitirá que un dispositivo admita correctamente el paquete android.hardware.camera2 que se basan las aplicaciones de la cámara.

Especificación de cámara HAL3

La especificación Android Camera HAL3 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 cámaras HAL (por ejemplo, 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 Android genérico (PDK) de Android 5.0 y posterior:

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 de VTS, consulte Vendor Test Suite .

Pruebas de Compatibility Test Suite (CTS)

Las pruebas del conjunto de pruebas de compatibilidad de cámara con Android (CTS) se centran en la compatibilidad del dispositivo. Para obtener información sobre cómo configurar un entorno de prueba, consulte Configuración de CTS .

La ruta de inicio para las pruebas de cámara CTS es: platform/cts .

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

Consulte la introducción de CTS y sus subpáginas para obtener instrucciones generales sobre cómo ejecutar CTS.

Pruebas CTS para la API android.hardware.Camera

Encuentre estas pruebas de cámara en 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

Pruebas CTS para la API android.hardware.camera2

Encuentre estas pruebas de cámara en cts/tests/tests/ :

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

Pruebas de la cámara CTS Verifier

Encuentre estas pruebas de cámara en: 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 infraestructura y las pruebas de Camera ITS se encuentran en el directorio cts/apps/CameraITS . Cada prueba reside en un subdirectorio tests/scene # .

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 CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

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

Las pruebas estáticas de ITS (escenas 0-5) se pueden ejecutar con cualquier sistema operativo con el entorno Python 2.7 requerido. Sin embargo, la prueba sensor_fusion con Sensor Fusion Box debe ejecutarse con el sistema operativo Linux.

La configuración recomendada para las escenas 0-4 se describe en Cámara ITS-in-a-box . La configuración recomendada para la escena sensor_fusion se describe en la Guía de inicio rápido de Sensor Fusion Box .

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 escenas deben pasar. Las pruebas que no son obligatorias pueden fallar y aun así contar como un pase en CtsVerifier .

Pruebas de la escena 0 a la escena 4

Estas escenas representan una gran parte de las pruebas de ITS y se incluyen como archivos PDF en la carpeta de scene . Para automatizar estas pruebas, utilice el sistema Camera ITS-in-a-box .

  • Escena 0: no requiere configuración.
  • Escena 1: Requiere una tarjeta gris.
  • Escena 2: Requiere una escena facial.
  • Escena 3: Gráfico ISO12233.
  • Escena 4: Escena personalizada con un círculo dentro de un cuadrado.

Pruebas de la escena 5

Las pruebas de la escena 5 requieren que se coloque un difusor en la parte superior de la cámara.

Pruebas de fusión de sensores

Las pruebas de fusión de sensores requieren un movimiento de cámara específico para probar la diferencia de marca de tiempo entre la cámara y el giroscopio para aplicaciones AR y VR. Esta prueba se omite si no se incluye ningún giroscopio o si el parámetro REALTIME no está habilitado. La prueba sensor_fusion se puede automatizar con Sensor Fusion Box .

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. Tendrá que make mediaframeworktest y luego usar adb para instalar el .apk resultante. Los comandos de ejemplo se incluyen a continuación.

La ruta de inicio para las pruebas de marcos de medios relacionados con la cámara es: platform/frameworks/base

Encuentre 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

Donde la variable de name 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 similares 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)

Identifique y extraiga el componente (entre la instrumentation: y (target=com.android.mediaframeworktest) de cada línea de prueba. El componente está compuesto por el nombre del paquete de destino ( com.android.mediaframeworktest ) y el nombre del MediaFramework TestRunner la prueba ( MediaFramework TestRunner MediaFramework TestRunner ).

Por ejemplo:

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

Luego puede pasar cada componente al adb shell am instrument así:

adb shell am instrument -w component.name

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

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

Tenga en cuenta que, si bien la ruta de la 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 al concatenar 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 solo un método en una clase de prueba, agregue un signo de testConnectPro (#) 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

A continuación, se muestra 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

Se puede encontrar una salida más detallada 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. Con el botón Tomar foto , capture imágenes de sujetos distantes (al menos a 10 m de distancia) con la cámara apuntando horizontalmente, hacia arriba (cerca de la vertical) y hacia abajo (cerca de la vertical); un ejemplo de la toma hacia arriba podría ser hojas altas / ramas de un árbol desde abajo y un ejemplo de la toma 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 bucle 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 JPEG

Inicie TestingCam2 y presione el botón JPEG . La imagen que aparece a la derecha de la imagen del visor debería aparecer igual que el visor, incluida la misma orientación.