Checklist pour les tests du composant HAL de la caméra

Cette page liste tous les tests disponibles pour évaluer l'appareil photo Android couche d'abstraction matérielle (HAL). Elle est destinée à l'équipement d'origine des fabricants (OEM) et des applications les fournisseurs de processeurs afin de garantir une bonne mise en œuvre de la caméra. HAL avec un nombre minimal de défauts. Bien qu'il s'agisse d'un ajout volontaire Compatibility Test Suite (CTS) augmente considérablement la couverture des tests de l'appareil photo et les bugs potentiels seront certainement identifiés.

En réussissant ces tests, les OEM valident s'ils ont correctement intégré la plate-forme Android matériel photo de couche d'abstraction (HAL) 3. Lors de la validation de tous les éléments de l'implémentation d'un appareil peut être considérée comme complète en ce qui concerne aux interfaces HAL de l'appareil photo Android. Cela permettra à son tour à un appareil de prend en charge correctement <ph type="x-smartling-placeholder"></ph> android.hardware.camera2 qui sur lesquelles s'appuient les applications d'appareil photo.

Spécifications HAL3 de la caméra

Spécifications relatives à la caméra Android HAL3 est la source faisant autorité de des informations sur les appareils qui doivent être conformes ; cette page fournit un résumé de tous les tests pouvant servir de checklist. Les responsables de la mise en œuvre des HAL de la caméra (par exemple, fournisseurs) doivent examiner ligne par ligne la spécification HAL3 de la caméra et s'assurer leurs appareils s’y conforment.

La spécification HAL actuelle est définie dans ces fichiers au sein de la 5.0 et versions ultérieures du kit de développement de plate-forme Android (PDK) générique :

Types de tests pour la caméra

Voici les principaux types de tests disponibles pour l'appareil photo Android le plus récent ainsi que les références aux instructions associées ci-dessous:

Tous ces types de tests sont décrits en détail ci-dessous. Ces tests sont présenté dans l'ordre chronologique dans lequel les OEM sont censés exécuter de l'IA générative.

Par exemple, si un appareil échoue aux tests natifs, il échouera assurément les tests CTS (Compatibility Test Suite) ultérieurs. Et si un appareil tombe en panne CTS, l'examen Image Test Suite (ITS) est peu utile. Nous vous recommandons la résolution des échecs dans chaque type de test avant de passer à l'ensemble suivant tests.

Tests de la suite de tests fournisseurs (VTS)

La suite de tests pour les fournisseurs Android (VTS) est une suite de tests qui fonctionne sur Niveau de l'interface HIDL. Pour en savoir plus sur l'utilisation de VTS, consultez Vendor Test Suite (Suite de test fournisseur).

Tests de la suite de tests de compatibilité (CTS)

Les tests CTS de la suite de test de compatibilité Android se concentrent sur l'appareil et la compatibilité avec d'autres appareils. Pour en savoir plus sur la configuration d'un environnement de test, consultez Configurer CTS.

Voici le chemin de départ pour les tests CTS de l'appareil photo: platform/cts.

Lors de l'exécution de la CTS de la caméra pour les appareils qui prennent en charge les caméras externes (comme webcams USB), un périphérique doit être branché lorsque vous exécutez CTS ou les tests. échoue automatiquement. Exemples de caméras externes: Logitech HD Pro Webcam C920 et Microsoft LifeCam HD-3000.

Voir la CTS présentation et ses sous-pages pour obtenir des instructions générales sur l'exécution de CTS.

Tests CTS pour l'API android.hardware.Camera ;

Vous trouverez ces tests de l'appareil photo sous 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

Tests CTS pour l'API android.hardware.camera2 ;

Vous trouverez ces tests de l'appareil photo sous cts/tests/tests/:

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

Tests de l'appareil photo CTS Verifier

Vous trouverez ces tests de l'appareil photo sous: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Tests Image Test Suite (ITS)

Les tests ITS (Camera Image Test Suite) se concentrent sur l'exactitude de l'image. Pour effectuer les tests, exécutez les scripts Python sur une station de travail avec la Appareil Android connecté via USB.

L'infrastructure et les tests ITS de l'appareil photo se trouvent dans le <ph type="x-smartling-placeholder"></ph> cts/apps/CameraITS. Chaque test se trouve dans un sous-répertoire tests/scene#.

Pour en savoir plus sur la configuration et l'exécution des tests, consultez Caméra ITS

Pour obtenir une description de la scène et du test, consultez Tests ITS de la caméra.

Les tests ITS réussissent ou échouent. Tous les tests obligatoires de chaque dossier de scène doivent réussir. Les tests non obligatoires peuvent échouer et être comptabilisés comme des réussites. CtsVerifier

ITS teste des scénarios de test qui ne sont pas testés dans CTS et qui sont du plan de test HAL 3.2.

Tests de Media Framework

Réussir tous les tests multimédias liés à l'appareil photo dans MediaFrameworkTest. Veuillez Notez que ces tests nécessitent l'installation du fichier mediaframeworktest.apk sur le appareil. Vous devez make mediaframeworktest, puis utiliser adb pour installer le fichier .apk obtenu. Vous trouverez des exemples de commandes ci-dessous.

Voici le processus de départ pour les tests du framework multimédia lié à l'appareil photo: platform/frameworks/base

Vous trouverez le code source des tests ici: frameworks/base/media/tests/MediaFrameworkTest

Pour configurer ces tests:

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

Où la variable name représente le qui contient le produit du fournisseur.

Retrouvez tous les tests dans le répertoire suivant ou ses sous-répertoires:

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

Chaque sous-répertoire représente une classe de tests:

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

Exécuter des tests Media Framework

Pour afficher tous les tests disponibles :

adb shell pm list instrumentation

Vous obtiendrez des résultats semblables à ceux-ci:

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)

Identifiez et extrayez le composant (entre instrumentation:). et (target=com.android.mediaframeworktest) de chaque ligne de test. Le composant se compose du nom du package cible (com.android.mediaframeworktest) et le nom du lanceur de test (MediaFrameworkTestRunner).

Exemple :

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

Vous pouvez ensuite transmettre chaque composant à adb shell am instrument, comme Par conséquent:

adb shell am instrument -w component.name

component.name correspond à la valeur extraite ci-dessus. Exemple :

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

Remarque : bien que le chemin d'accès à la classe se compose du package Java et du nom de la classe, Le package d'instrumentation n'est pas nécessairement le même que le package Java. Marque veillez à utiliser le package AndroidManifest.xml lorsque vous concaténez le composant et non le package Java dans lequel se trouve la classe du lanceur de test.

Pour exécuter une seule classe de tests, transmettez l'argument -e de la classe , comme suit : Par conséquent:

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

Pour exécuter une seule méthode dans une classe de test, ajoutez un signe dièse (#) et l'opérateur nom de la méthode (dans ce cas, testConnectPro) au nom de la classe, comme ceci:

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

Tests fonctionnels des paramètres multimédias

Voici un exemple d'exécution d'un test fonctionnel. Il consiste à vérifier des différentes combinaisons de paramètres de l'appareil photo. (Flash, exposition, WB, scène, taille de l'image et géoTag)

Exécutez la commande de 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

Tests d'intégration multimédia

Voici un exemple d'exécution d'un test d'intégration. mediaframeworktest/integration/CameraBinderTest.java et mediaframeworktest/CameraStressTestRunner.java:

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

Si l'opération réussit, le résultat ressemble à ceci:

-----

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

OK (11 tests)

-----

Tests des performances des médias

Cet aperçu test de la mémoire ouvrira et publiera l'aperçu de l'appareil photo pour 200 fois. Dans toutes les 20 itérations, l'instantané du serveur multimédia ps sera enregistré. et il comparera l'utilisation de la mémoire différente après 200 itérations. Le test échoue si l'écart est supérieur à 150 km.

Exécutez la commande de test:

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

Des résultats plus détaillés sont disponibles dans: /sdcard/mediaMemOutput.txt

Tests unitaires média

Les commandes permettant d'exécuter des tests unitaires sont toutes similaires. Par exemple, pour CameraMetadataTest.java, la commande est la suivante:

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

Tests de contrainte sur les médias

Ce test vise à accroître la pression sur la capture d'image et l'enregistrement vidéo de la caméra.

Exécutez la commande de test:

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

Tous les tests devraient réussir.

Tests manuels TestingCam

Vous devez exécuter l'application TestingCam manuellement en effectuant les vérifications suivantes. Source de TestingCam: pdk/apps/TestingCamera/

Mise au point infinie avec inclinaison de la caméra

Démarrez la TestCam, activez l'aperçu, puis vérifiez que le mode de mise au point automatique est défini sur à l'infini. Le bouton Prendre une photo vous permet de prendre des photos de des sujets éloignés (au moins 10 m) avec l'appareil photo orienté horizontalement. vers le haut (près de verticalement) et vers le bas (près de verticalement) ; un exemple de la prise de vue vers le haut peut représenter des feuilles ou des branches hautes d'un arbre de dessous, et une Par exemple, la prise de vue vers le bas pourrait être la rue vue depuis le toit d'une du bâtiment. Dans tous les cas, le sujet éloigné doit être net et net. Enregistrer et consultez les prises de vue dans la vue Galerie afin de pouvoir zoomer plus facilement la netteté.

Notez que pour réussir ce test, une caméra dotée d'un actionneur VCM doit soit un système de contrôle de la mise au point automatique en boucle fermée, soit une sorte de logiciel correction basée sur l'utilisation des données de l'accéléromètre pour déterminer l'orientation de l'appareil photo. Un étalonnage fiable de la position infinie de l'objectif en usine sera également nécessaire.

Tests manuels TestingCam2

Vous devez exécuter l'application TestingCam2 manuellement, en effectuant les vérifications suivantes : d'exécution. Source de TestingCam2: pdk/apps/TestingCamera2/

Capture JPEG

Lancez TestingCam2, puis appuyez sur le bouton JPEG. L'image qui apparaît à droite de l'image du viseur doit apparaître de la même manière que viseur, y compris en ayant la même orientation.