En esta página, se enumeran todas las pruebas disponibles para evaluar la cámara de Android la capa de abstracción de hardware (HAL). Está destinado al equipo original. fabricantes (OEMs) y aplicaciones proveedores de procesadores (AP), de modo que garanticen la implementación adecuada de la cámara HAL con defectos mínimos. Aunque se trata de un agregado voluntario a Android Conjunto de pruebas de compatibilidad (CTS), que aumenta considerablemente la cobertura de las pruebas de la cámara y para identificar posibles errores.
Al pasar estas pruebas, los OEM validan
si se integraron correctamente la aplicación
hardware de la cámara
3 de la capa de abstracción (HAL). Cuando cumpla con todos los elementos de las
lista de tareas, una implementación de dispositivo puede considerarse completa con respecto
a las interfaces de la HAL de la cámara de Android. A su vez, esto permitirá que el dispositivo
admitir de forma adecuada el
paquete android.hardware.camera2
que
las apps de cámara.
Especificación de la HAL3 de la cámara
Especificación de la HAL3 de la cámara de Android es la fuente autorizada de información sobre lo que los dispositivos deben satisfacer; esta página ofrece un resumen de todas las pruebas que se pueden usar como lista de tareas. Implementadores de HAL de la cámara (p.ej., AP) ) deben revisar la especificación de la cámara HAL3 línea por línea y asegurarse que sus dispositivos cumplan con ella.
La especificación actual del HAL se define en estos archivos dentro del Android Platform Development Kit (PDK) genérico 5.0 y posteriores:
- Interfaz y especificaciones de la HAL 3.x de la cámara:
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- Especificaciones de metadatos de la HAL 3.x de la cámara:
system/media/camera/docs/docs.html
- Especificaciones y interfaz de formato de píxeles de HAL:
system/core/libsystem/include/system/graphics.h
Tipos de prueba de la cámara
A continuación, se indican los tipos principales de pruebas disponibles para la cámara de Android más reciente. junto con referencias a instrucciones asociadas a continuación:
- Paquete de pruebas del proveedor (VTS): Son pruebas que prueban directamente el Interfaz de la HAL de la cámara
- Conjunto de pruebas de compatibilidad (CTS): Android estándar y automatizado para garantizar la compatibilidad del dispositivo. Para obtener más detalles, consulta Conjunto de pruebas de compatibilidad y Federación de Comercio Descripción general.
- Conjunto de pruebas de imágenes (ITS): Se ejecuta manualmente. para verificar que las imágenes sean correctas. Para obtener más detalles, consulta ITS de la cámara.
- Pruebas manuales de TestingCam:
Ejecuta desde la fuente en
pdk/apps/TestingCamera/
- Manual TestingCam2.1
pruebas: Se ejecuta desde la fuente en
pdk/apps/TestingCamera2/
.
Todos estos tipos de prueba se describen en detalle a continuación. Estas pruebas son presentados en el orden cronológico en el que se espera que realicen los OEM de ellos.
Por ejemplo, si un dispositivo no pasa las pruebas en código nativo, no pasará de ninguna forma pruebas posteriores del Conjunto de pruebas de compatibilidad (CTS). Y si un dispositivo falla con el CTS, es poco útil proceder al conjunto de pruebas de imágenes (ITS). Recomendaciones las fallas en cada tipo de prueba antes de continuar con el siguiente conjunto y pruebas.
Pruebas del paquete de pruebas de proveedores (VTS)
El Paquete de pruebas del proveedor de Android (VTS) es un paquete de pruebas que funciona en el Nivel de la interfaz HIDL. Para obtener más información sobre el uso de VTS, consulta Paquete de pruebas del proveedor.
Pruebas del Conjunto de pruebas de compatibilidad (CTS)
Las pruebas del Conjunto de pruebas de compatibilidad (CTS) de la cámara de Android se enfocan en el dispositivo compatibilidad. Si deseas obtener información para configurar un entorno de pruebas, consulta Cómo configurar el CTS.
La ruta inicial para las pruebas del CTS de la cámara es platform/cts
.
Cuando se ejecuta el CTS de la cámara para dispositivos que admiten cámaras externas (como cámaras web con USB), debes tener un dispositivo conectado cuando ejecutes el CTS o las pruebas fallará automáticamente. Algunos ejemplos de cámaras externas son Logitech HD Pro Webcam C920 y Microsoft LifeCam HD-3000.
Consulta el CTS Introducción y sus subpáginas para obtener instrucciones generales sobre la ejecución de CTS.
Pruebas del CTS para
la API de android.hardware.Camera
Encuentra 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 del CTS para
la API de android.hardware.camera2
Encuentra estas pruebas de cámara en cts/tests/tests/
:
hardware/src/android/hardware/camera2/cts/*
permission/src/android/permission/cts/Camera2PermissionTest.java
Pruebas de cámara del verificador del CTS
Encuentra estas pruebas de cámara en:
cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*
Pruebas del Paquete de pruebas de imagen (ITS)
Las pruebas del Paquete de pruebas de imagen de la cámara (ITS) se enfocan en la precisión de las imágenes. Para realizar las pruebas, ejecuta las secuencias de comandos de Python en una estación de trabajo con el Dispositivo Android conectado a través de USB
La infraestructura y las pruebas de ITS de la cámara se encuentran en
directorio cts/apps/CameraITS
.
Cada prueba reside en un subdirectorio tests/scene#
.
Para obtener más información sobre cómo configurar y ejecutar las pruebas, consulta ITS de la cámara.
Para obtener descripciones de escenas y pruebas, consulta Pruebas de ITS de la cámara.
Las pruebas de ITS son exitosas o no. Se deben aprobar todas las pruebas obligatorias en cada carpeta de escena.
Las pruebas que no son obligatorias pueden fallar y, de todos modos, contar como una aprobación
CtsVerifier
El ITS prueba situaciones de prueba que no se evalúan en el CTS y son un factor importante componente del plan de prueba HAL 3.2.
Pruebas del framework de medios
Pasar todas las pruebas de contenido multimedia relacionadas con la cámara en MediaFrameworkTest Por favor,
ten en cuenta que estas pruebas requieren que se instale mediaframeworktest.apk en el dispositivo
dispositivo. Necesitarás make mediaframeworktest
y, luego, usar adb
para instalar el .apk resultante. A continuación, se incluyen comandos de ejemplo.
La ruta de inicio para las pruebas del framework de contenido multimedia relacionado con la cámara es la siguiente:
platform/frameworks/base
Encuentra el código fuente para las pruebas aquí:
frameworks/base/media/tests/MediaFrameworkTest
Para configurar estas pruebas, sigue estos pasos:
make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk
En el que la variable name representa la que contiene el producto del proveedor.
Encuentra todas las pruebas en el siguiente directorio o en sus subdirectorios:
frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
Cada subdirectorio representa una clase de pruebas:
functional/
integration/
performance/
power/
stress/
unit/
Cómo ejecutar pruebas de Media Framework
Para ver todas las pruebas disponibles, haz lo siguiente:
adb shell pm list instrumentation
Esto generará resultados como los siguientes:
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 y extrae el componente (entre 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 ejecutor de pruebas
(MediaFramework
)
Por ejemplo:
com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner com.android.mediaframeworktest/.MediaRecorderStressTestRunner com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
Luego, puedes pasar cada componente a adb shell am instrument
, como
entonces:
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
Ten en cuenta que, si bien la ruta de acceso de la clase es el paquete de Java + el nombre de la clase, el de instrumentación no es necesariamente lo mismo que el paquete de Java. Marca asegúrate de usar el paquete AndroidManifest.xml cuando concatenas el componente del ejecutor de pruebas, no el paquete de Java en el que reside la clase del ejecutor de pruebas.
Para ejecutar una sola clase de pruebas, pasa el argumento -e clase
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, agrega un signo numeral (#) y el
nombre del método (en este caso, testConnectPro
) al nombre de la clase, de la siguiente manera:
adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Pruebas funcionales de la configuración multimedia
Este es un ejemplo de ejecución de una prueba funcional. Esta prueba verifica el estado de las diferentes combinaciones de parámetros de configuración de la cámara. (p. ej., Flash, exposición, WB, escena, tamaño de la imagen y geoetiqueta)
Ejecuta 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 contenido multimedia
Este es 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 se ejecuta de forma correcta, el resultado será el siguiente:
----- com.android.mediaframeworktest.integration.CameraBinderTest:........... Test results for CameraStressTestRunner=........... Time: 3.328 OK (11 tests) -----
Pruebas de rendimiento del contenido multimedia
Esta prueba de memoria de vista previa se abrirá y liberará la vista previa de la cámara para 200. veces. En cada 20 iteraciones, se registrará la instantánea de ps mediaserver. y comparará el uso de memoria diferente después de 200 iteraciones. La prueba hará lo siguiente si la diferencia es superior a 150 kM.
Ejecuta el comando de prueba:
adb shell am instrument -w -r -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
Puedes encontrar resultados más detallados en lo siguiente:
/sdcard/mediaMemOutput.txt
Pruebas de unidades multimedia
Los comandos para ejecutar pruebas de unidades son todos similares. Por ejemplo, para los CameraMetadataTest.java, el comando sería el siguiente:
adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'
Pruebas de esfuerzo multimedia
Esta prueba tiene el objetivo de sobrecargar la captura de imágenes y la grabación de video de la cámara.
Ejecuta el comando de prueba:
adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
Se deberían aprobar todas las pruebas.
Pruebas manuales de TestingCam
La app TestingCam debe ejecutarse manualmente con las siguientes verificaciones.
La fuente de TestingCam está aquí: pdk/apps/TestingCamera/
Enfoque infinito con la inclinación de la cámara
Inicia TestingCam, activa la vista previa y asegúrate de que el modo de enfoque automático esté configurado en infinito. Con el botón Tomar foto, puedes hacer tomas 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 el plano hacia arriba podrían ser hojas/ramas altas de un árbol desde abajo y una ejemplo de la toma hacia abajo podría ser la calle vista desde el techo de una del edificio. En todos los casos, el sujeto distante debe ser nítido y estar bien enfocado. Guardar y ver las tomas en la vista de galería para poder acercarlas e inspeccionar el nitidez con mayor facilidad.
Ten en cuenta que para que una cámara con un accionador VCM apruebe esta prueba, deberás ya sea un sistema de control de AF de circuito cerrado o necesita algún tipo de SW según los datos del acelerómetro para determinar la orientación de la cámara. También necesitarás una calibración confiable de fábrica de la posición infinita de la lente.
Pruebas manuales TestingCam2
La app TestingCam2 debería ejecutarse manualmente, con las siguientes comprobaciones
una tarea. La fuente de TestingCam2 está aquí: pdk/apps/TestingCamera2/
.
Captura de JPEG
Inicia TestingCam2 y presiona el botón JPEG. La imagen que aparece a la derecha de la imagen del visor debe verse de la misma manera que visor e incluso tener la misma orientación.