Outil de validation des extensions d'appareil photo

L'outil de validation des extensions de caméras permet aux fabricants d'appareils de vérifier que la bibliothèque de fournisseurs OEM d'extensions de caméras est implémentée correctement. L'outil inclut des tests de validation automatisés et manuels.

  • Tests de validation automatisés : validez que l'interface de la bibliothèque du fournisseur est correctement implémentée. Par exemple, si CaptureProcessor est requis pour la capture d'images, les tests valident que ImageCaptureExtenderImpl#getCaptureStages() renvoie les instances CaptureStage requises pour la capture des images.

  • Tests de validation manuelle : validez les effets d'image et la qualité de l'aperçu et des images capturées. Par exemple, les tests permettent aux fabricants d'appareils de valider manuellement si l'effet de retouche du visage est appliqué correctement ou si l'intensité du bokeh est suffisante.

Le code source de l'outil de validation fait partie de l'application de test des extensions dans le dépôt Android Jetpack.

Créer l'outil de validation des extensions de caméras

Pour créer l'outil de validation des extensions, procédez comme suit :

  1. Téléchargez le code source de la bibliothèque Android Jetpack. Pour en savoir plus, consultez la section Extraire le code du fichier README d'Android Jetpack.

  2. Créez l'APK extensionstestapp. Cela permet d'exécuter des tests de validation manuels.

      cd path/to/checkout/frameworks/support/
      ./gradlew camera:integration-tests:camera-testapp-extensions:assembleDebug

    Le fichier APK est généré dans le chemin d'accès suivant :

      path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/debug/camera-testapp-extensions-debug.apk
    
  3. Créez l'APK androidTest. Cet APK permet d'exécuter des tests de validation automatisés.

      cd path/to/checkout/frameworks/support/
      ./gradlew camera:integration-tests:camera-testapp-extensions:assembleAndroidTest

    Le fichier APK est généré dans le chemin d'accès suivant :

      path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/androidTest/debug/camera-testapp-extensions-debug-androidTest.apk
    

Exécuter des tests de validation automatisés

Pour exécuter les tests de validation automatisés, installez les APK extensionstestapp et androidTest.

  • extensionstestapp APK

      adb install -r path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/debug/camera-testapp-extensions-debug.apk
  • androidTest APK

      adb install -r path/to/checkout/out/androidx/camera/integration-tests/camera-testapp-extensions/build/outputs/apk/androidTest/debug/camera-testapp-extensions-debug-androidTest.apk

Exécuter tous les tests automatisés

Après avoir installé les APK, exécutez la commande suivante pour exécuter tous les tests automatisés afin de valider l'implémentation de la bibliothèque du fournisseur :

adb shell am instrument -w -r androidx.camera.integration.extensions.test/androidx.test.runner.AndroidJUnitRunner

Si tous les tests réussissent, le résultat OK est renvoyé. Sinon, le rapport de test final affiche les échecs dans le terminal une fois tous les tests terminés.

automated_validation_result-pass

Figure 1 : Résultat OK des tests automatisés

automated_validation_result-fail

Figure 2. Résultats des tests automatisés avec des échecs

Exécuter des tests automatisés d'une classe spécifique

Pour exécuter des tests automatisés d'une classe spécifique, indiquez le nom et le chemin d'accès de la classe cible. L'exemple suivant montre la commande permettant d'exécuter des tests pour la classe ImageCaptureTest :

adb shell am instrument -w -r -e class **androidx.camera.integration.extensions.ImageCaptureTest** androidx.camera.integration.extensions.test/androidx.test.runner.AndroidJUnitRunner

Exécuter des tests de validation manuels

Les tests de validation manuelle se trouvent dans l'application de test des extensions. Après avoir installé et lancé l'application de test des extensions, passez en mode outil de validation en appuyant sur l'élément de menu en haut à droite.

Après être passé au mode outil de validation, la première page liste toutes les caméras qui contiennent la fonctionnalité REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE. Si une caméra n'est compatible avec aucun mode d'extension, l'élément de liste correspondant est grisé.

camera_validation_result-initial

Figure 3. Mode de l'outil de validation

Appuyez sur l'une des caméras pour afficher les modes d'extension à tester. Les modes d'extension non pris en charge par la caméra sélectionnée sont affichés en gris.

extension_mode_validation_result-initial

Figure 4. Modes d'extension disponibles pour une caméra

Vérifier les résultats de l'aperçu

Pour vérifier les résultats de l'aperçu, lancez un test manuel en appuyant sur un mode d'extension pour la caméra sélectionnée. Une activité de capture d'image contenant l'aperçu est ensuite affichée.

preview-bokeh_enabled

Figure 5. Image d'aperçu avec le bokeh activé

L'activité de capture d'images est compatible avec les fonctions suivantes :

  • Zoom avant/arrière
  • Appuyer pour effectuer la mise au point
  • Bouton de changement de mode du flash
  • EV +/-
  • Bouton d'activation/de désactivation de l'extension

Vérifiez que les fonctions de zoom avant/arrière, de mise au point par toucher, de modes flash et de compensation d'exposition fonctionnent comme prévu dans l'aperçu.

Vérifier les résultats de l'image capturée

Pour capturer l'image, appuyez sur le bouton CAPTURER (le bouton rond) dans l'activité de capture d'image. Une activité de validation d'image s'affiche et montre l'image capturée.

photo_viewer-bokeh_enabled

Figure 6. Image capturée avec le bokeh activé

L'activité de validation des images comprend les fonctions suivantes :

  • Pincer pour faire un zoom avant ou arrière sur l'image
  • Balayez l'écran vers la gauche ou la droite pour passer d'une image capturée à l'autre.
  • Relancer la capture
  • Élément de menu "Enregistrer l'image"

Vérifiez que l'image capturée est correcte et qu'elle correspond aux paramètres de zoom avant/arrière, de mise au point par toucher, de mode flash et de compensation d'exposition définis lors de la capture de l'image.

Si les résultats capturés sont corrects, appuyez sur le bouton RÉUSSITE (coche) en bas à droite. Sinon, appuyez sur le bouton ÉCHEC (point d'exclamation) en bas à gauche.

Afficher les résultats des tests

Une fois qu'un mode d'extension a été vérifié comme réussi ou échoué, l'élément de liste correspondant affiche une couleur d'arrière-plan et un indicateur différents. Dans la vue Liste de toutes les caméras, les éléments s'affichent dans les couleurs suivantes :

  • Fond blanc : la caméra est compatible avec au moins un mode d'extension, mais les modes d'extension compatibles ne sont pas entièrement validés.
  • Fond vert : la caméra est compatible avec au moins un mode d'extension. Tous les modes d'extension compatibles sont validés et tous les résultats sont positifs.
  • Fond rouge : la caméra est compatible avec au moins un mode d'extension. Tous les modes d'extension compatibles sont validés avec au moins un résultat de mode d'extension en échec.
  • Arrière-plan gris : cette fonctionnalité n'est pas disponible.

camera_validation_result extension_mode_validation_result

Figure 7. Couleurs indiquant les résultats des tests pour les caméras et les modes d'extension

Autres fonctions de l'outil de validation

Une fois tous les tests effectués, l'activité de la liste des caméras fournit les fonctions suivantes :

  • Exporter les résultats du test : exporte les résultats du test au format CSV dans le dossier Documents/ExtensionsValidation.
  • Réinitialiser : efface tous les résultats de test mis en cache.
  • Exemple d'application d'extensions : bascule vers le mode exemple d'application d'extensions.

Une fois le test terminé, vous pouvez exporter les résultats. Si vous rencontrez un problème et qu'une nouvelle version de l'implémentation de la bibliothèque du fournisseur avec les solutions doit être vérifiée à nouveau, réinitialisez les résultats des tests précédents et réexécutez tous les modes d'extension compatibles sur toutes les caméras pour vérifier que les problèmes sont résolus.