CameraX

CameraX est un complément de Jetpack qui facilite l'ajout de fonctionnalités d'appareil photo à votre application. Cette bibliothèque fournit divers correctifs et solutions de compatibilité qui contribuent à harmoniser l'expérience de développement sur de nombreux appareils.

Ce tableau répertorie tous les artefacts du groupe androidx.camera.

Artefact Version stable Version finale Version bêta Version alpha
camera-camera2 1.3.2 - - 1.4.0-alpha04
camera-core 1.3.2 - - 1.4.0-alpha04
effets-de-l'appareil-photo - - - 1.4.0-alpha04
camera-extensions 1.3.2 - - 1.4.0-alpha04
camera-lifecycle 1.3.2 - - 1.4.0-alpha04
camera-mlkit-vision - - 1.3.0-beta02 1.4.0-alpha04
camera-view 1.3.2 - - 1.4.0-alpha04
viseur de l'appareil photo - - 1.3.0-beta02 1.4.0-alpha04
camera-video 1.3.2 - - 1.4.0-alpha04
Dernière mise à jour de la bibliothèque: 6 mars 2024

Tests d'appareils

CameraX a été testée sur de nombreux appareils dans notre atelier. Pour afficher la liste des appareils actuellement utilisés dans l'atelier, consultez la section sur les appareils testés lors de l'atelier CameraX.

Déclarer des dépendances

Pour ajouter une dépendance à CameraX, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances des artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou module :

Groovy

dependencies {
  // CameraX core library using the camera2 implementation
  def camerax_version = "1.4.0-alpha04"
  // The following line is optional, as the core library is included indirectly by camera-camera2
  implementation "androidx.camera:camera-core:${camerax_version}"
  implementation "androidx.camera:camera-camera2:${camerax_version}"
  // If you want to additionally use the CameraX Lifecycle library
  implementation "androidx.camera:camera-lifecycle:${camerax_version}"
  // If you want to additionally use the CameraX VideoCapture library
  implementation "androidx.camera:camera-video:${camerax_version}"
  // If you want to additionally use the CameraX View class
  implementation "androidx.camera:camera-view:${camerax_version}"
  // If you want to additionally add CameraX ML Kit Vision Integration
  implementation "androidx.camera:camera-mlkit-vision:${camerax_version}"
  // If you want to additionally use the CameraX Extensions library
  implementation "androidx.camera:camera-extensions:${camerax_version}"
}

Kotlin

dependencies {
    // CameraX core library using the camera2 implementation
    val camerax_version = "1.4.0-alpha04"
    // The following line is optional, as the core library is included indirectly by camera-camera2
    implementation("androidx.camera:camera-core:${camerax_version}")
    implementation("androidx.camera:camera-camera2:${camerax_version}")
    // If you want to additionally use the CameraX Lifecycle library
    implementation("androidx.camera:camera-lifecycle:${camerax_version}")
    // If you want to additionally use the CameraX VideoCapture library
    implementation("androidx.camera:camera-video:${camerax_version}")
    // If you want to additionally use the CameraX View class
    implementation("androidx.camera:camera-view:${camerax_version}")
    // If you want to additionally add CameraX ML Kit Vision Integration
    implementation("androidx.camera:camera-mlkit-vision:${camerax_version}")
    // If you want to additionally use the CameraX Extensions library
    implementation("androidx.camera:camera-extensions:${camerax_version}")
}

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un nouveau problème

Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.

Version 1.4

Version 1.4.0-alpha04

24 janvier 2024

Publication d'androidx.camera:camera-*:1.4.0-alpha04. Liste des commits de la version 1.4.0-alpha04

Nouvelles fonctionnalités

  • Nouvel artefact: Camera-effects: bibliothèque permettant d'appliquer des effets en temps réel à la sortie de CameraX, y compris Preview, VideoCapture et/ou ImageCapture. Cet artefact contient des implémentations OpenGL de l'API CameraEffect qui manipulent efficacement la sortie de l'appareil photo.
  • OverlayEffect: pour dessiner des superpositions avec l'API Canvas d'Android. Cela permet à l'appli d'appliquer un filigrane ou de mettre en surbrillance des objets détectés dans les sorties de l'appareil photo.
  • API DynamicRange pour le cas d'utilisation Preview: la plage dynamique peut désormais être définie sur le cas d'utilisation Preview, indépendamment du cas d'utilisation "Vidéo". Cela permet d'utiliser des plages dynamiques HDR telles que HLG10 pour la version preview uniquement. De nouvelles API sont également disponibles dans CameraInfo pour interroger les plages dynamiques compatibles avec chaque caméra.

Modifications apportées à l'API

  • Changement de nom : ScreenFlashUiCompleter devient ScreenFlashListener, et ScreenFlashUiCompleter#getExpirationTimeMillis devient le paramètre expirationTimeMillis de ScreenFlash#apply. (I13944).
  • Ajout d'API pour permettre de définir la plage dynamique dans le cas d'utilisation Preview et d'interroger les plages dynamiques prises en charge par chaque caméra. Cela permet d'utiliser des plages dynamiques HDR, telles que HLG10, avec le cas d'utilisation Preview seul, sans avoir à associer un VideoCapture en même temps. (If25e3).
  • Changement de nom : getMirroring() devient isMirroring(). (I47063)
  • Ajout de la prise en charge des estimations de latence pour la capture en temps réel dans CameraX. Les extensions Camera permettent aux applications d'utiliser une API qui fournit une estimation de la durée d'une capture. L'estimation tient compte des conditions de l'environnement actuel et de l'état de la caméra. Elle inclut le temps consacré au traitement des requêtes de capture multiframe, ainsi que le temps supplémentaire nécessaire pour encoder les tampons traités. (I05c3a).
  • ScreenFlashUiControl a été renommé ScreenFlash, ScreenFlashUiControl#applyScreenFlashUi a été renommé ScreenFlash#apply, ScreenFlashUiControl#clearScreenFlashUi a été renommé ScreenFlash#clear. Ajout de la méthode getScreenFlashUiApplyTimeoutSeconds au lieu d'exposer directement SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS. (Iccdd0).

Correction de bugs

  • Correction d'une fuite de mémoire qui empêchait la libération des activités ou des fragments lorsque les extensions étaient activées. (I14215)
  • Correction du problème où getZoomRatio renvoyait par erreur une valeur diminuée lors de l'application d'un ratio de zoom croissant. (I4aa0d, b/317543616).
  • L'événement ImageCapture#ScreenFlash#clear est invoqué immédiatement lorsque ImageCapture n'est pas associé ou lorsque la caméra est fermée. Correction de bugs qui ne l'appelaient jamais en raison de la mauvaise réalisation des captures dans ces scénarios. (If99f9).
  • Correction du plantage qui survenait lorsque le cycle de vie est arrêté avant la fin de la requête takePicture. (Idf017, b/306202751)
  • Correction du problème qui empêchait l'aperçu de l'appareil photo de devenir noir lorsque les extensions étaient activées sur certains appareils. (I1ffd0)
  • Correction d'une durée incorrecte d'enregistrement vidéo sur les appareils utilisant le SoC Snapdragon 778G. (If6aa7, b/316057919)

Version 1.4.0-alpha03

13 décembre 2023

Publication d'androidx.camera:camera-*:1.4.0-alpha03. Liste des commits de la version 1.4.0-alpha03

Nouvelles fonctionnalités

  • Ajout de CameraInfo.mustPlayShutterSound pour indiquer si le son d'un obturateur doit être déclenché conformément aux restrictions régionales. (Ifda84).
  • Ajout de OnImageCapturedCallback.onCaptureStarted et OnImageSavedCallback.onCaptureStarted pour envoyer une notification lorsque la caméra commence à exposer un cadre. À ce stade, nous vous recommandons d'émettre le son ou l'animation de l'obturateur. (Ic49b3).
  • Ajout de la prise en charge de la fonctionnalité de flash de l'écran dans CameraX pour la capture d'image avec la caméra avant. CameraX s'occupera de la gestion de l'API côté framework et synchronisera le timing avec les modifications de l'interface utilisateur de l'application si nécessaire (par exemple, le déclencheur de la précapture AE après la modification de la couleur/de la luminosité de l'écran de l'application). Les applications devront uniquement ajouter leurs implémentations côté UI dans l'interface ScreenFlashUiControl fournie à CameraX. (I8ae84).
  • Ajout de la prise en charge de l'implémentation de la fonctionnalité Flash de l'écran côté UI dans CameraX. Les applications pourront obtenir une implémentation ImageCapture.ScreenFlashUiControl de base à partir de PreviewView ou du ScreenFlashView récemment ajouté, qui ajoutera une vue en superposition monochrome et maximisera la luminosité de l'écran lors de la capture de photos avec flash de l'écran. (I1810e).

Modifications apportées à l'API

  • Prise en charge de nouvelles fonctionnalités d'extensions(post-affichage et capture de la progression du processus): ajout d'API ImageCapture#getImageCaptureCapabilities() pour que les applications puissent interroger les fonctionnalités de la post-vue et capturer le rappel de la progression du processus. Les applications peuvent activer la post-vue à l'aide de ImageCapture.Builder#setPostviewEnabled(). Vous pouvez sélectionner la taille de la post-vue à l'aide de ImageCapture.Builder#setPostviewResolutionSelector(). Lorsque vous appelez takePicture(), onPostviewBitmapAvailable et onCaptureProcessProgressed peuvent être implémentés dans OnImageSavedCallback ou OnImageCapturedCallback pour obtenir la post-vue et la notification de progression du traitement, le cas échéant. (I5cd88).
  • API permettant de calculer la transformation des coordonnées entre le capteur et le tampon actuel, avec un indicateur indiquant si la surface contient les informations d'orientation de l'appareil photo. (I59096)
  • Exposez l'API pour interroger PreviewCapabitlity dans la version preview de UseCase. (Ie5b6c).
  • Ajout d'API pour prendre en charge plus de qualités pour VideoCapture. Recorder.Builder#setVideoCapabilitiesSource(int) peut être utilisé avec VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES pour créer une instance Recorder compatible avec plus de qualités que VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE. Un cas d'utilisation courant est lorsque l'application s'efforce d'enregistrer des vidéos UHD dans la mesure du possible, mais que le CamcorderProfile de l'appareil n'inclut pas de paramètres UHD, même si le codec est capable d'enregistrer des vidéos UHD. (Iedbe2, b/263961771).
  • Ajout du getter/setter du format de sortie ImageAnalysis à CameraController. (I9a96c, b/308240643).

Correction de bugs

  • Depuis Appareil photo 1.3.1: amélioration des performances de ProcessCameraProvider#bindToLifecycle(). Le changement majeur consiste à optimiser le processus d'identification des combinaisons de tailles les plus appropriées pour UseCases. Les résultats optimaux varient en fonction des combinaisons UseCase spécifiques et du nombre de tailles de sortie compatibles pour les appareils cibles. (I454f2).
  • Autoriser l'utilisation de VideoCapture lorsque les extensions sont activées. (I91f32).
  • Résolution du problème lié aux grandes images enregistrées au format JPEG sur les appareils Samsung A71 et M51. Les images JPEG capturées contiennent des données de marge intérieure des zéros redondants dans le segment de données compressé JFIF. Il entraîne une taille de fichier extrême pour les images capturées. Les données de marge intérieure de ces 0 redondants sont supprimées pour que les images capturées aient une taille de fichier image normale. (I01afc, b/288828159).
  • Désactivez la prise en charge de ImageAnalysis sur les Pixel pour éviter le bug sur le Pixel qui renvoie accidentellement les tailles non vides ImageAnalysis. (I7ec31).
  • Résolution du problème de performances qui entraînait l'augmentation du chargement du processeur et de la consommation d'énergie lorsque les extensions étaient activées. (Ibdccb).
  • Ajout de Snapdragon 480 à CameraUseInconsistentTimebaseQuirk. Cela résout un problème sur Android 12 pour les appareils utilisant ce chipset, où le son des enregistrements est décalé par la durée pendant laquelle l'appareil est suspendu. (I58010).

Version 1.4.0-alpha02

18 octobre 2023

Publication d'androidx.camera:camera-*:1.4.0-alpha02. Liste des commits de la version 1.4.0-alpha02

Modifications apportées à l'API

  • Renommez l'API setCameraOpenRetryMaxTimeoutInMillisWhileResuming et renommez l'argument. (I72370).
  • Ajout d'API pour interroger les capacités de l'appareil et activer la stabilisation de la vidéo/de l'aperçu (I87544).
  • Ajout d'une API permettant de personnaliser le délai avant expiration de la nouvelle tentative d'ouverture de l'appareil photo. (I0c642).
  • Publication de ProcessCameraProvider.shutdownAsync en tant qu'API de test publique pour permettre l'utilisation du fournisseur de processus de caméra dans les suites de tests qui peuvent avoir besoin d'initialiser CameraX de différentes manières entre les tests. (I9eca7).
  • Ajout d'API permettant de configurer la plage dynamique, la fréquence d'images et le mode miroir pour la capture vidéo. (Ifb8f7).
  • Abandon de OutputSize et remplacement par ResolutionSelector. ResolutionSelector est un moyen plus complet de sélectionner des résolutions, et est cohérent avec l'API Camera-core. (I93abd, b/286801438).

Correction de bugs

  • Résolution du problème d'aperçu noir sur le Samsung Galaxy S23 Ultra 5G lorsque l'effet Bokeh des extensions ou la retouche du visage était activé avec ImageAnalysis sur la caméra arrière. (I2e8b1).
  • Correction des problèmes d'étirement de l'aperçu et de VideoCapture sur la Moto E5 Play. (73dce2).

Version 1.4.0-alpha01

20 septembre 2023

Publication d'androidx.camera:camera-*:1.4.0-alpha01. Liste des commits de la version 1.4.0-alpha01

Modifications apportées à l'API

  • Ajout d'une API pour accéder aux informations d'amplitude audio pendant l'enregistrement. (Id4925).

Correction de bugs

  • Améliorez la stabilité des extensions en vous assurant que les événements d'initialisation et de déinitialisation sont déclenchés dans le bon ordre. (Ib3b8e).
  • Correction de l'échec de la configuration de la session de capture pour dépasser la combinaison de surface compatible en raison de l'ajout d'une surface récurrente supplémentaire en interne. (Id718c).
  • Résolution du problème lié aux grandes images JPEG capturées sur l'appareil Vivo S16. Les images JPEG capturées contiennent des données de marge intérieure des zéros redondants dans le segment de données compressé JFIF. Le fichier des images capturées est alors trop volumineux. Les données de marge intérieure de ces 0 redondants sont supprimées pour que les images capturées aient une taille de fichier image normale. (I79505, b/299069235).
  • Correction du problème qui empêchait ImageAnalysis d'être lié à ImageCapture et Preview lorsque certains modes d'extension sont activés sur certains appareils. Ce correctif renvoie la valeur correcte lorsque les applications demandent la disponibilité de ImageAnalysis via ExtensionsManager#isImageAnalysisSupported(). (I7d538).
  • Mettez à jour JavaDoc en fonction du comportement. Au lieu de se terminer immédiatement, #setZoomRatio, #setLinearZoom et #enableTorch attendent que l'appareil photo soit prêt. Ajout d'informations sur l'obtention du champ de vision maximal avec l'API #takePicture. (I23588).

Version 1.3

Version 1.3.2

6 mars 2024

Publication d'androidx.camera:camera-*:1.3.2. La version 1.3.2 contient ces commits.

Correction de bugs

  • Correction d'un problème de métadonnées JPEG sur les appareils Samsung A24. CameraX enregistre désormais les images avec précision, et la fonction ImageProxy.toBitmap() renvoie les objets bitmap corrects. (I8d6eb, b/309005680).
  • Suppression de l'option de résolution 9 280 x 6 944 sur les appareils Redmi Note 9 Pro en raison de problèmes. (Ia23da).

Version 1.3.1

13 décembre 2023

Publication d'androidx.camera:camera-*:1.3.1. Liste des commits de la version 1.3.1

Correction de bugs

Amélioration des performances de ProcessCameraProvider#bindToLifecycle(). Le changement majeur consiste à optimiser le processus d'identification des combinaisons de tailles les plus appropriées pour UseCases. Les résultats optimaux varient en fonction des combinaisons UseCase spécifiques et du nombre de tailles de sortie compatibles pour les appareils cibles. (I454f2).

Voici quelques résultats de référence pour différents scénarios:

  • Quatre UseCases: Preview + ImageCapture + ImageAnalysis + VideoCapture

    • Google Pixel 7: environ 430 ms à 60 ms
    • Samsung Galaxy S23 Ultra: environ 540 ms à 45 ms
    • Samsung A53 5G: environ 115 ms à 70 ms
  • Trois UseCases: Preview + ImageCapture + ImageAnalysis

    • Google Pixel 7: environ 9 ms à 7 ms
    • Samsung Galaxy S23 Ultra: environ 6 ms à 5 ms
    • Samsung A53 5G: environ 32 ms à 12 ms
  • Ajout de Snapdragon 480 à CameraUseInconsistentTimebaseQuirk. Cela résout un problème sur Android 12 pour les appareils utilisant ce chipset, où le son des enregistrements est décalé par la durée pendant laquelle l'appareil est suspendu. (I58010).

Version 1.3.0

18 octobre 2023

Publication d'androidx.camera:camera-*:1.3.0. Liste des commits de la version 1.3.0

Changements importants depuis la version 1.2.0

Version 1.3.0-rc02

20 septembre 2023

Publication d'androidx.camera:camera-*:1.3.0-rc02. Liste des commits de la version 1.3.0-rc02

Correction de bugs

  • Améliorez la stabilité des extensions en vous assurant que les événements d'initialisation et de déinitialisation sont déclenchés dans le bon ordre. Correction de problèmes d'aperçu noir lors du changement de mode d'extension ou de changement de caméra. (Iddaac).
  • Correction du problème qui empêchait ImageAnalysis d'être lié à ImageCapture et Preview lorsque certains modes d'extension sont activés sur certains appareils. Ce correctif renvoie la valeur correcte lorsque les applications demandent la disponibilité de ImageAnalysis via ExtensionsManager#isImageAnalysisSupported(). (I7d538).
  • L'audio et la vidéo de la vidéo enregistrée n'étaient pas synchronisés lorsque le mode duplication était activé sur le NFC du Xiaomi Poco X3. Ce problème a été résolu. (I20b4c).

Version 1.3.0-rc01

23 août 2023

Publication d'androidx.camera:camera-*:1.3.0-rc01. Liste des commits de la version 1.3.0-rc01

Modifications apportées à l'API

  • Ajout de PendingRecording.asPersistentRecording pour permettre à un enregistrement d'enregistrer en continu pendant que le VideoCapture auquel l'Enregistreur est associé est relancé. (I517c6).

Correction de bugs

  • Résolution d'un plantage qui survenait lorsqu'un flux était partagé à la fois avec VideoCapture et Preview. Correction d'un écran noir sur les anciens appareils lorsque le partage de flux était activé.
  • Résolution du problème lié aux grandes images enregistrées au format JPEG sur les appareils Samsung S7 (SM-G930T, SM-G930V). Les images JPEG capturées contiennent des données de marge intérieure des zéros redondants dans le segment de données compressé JFIF. Le fichier des images capturées est alors trop volumineux. Les données de marge intérieure de ces 0 redondants sont supprimées pour que les images capturées aient une taille de fichier image normale. (I407b0, b/288828159).
  • Résolution du problème lié aux grandes images enregistrées au format JPEG sur les appareils des séries Samsung S22 (SM-S901B, SM-S901B/DS) et S22+ (SM-S906B). Les images JPEG capturées contiennent des données de marge intérieure des zéros redondants dans le segment de données compressé JFIF. La taille des fichiers des images capturées est d'environ 13 Mo sur l'appareil S22 SM-S901B/DS. Les données de marge intérieure de ces 0 redondants sont supprimées pour que les images capturées aient une taille de fichier image normale. (I73be9, b/288828159).
  • Résolution du problème lié aux grandes images capturées au format JPEG sur les appareils Samsung des séries A5, A52, A70 et A72. Les images JPEG capturées contiennent des données de marge intérieure des zéros redondants dans le segment de données compressé JFIF. Il entraîne une taille de fichier extrême (par exemple, environ 32 Mo, voire 96 Mo). Les données de marge intérieure de ces 0 redondants sont supprimées pour que les images capturées aient une taille de fichier image normale. (I97c4d, b/288828159).
  • Correction du plantage natif lors de la prise de photos avec les extensions activées. (I698f5)

Version 1.3.0-beta02

26 juillet 2023

Publication d'androidx.camera:camera-*:1.3.0-beta02. Liste des commits de la version 1.3.0-beta02.

Correction de bugs

  • Utilisation de la lampe de poche comme flash pour les variantes Pixel 4 et 5 afin d'améliorer la qualité de capture par faible luminosité. (I56ff5, b/280221967)
  • Résolution du problème lié aux grandes images enregistrées au format JPEG sur les appareils Samsung A5 (2017). Les images JPEG capturées contiennent des données de marge intérieure des zéros redondants dans le segment de données compressé JFIF. La taille du fichier des images capturées est d'environ 32 Mo. Les données de marge intérieure de ces 0 redondants sont supprimées pour que les images capturées aient une taille de fichier image normale. (I29837, b/288828159).
  • Correction du problème de déclenchement de la nouvelle tentative en cas d'échec de la capture sur les appareils problématiques mentionnés dans CaptureFailedRetryQuirk. (I7b589).

Version 1.3.0-beta01

21 juin 2023

Publication d'androidx.camera:camera-*:1.3.0-beta01. Liste des commits de la version 1.3.0-beta01

Modifications apportées à l'API

  • Le nom de la fonction ResolutionSelector.Builder#setHighResolutionEnabledFlag(int) a été renommé setAllowedResolutionMode et les constantes ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON en PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION/PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE. (If84e8)
  • Suppression des API obsolètes ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) et VideoCapture.setTargetRotationDegrees(int). (Id8e77).
  • La classe DynamicRange représente la plage dynamique des images. Cela permet de sélectionner des formats High Dynamic Range comme sortie de VideoCapture à VideoCapture.Builder#setDynamicRange(). (Ib0377).
  • Ajout d'une API isImageAnalysisSupported à ExtensionsManager, qui permet aux applications de déterminer si un cas d'utilisation ImageAnalysis peut être lié avec Preview et ImageCapture lorsque les extensions sont activées. (I1bc63).
  • La nouvelle classe VideoCapabilities obtenue à partir de Recorder peut être utilisée pour interroger les plages dynamiques et les qualités compatibles pour l'enregistrement vidéo sur l'appareil. Les méthodes getSupportedQualities() et isQualitySupported() de QualitySelector vont être abandonnées. Veuillez plutôt utiliser les méthodes getSupportedQualities() et isQualitySupported() de VideoCapabilities. (I04014).
  • Changement de nom : CameraController#setVideoCaptureTargetQuality() devient setVideoCaptureQualitySelector et utilise l'argument QualitySelector, ce qui offre plus de flexibilité pour configurer la qualité vidéo. CameraController#getVideoCaptureTargetQuality() est donc remplacé par getVideoCaptureQualitySelector. (I520ed).
  • Suppression de l'annotation expérimentale pour les fonctionnalités vidéo. Les fonctionnalités vidéo sont désormais stables. (I1a113).

Correction de bugs

  • Utilisez la lampe de poche comme flash sur les modèles Samsung SM-A320 pour améliorer la vitesse et la qualité de l'image capturée par faible luminosité. (I6a022, b/286190938).
  • Ajout de la prise en charge du format ImageFormat.JPEG pour ImageProxy.toBitmap(). Si le tableau d'octets JPEG ne peut pas être décodé, une erreur UnsupportedOperationException est générée. (I81958, b/282057603).

Version 1.3.0-alpha07

24 mai 2023

Publication d'androidx.camera:camera-*:1.3.0-alpha07. Liste des commits de la version 1.3.0-alpha07

Nouvelles fonctionnalités

  • La nouvelle API VideoCapture.Builder# setTargetFrameRate(Range) permet d'enregistrer des enregistrements vidéo à d'autres fréquences d'images que la fréquence par défaut de l'appareil. Vous pouvez interroger les fréquences d'images disponibles pour les enregistrements via la nouvelle API CameraInfo#getSupportedFrameRates().

Modifications apportées à l'API

  • Changement de nom : les constantes ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON deviennent ALLOWED_RESOLUTIONS_NORMAL/SLOW, et le nom de la fonction setHighResolutionEnabledFlag du compilateur devient setAllowedResolutionMode. (Iae817).
  • CameraInfo#getSupportedFrameRateRanges() renvoie désormais un Set au lieu de List pour mieux indiquer que les plages ne sont pas ordonnées. (I02f43).
  • Ajout d'un écouteur d'erreurs à CameraEffect pour gérer les erreurs irrécupérables. (Ice471)
  • Ajout d'un constructeur public dans ResolutionInfo pour améliorer la testabilité. (If6d1c)
  • Ajout d'une API UseCase.snapToSurfaceRotation(int) pour remplacer l'utilisation de setTargetRotationDegrees et abandon des API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) et VideoCapture.setTargetRotationDegrees(int). (Ia9010).
  • Ajout des API Preview#getTargetFrameRate et Preview.Builder#setTargetFrameRate pour pouvoir définir et récupérer la fréquence d'images cible pour le cas d'utilisation Preview. (If4f22)
  • VideoRecordEvent.Finalize se terminera désormais avec le code d'erreur ERROR_RECORDING_GARBAGE_COLLECTED lorsque l'objet Recording est arrêté en raison de la récupération de mémoire. (Iba974).

Correction de bugs

  • Correction de NullPointerException lorsque les tailles de sortie mises en cache dans StreamConfigurationMapCompat étaient nulles. (Idf124, b/282025204).
  • Correction du problème qui empêchait Preview.setSurfaceProvider(null) de suspendre l'aperçu dans les extensions. (Ia903e)
  • Correction d'un problème qui entraînait l'envoi d'une ConcurrentModificationException lors de l'ouverture de l'appareil photo lorsque VideoCapture était lié. (Ic8ac4).

Version 1.3.0-alpha06

19 avril 2023

Publication d'androidx.camera:camera-*:1.3.0-alpha06. Liste des commits de la version 1.3.0-alpha06.

Nouvelles fonctionnalités

  • L'appareil photo simultané est une nouvelle fonctionnalité introduite par Android 11. Elle permet de diffuser simultanément des flux vidéo de plusieurs caméras. Par exemple, elle permet à un appareil de faire fonctionner en même temps les caméras avant et arrière. CameraX n'est actuellement compatible qu'avec deux appareils photo simultanés, ce qui permet à deux caméras fonctionnant en même temps, avec un maximum de deux {@link UseCase}s liés à chacune. La résolution maximale est de 720p ou 1440p. Pour en savoir plus, consultez le lien suivant et accédez à CameraManager#getConcurrentCameraIds().
  • Présentation de la nouvelle API ResolutionSelector, qui couvre les fonctionnalités suivantes :
    • Les applications peuvent spécifier le format et les stratégies de résolution pour choisir la résolution la plus adaptée à leurs besoins.
    • Toutes les tailles et tous les paramètres de format sont exprimés dans les coordonnées du capteur de la caméra.
    • Les applications peuvent implémenter un filtre de résolution personnalisé pour organiser les tailles compatibles dans l'ordre souhaité.
    • Les applications peuvent également activer la capture en haute résolution pour obtenir des images de meilleure résolution. Toutefois, notez que l'utilisation d'une haute résolution peut ralentir la capture.
    • Ajout des API de mise en miroir VideoCapture. Les vidéos enregistrées par VideoCapture ne sont pas dupliquées par défaut. Toutefois, l'aperçu de l'appareil photo s'affiche par défaut sur la caméra avant. Les API de mise en miroir VideoCapture permettent de s'aligner sur l'aperçu de l'appareil photo lorsque vous utilisez la caméra avant. Il y a trois MirrorMode, OFF, ON et ON_FRONT_ONLY. Pour aligner l'aperçu de la caméra, il est recommandé d'utiliser ON_FRONT_ONLY, ce qui signifie que la duplication d'écran n'est pas activée pour la caméra arrière, mais pas pour la caméra avant.

Modifications apportées à l'API

  • Exposition de la nouvelle API ResolutionSelector. Les applications peuvent spécifier des stratégies de format et de résolution avec des règles de remplacement ou un filtre de résolution personnalisé pour obtenir le résultat souhaité. Les applications peuvent spécifier un indicateur pour activer la capture haute résolution. CameraX pourra ainsi sélectionner des résolutions plus élevées lors de la prise de photos ou de vidéos. Toutefois, notez que l'utilisation d'une haute résolution peut ralentir la capture. (Ibed95).
  • Les plages de FPS compatibles avec l'algorithme AE peuvent désormais être interrogées via CameraInfo#getSupportedFrameRateRanges(). (Iaa67f).
  • Consolidez les noms de toutes les méthodes de fréquence d'images dans l'utilisation de "FrameRate". Correction de l'erreur Javadoc dans VideoCapture#getTargetFrameRate(). (I83304)
  • Abandon des anciennes API setTargetAspectRatio et setTargetResolution. Veuillez plutôt utiliser la nouvelle API ResolutionSelector. (I542c3).
  • Ajout d'API publiques pour la double caméra simultanée, y compris :
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn() et ConcurrentCameraConfig, SingleCameraConfig et ConcurrentCamera (Iab1c1)
  • Conversion de ImageProcessor.Response#getOutputImage en NonNull. (Ib9c60)
  • Ajout des API de mise en miroir VideoCapture, y compris VideoCapture.Builder.setMirrorMode(int) et VideoCapture.getMirrorMode(). Les API sont utiles pour les applications qui nécessitent que l'enregistrement vidéo soit cohérent avec le comportement courant d'aperçu de la caméra (par exemple, l'aperçu de la caméra arrière n'est pas dupliqué, mais l'aperçu de la caméra avant). (I713b6, b/194634656).
  • Ajout de l'API setTargetFrameRate() dans l'API VideoCapture.Builder et getTargetFramerate() dans VideoCapture. (I109d4)
  • Ajout à SurfaceOutput d'extension fermable et masquage du constructeur public de SurfaceOutput.Event. (I60ea8).
  • Ajout de Recording.mute pour couper ou réactiver le son d'un enregistrement en cours de traitement. RecordingStats contient AudioStats.AUDIO_STATE_MUTED lorsque le son de l'enregistrement en cours de traitement est explicitement coupé. (Ie17fc).
  • Mise à jour du paramètre #setEffects() désormais non nul. Ajout d'une API #clearEffects() pour effacer les effets. L'application doit appeler #clearEffects() pour supprimer les effets. (I4b4d9).
  • Ajout d'un deuxième constructeur pour ViewfinderSurfaceRequest.Builder afin d'utiliser un compilateur pour copier le constructeur. (I621a7)

Correction de bugs

  • Correction du problème de plantage des applications appelant l'API Extensions lors de la fermeture de l'appareil photo. (Ib27e5)
  • Correction d'un problème qui empêchait VideoCapture de fonctionner avec la caméra avant sur certains appareils. Par exemple, sur le Samsung Galaxy S23 et le Xiaomi 2107113SG. (Ibec7e, b/270656244).
  • Correction d'un problème qui échouait systématiquement pour prendre des photos à l'aide du fichier du dossier public de la mémoire de stockage externe sous Android 10 ou version ultérieure. Notez que sous Android 10, pour prendre des photos à l'aide du fichier du dossier public de la mémoire de stockage externe, vous devez également définir requestLegacyExternalStorage sur "true" dans le tag d'application. (I11b2c).
  • Correction d'un plantage de RejectedExecutionException dans DefaultSurfaceProcessor. Le plantage peut se produire lorsque VideoCapture est lié et que l'activité est suspendue. (Idb46a, b/273713906).

Version 1.3.0-alpha05

22 mars 2023

Publication d'androidx.camera:camera-*:1.3.0-alpha05. Liste des commits de la version 1.3.0-alpha05.

Modifications apportées à l'API

  • Ajout des API de rotation VideoCapture, y compris VideoCapture.Builder.setTargetRotation(int), VideoCapture.setTargetRotation(int), VideoCapture.setTargetRotationDegrees(int) et VideoCapture.getTargetRotation(). Les API sont utiles pour les applications qui verrouillent l'orientation de l'appareil. ImageCapture.setTargetRotationDegrees(int) et ImageAnalysis.setTargetRotationDegrees(int) sont également ajoutés. (Id3ffe, b/205242781).
  • Autorisez VIDEO_CAPTURE et PREVIEW|VIDEO_CAPTURE comme cibles d'effets. Les effets qui ciblent VIDEO_CAPTURE seront appliqués au cas d'utilisation VideoCapture. Les effets qui ciblent PREVIEW|VIDEO_CAPTURE seront appliqués à un flux partagé avant d'être copiés dans l'aperçu et dans le flux VideoCapture. (Iee6f3).

Correction de bugs

  • Depuis Appareil photo 1.2.2: correction du problème qui empêchait les extensions CameraX de fonctionner correctement lorsque ProGuard était activé sur certains appareils tels que le Pixel. (I90aa2)
  • Correction d'un bug PreviewView qui provoquait la déformation de l'aperçu lors de la rotation si l'application gérait elle-même l'orientation de l'écran. Cela ne se produit que sur certains appareils. Elle peut être reproduite sur les Pixel a4, Pixel 5 et Pixel 6a. (I14340, b/223488673).

Version 1.3.0-alpha04

22 février 2023

Publication d'androidx.camera:camera-*:1.3.0-alpha04. Liste des commits de la version 1.3.0-alpha04.

Nouvelles fonctionnalités

Nouvelle fonctionnalité permettant de prendre en charge des combinaisons de surfaces non compatibles précédemment en partageant un flux avec plusieurs cas d'utilisation.

  • Auparavant, lors de la liaison de "Preview, VideoCapture, ImageAnalysis" au niveau matériel COMPLET et inférieur, ou de la liaison de "Preview, VideoCapture, ImageCapture" au niveau matériel LEGACY de l'appareil photo, CameraX renvoyait IllegalArgumentException.
  • Les liaisons fonctionnent désormais sans exception. CameraX utilise OpenGL pour copier un flux partagé à la fois dans Preview et VideoCapture.
  • Comme le coût de la copie tampon, l'application peut constater une augmentation de la latence et de la consommation d'énergie.

Modifications apportées à l'API

  • Ajout de l'API pour convertir ImageProxy en Bitmap. Le format ImageProxy compatible est ImageFormat.YUV_420_888 et PixelFormat.RGBA_8888. Si le format n'est pas valide, IllegalArgumentException est renvoyé. (Ic7110)
  • Ajoutez CoroutineCameraViewfinder pour permettre la configuration du viseur à l'aide de fonctions de suspension en Kotlin. (I657bc)
  • Ajout d'un constructeur public pour ViewfinderSurfaceRequest. Il offre une certaine flexibilité lorsque l'utilisateur ne peut pas fournir CameraCharacteristics. (Ie6549)

Correction de bugs

  • Correction du plantage lié aux extensions sur certains appareils Samsung lors de la mise en pause ou de la reprise trop rapide de l'application. (Iaca26)

Version 1.3.0-alpha03

25 janvier 2023

Publication d'androidx.camera:camera-*:1.3.0-alpha03. Liste des commits de la version 1.3.0-alpha03

Modifications apportées à l'API

  • Ajout de CameraInfo.getIntrinsicZoomRatio pour fournir des informations sur l'angle de vue par rapport à la caméra par défaut. (Ib300c)
  • Ajout de CameraInfo.getLensFacing pour fournir des informations sur l'orientation de l'objectif. Ajout de la fonctionnalité expérimentale CameraSelector#LENS_FACING_EXTERNAL pour sélectionner des caméras externes. (Icaf3e)
  • Ajout de #setEffect() à CameraController pour pouvoir ajouter des effets à la sortie de la caméra. (I1d21f)
  • Ajout de la méthode invalidate() à SurfaceRequest. Le fournisseur de surface peut signaler que la surface précédemment fournie n'est plus valide. (Idc649)
  • Ajout d'une API ImageProcessor. Cette interface permet d'injecter des effets de post-traitement dans le pipeline ImageCapture. (I575c6)
  • Ajout de l'API Recorder.Builder.setAspectRatio(), qui peut être combinée à QualitySelector pour prendre en charge plus de résolutions vidéo. (I8a082)
  • Ajout de Recorder.Builder#setTargetVideoEncodingBitRate pour définir l'encodage vidéo cible BitRate et Recorder#getTargetVideoEncodingBitRate pour obtenir le débit d'encodage vidéo cible. (I5984d)

Correction de bugs

  • Résolution de l'échec d'ImageCapture et lorsque le mode Flash est activé en l'absence de flash. (I9e8b4, b/263391112)
  • Correction d'un problème de corruption d'image JPEG lors de l'écriture de données de localisation Exif sur certains appareils Samsung équipés d'Android 12. (Ib7086, b/263747161, b/263289024)
  • Lorsque vous réglez la lampe de poche ou le zoom avant la fin de l'initialisation de la caméra, par exemple lorsque vous appelez CameraController#enableTorch, l'action en attente est mise en cache et envoyée une fois l'initialisation terminée. (I11e92, b/264157663)

Version 1.3.0-alpha02

7 décembre 2022

Publication d'androidx.camera:camera-*:1.3.0-alpha02. Liste des commits de la version 1.3.0-alpha02

Modifications apportées à l'API

  • Ajout d'une API pour appliquer l'effet de post-traitement à la sortie de Preview. (Ic17d5)
  • Remplacement du nom OutputOptions.getDurationLimit par OutputOptions.getDurationLimitMillis et du nom OutputOptions.setDurationLimit par OutputOptions.setDurationLimitMillis. (I91f0c)
  • Ajout de la classe AudioConfig pour gérer le paramètre audio lors de l'enregistrement vidéo. Déplacement de l'annotation @RequiresPermission, des fonctions startRecording vers AudioConfig, pour éviter les demandes d'autorisation inutiles dans les cas où l'audio n'est pas nécessaire. (I28755)
  • Suppression des classes Metadata, OnVideoSavedCallback, OutputFileOptions et OutputFileResults, qui ne sont plus utilisées après la mise en œuvre de la nouvelle API de capture vidéo. (I38cd8)
  • Mise en œuvre de la nouvelle API de capture vidéo. Remplacement des méthodes getVideoCaptureTargetSize et setVideoCaptureTargetSize par les méthodes getVideoCaptureTargetQuality et setVideoCaptureTargetQuality, car setTargetResolution n'est plus pris en charge. (I2a1d5)

Correction de bugs

  • Suppression de l'API core.VideoCapture obsolète. (I531e0)
  • Correction du problème qui empêchait le rappel onError d'enregistrer des images sans l'autorisation de stockage. (I936db, b/244807669)
  • Amélioration de la qualité et de la fiabilité des extensions pour appareil photo. En raison de problèmes liés à la prise en charge de l'effet bokeh, à la capture d'images et à la reprise après aperçu, les extensions pour appareil photo sont désactivées sur les appareils Motorola qui utilisent la version 1.1.0 ou antérieure de Camera Extensions. (Id3ce3)
  • Résolution du plantage natif lors du recadrage des vidéos via ViewPort sur les anciens appareils. (I16b8a, b/251357665)

Version 1.3.0-alpha01

9 novembre 2022

Publication d'androidx.camera:camera-*:1.3.0-alpha01. Liste des commits de la version 1.3.0-alpha01

Nouvelles fonctionnalités

  • Officialisation de la publication de Camera-viewfinder. Camera-viewfinder fournit un widget de viseur de base pouvant afficher le flux de la caméra pour Camera2. Consultez l'exemple de code pour un cas pratique.

Modifications apportées à l'API

  • Ajout de OutputOptions.setDurationLimit pour permettre de définir une durée maximale de vidéo. Les enregistrements sont automatiquement finalisés lorsqu'ils dépassent la durée spécifiée. (I902a0)
  • Ajout de l'état d'erreur audio AudioStats.AUDIO_STATE_SOURCE_ERROR pour l'enregistrement vidéo. Survient en cas d'erreur ou d'échec de la configuration de la source audio. (I37410)

Correction de bugs

  • Ajout d'un traitement particulier pour permettre à certains appareils problématiques de réessayer une fois en cas d'échec de la capture. (Id4795)
  • Correction du problème d'écran noir lié à l'implémentation de PreviewView et SurfaceView sur ViewPager2. Dans le cadre de ce correctif, PreviewView réutilisera sa SurfaceView si la résolution demandée n'est pas modifiée. (Ib3f27)
  • Prise en charge du recadrage des vidéos (fonctionnalité WYSIWYG) lorsque l'API ViewPort ou CameraController est utilisée. (Ifbba8, b/201085351)
  • Correction du problème qui empêchait la vidéo capturée avec la caméra avant d'être enregistrée sur Huawei P40 Lite. (I87c57, b/250807400)

Version 1.2

Version 1.2.3

24 mai 2023

Publication d'androidx.camera:camera-*:1.2.3. Liste des commits de la version 1.2.3

Correction de bugs

  • Correction d'un problème qui empêchait VideoCapture de fonctionner avec la caméra avant sur certains appareils. Par exemple, sur le Samsung Galaxy S23 et le Xiaomi 2107113SG. (Ibec7e, b/270656244).

Version 1.2.2

22 mars 2023

Publication d'androidx.camera:camera-*:1.2.2. Liste des commits de la version 1.2.2

Correction de bugs

  • Correction du problème qui empêchait les extensions CameraX de fonctionner correctement lorsque ProGuard était activé sur certains appareils tels que le Pixel. (I90aa2)

Version 1.2.1

25 janvier 2023

Publication d'androidx.camera:camera-*:1.2.1. Liste des commits de la version 1.2.1

Correction de bugs

  • Correction d'un problème de corruption d'image JPEG lors de l'écriture de données de localisation Exif sur certains appareils Samsung équipés d'Android 12. (b/263289024)

Version 1.2.0

7 décembre 2022

Publication d'androidx.camera:camera-*:1.2.0. Liste des commits de la version 1.2.0

Changements importants depuis la version 1.1.0

  • Ajout d'une bibliothèque : camera-mlkit-vision. Intégrez facilement CameraX à de nombreuses fonctionnalités MLKit, y compris la lecture de codes-barres, la détection de visages, la détection de texte, etc. Ajout de MLKitAnalyzer en tant que nouvelles API.
  • Nouvelle API Zero-Shutter Lag expérimentale. Optimise le pipeline de capture afin d'améliorer la latence tout en préservant une bonne qualité d'image. Lorsque le mode de capture est défini sur CAPTURE_MODE_ZERO_SHUTTER_LAG, la latence entre l'appui sur le bouton de l'obturateur et la prise de photo est réduite au maximum, contrairement aux autres modes de capture. Pour les appareils qui ne sont pas compatibles avec ZERO_SHUTTER_LAG, CAPTURE_MODE_MINIMIZE_LATENCY est activé à la place.
  • Abandon de android.camera.core.VideoCapture.
  • Ajout de setStreamUseCase() en tant qu'API Camera2Interop publique.
  • Ajout d'une condition de niveau d'API pour setOutputImageRotationEnabled.
  • ImageAnalysis.Analyzer#getTargetResolutionOverride() a été renommé ImageAnalysis.Analyzer#getDefaultTargetResolution().
  • Ajout d'une API pour définir les métadonnées de localisation sur la vidéo enregistrée.
  • Correction du problème de faible fréquence d'images lors de l'utilisation de VideoCapture et de Preview au format 16:9.
  • Correction du problème d'aperçu noir qui survenait lorsque l'extension BOKEH était activée sur certains appareils Samsung et que l'utilisateur changeait de caméras.
  • Résolution du problème d'étirement de Preview/VideoCapture affectant les appareils Samsung J7 Prime (SM-G610M) et J7 (SM-J710MN) utilisant le niveau d'API 27.
  • Ce problème étant résolu, la solution de contournement consistant à inverser horizontalement la région AF pour les caméras avant sur Samsung Android T a été désactivée.

Version 1.2.0-rc01

24 octobre 2022

Publication d'androidx.camera:camera-*:1.2.0-rc01. Liste des commits de la version 1.2.0-rc01

Modifications apportées à l'API

  • Ajout de l'API setStreamUseCase pour OutputConfiguration. L'utilisateur peut spécifier le cas d'utilisation Stream pour la session de streaming, en ignorant la logique interne de CameraX pour imposer ce cas d'utilisation afin d'optimiser en fonction de ses besoins. (Ib1a95)

Correction de bugs

  • Résolution du problème d'étirement de Preview/VideoCapture affectant les appareils Samsung J7 Prime (SM-G610M) et J7 (SM-J710MN) utilisant le niveau d'API 27. La résolution 1920 × 1080 entraîne l'étirement des Preview/VideoCapture images. Ajout d'une solution de contournement permettant de ne pas sélectionner la résolution 1920 × 1080 pour Preview ou VideoCapture, ce qui évite le problème d'étirement de l'image. (I0e04e)
  • Correction du problème de faible fréquence d'images lors de l'utilisation de VideoCapture et de Preview au format 16:9 sur certains appareils Huawei. (If8c88, b/223643510)
  • Résolution du problème d'ouverture de la caméra lorsque SurfaceProvider de Preview n'est pas défini. Dans le cadre de ce correctif, Preview sans SurfaceProvider défini ne sera plus configuré dans la session de capture de la caméra. (I99681)

Version 1.2.0-beta02

21 septembre 2022

Publication d'androidx.camera:camera-*:1.2.0-beta02. Liste des commits de la version 1.2.0-beta02

Modifications apportées à l'API

  • Ajout d'une condition de niveau d'API pour setOutputImageRotationEnabled. (I26e3e, b/240993561)

Correction de bugs

  • Ce problème étant résolu, la solution de contournement consistant à inverser horizontalement la région AF pour les caméras avant sur Samsung Android T a été désactivée. (I05f69)
  • Correction du problème d'aperçu noir qui survenait lorsque l'extension BOKEH était activée sur certains appareils Samsung et que l'utilisateur changeait de caméras. (If6168)

Version 1.2.0-beta01

24 août 2022

Publication d'androidx.camera:camera-*:1.2.0-beta01. Liste des commits de la version 1.2.0-beta01

Nouvelles fonctionnalités

  • Nouvelle bibliothèque camera-mlkit-vision. Intégrez facilement CameraX à de nombreuses fonctionnalités MLKit, y compris la lecture de codes-barres, la détection de visages, la détection de texte, etc. Pour consulter l'exemple de code, cliquez ici.
  • Nouvelle API Zero-Shutter Lag expérimentale. Optimise le pipeline de capture afin d'améliorer la latence tout en préservant une bonne qualité d'image. Lorsque le mode de capture est défini sur CAPTURE_MODE_ZERO_SHUTTER_LAG, la latence entre le bouton de l'obturateur et la prise de photo est réduite au maximum, contrairement aux autres modes de capture. Pour les appareils qui ne sont pas compatibles avec ZERO_SHUTTER_LAG, CAPTURE_MODE_MINIMIZE_LATENCY est activé à la place.
  • Publication des API ImageAnalysis.Analyzer et MLKitAnalyzer en tant qu'API officielles.
  • API exposée pour définir les métadonnées de localisation sur la vidéo enregistrée.
  • ImageAnalysis.Analyzer#getTargetResolutionOverride() a été renommé ImageAnalysis.Analyzer#getDefaultTargetResolution().

Correction de bugs

  • Correction du problème de capture d'image Alps k61v1_basic_ref. Les images JPEG capturées à partir de HAL (couche d'abstraction matérielle) présentent des métadonnées Exif incorrectes. Les métadonnées Exif ne comportent pas la balise 0xffd9 ou 0xffda permettant à ExifInterface d'analyser correctement les attributs. La capture des images au format YUV, puis leur compression en images de sortie JPEG permettent de résoudre ce problème. (I45abb)

Version 1.2.0-alpha04

27 juillet 2022

Publication d'androidx.camera:camera-*:1.2.0-alpha04. Liste des commits de la version 1.2.0-alpha04

Modifications apportées à l'API

  • ImageAnalysis.Analyzer#getTargetResolutionOverride() a été renommé ImageAnalysis.Analyzer#getDefaultTargetResolution(). Le comportement est également modifié de sorte que la valeur renvoyée par cette méthode puisse être remplacée par la valeur d'ImageAnalysis#setTargetResolution(). (If1d36)
  • API exposée pour définir les métadonnées de localisation sur la vidéo enregistrée. Un objet android.location.Location peut être défini via la nouvelle API androidx.camera.video.OutputOptions.Builder.setLocation(Location). (I313a0, b/204197544)

Correction de bugs

  • Correction du problème lié à la prise de photo avec l'aperçu non lié (Ie70b6, b/235119898).
  • Résolution du problème de plantage qui se produisait dans Recorder lors de la tentative d'enregistrement alors que la source audio n'était pas disponible. (I9f652)

Version 1.2.0-alpha03

29 juin 2022

Publication d'androidx.camera:camera-*:1.2.0-alpha03. Liste des commits de la version 1.2.0-alpha03

Modifications apportées à l'API

  • Suppression de l'annotation expérimentale pour ImageAnalysis.Analyzer et MLKitAnalyzer. (I0ff22)

Correction de bugs

  • Ajout d'un délai avant expiration par défaut de 5 000 ms pour terminer la partie AF avec isFocusSuccessful défini sur "false" si FocusMeteringAction n'est pas annulé et que la partie AF n'est pas convergée pendant la durée. (Ibc2e3)
  • Correction du problème lié à la prise de photo avec l'aperçu non lié (I1d3a2, b/235119898).
  • Activation de la mise en œuvre de l'extension avancée et mise à jour de l'interface des extensions de prise en charge de CameraX avec l'installation de la version 1.2 (I92256).

Version 1.2.0-alpha02

1er juin 2022

Publication d'androidx.camera:camera-*:1.2.0-alpha02. Liste des commits de la version 1.2.0-alpha02

Nouvelles fonctionnalités

  • API CameraX Zero-Shutter Lag exposée comme API expérimentale.

Modifications apportées à l'API

  • Ajout du mode de capture CAPTURE_MODE_ZERO_SHUTTER_LAG dans ImageCapture et de isZslSupported dans CameraInfo pour interroger la fonctionnalité de l'appareil. Le mode CAPTURE_MODE_ZERO_SHUTTER_LAG vise à fournir la latence minimale pour la capture instantanée. Il est implémenté sur la base de la mémoire tampon en anneau, qui met en cache les résultats de capture intermédiaires pour un permettre de les traiter à nouveau ultérieurement lorsque l'utilisateur appuie sur des boutons pour prendre des photos. Si {@link VideoCapture} est associé, si le mode Flash n'est pas désactivé ou si l'extension OEM est activée, ce mode est désactivé automatiquement. (I9ae74)
  • Ajout de la méthode ImageAnalysis.getBackgroundExecutor() (Icc945)

Correction de bugs

  • Correction de la méthode ImageCapture "takePicture" pour désactiver la lampe de poche sur les appareils signalés. (Ib5eb5, b/228272227)
  • Correction d'un bug qui empêchait le traitement de l'erreur AssertionError lors de l'obtention de la caractéristique CONTROL_ZOOM_RATIO_RANGE (/Ia248a, b/231701345)

Version 1.2.0-alpha01

18 mai 2022

Publication d'androidx.camera:camera-*:1.2.0-alpha01. Liste des commits de la version 1.2.0-alpha01

Nouvelles fonctionnalités

  • Lancement de la nouvelle bibliothèque camera-mlkit-vision

Corrections de bugs

  • Résolution d'un problème d'enregistrement d'une vidéo UHD par QualitySelector lorsqu'une stratégie de secours est activée. Ce problème survient lorsque VideoCapture est associé à ImageCapture et Preview sur un appareil photo de niveau matériel FULL ou supérieur. Si la stratégie de secours QualitySelector est utilisée, la résolution Full HD n'est pas correctement appliquée à VideoCapture. La résolution UHD est compatible avec cette combinaison de cas d'utilisation et doit être adoptée. (I0e788, b/230651237)
  • Correction de NullPointerException au niveau d'ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)
  • Correction du comportement de la mise en pause asynchrone d'androidx.camera.video.Recorder (Ia8ce8).

Camera-Camera2, Camera-Core, Camera-Lifecycle et Camera-Video version 1.1.0

Version 1.1.0

29 juin 2022

Publication d'androidx.camera:camera-*:1.1.0. Liste des commits de la version 1.1.0

Modifications importantes depuis la version 1.0.0

  • Bibliothèques Landed View, Extension et Video Capture en tant que première version RC. À partir de la version 1.1.0-beta01, toutes les bibliothèques CameraX adopteront le même numéro de version. Les développeurs pourront ainsi suivre les versions beaucoup plus facilement et réduire la complexité des matrices de compatibilité des versions de grande envergure.
  • Introduction de nouvelles API et fonctionnalités publiques, y compris :
  • Ajout de la bibliothèque camera-video officielle pour prendre en charge les cas d'utilisation de capture vidéo.
  • Fonctionnalités de conversion et de rotation de YUV à RVB (ImageAnalysis.Builder.setOutputImageRotationEnabled et setOutputImageFormat).
  • Activation du mode multifenêtre en permettant aux applications CameraX de réactiver l'appareil photo lorsqu'il est interrompu par une autre application et qu'il est ciblé de nouveau.
  • Correction de certains problèmes d'aperçu pour garantir le bon fonctionnement de la CameraX sur les appareils pliables.
  • Ajout d'une API CameraState exposée via CameraInfo.
  • Ajout d'une API ProcessCameraProvider.getAvailableCameraInfos() pour récupérer directement des informations sur les appareils photo disponibles.
  • Format de sortie JPEG pour ImageCapture#OnImageCapturedCallback lorsque les extensions sont activées.
  • Ajout d'une API isFocusMeteringSupported dans CameraInfo, qui permet aux applications de vérifier si l'élément FocusMeteringAction donné est compatible ou non avec l'appareil photo actuel.
  • API getResolutionInfo exposée pour fournir les informations de résolution pour Preview, ImageCapture et ImageAnalysis.
  • Ajout d'une API ImageCapture.Builder#setJpegQuality permettant de modifier la qualité de compression des images JPEG de sortie lorsque des photos sont prises.
  • Ajout de CameraSelector#filter à l'API publique pour filtrer une liste de CameraInfos basée sur un CameraSelector.
  • Ajout de Camera2CameraControl.clearCaptureRequestOptions pour effacer les options de demande de capture existantes.
  • Ajout d'une API expérimentale permettant d'utiliser CameraController avec des bibliothèques de traitement d'images externes comme MLKit.
  • Ajout de l'API expérimentale CameraInfo#getCameraSelector(), qui renvoie un CameraSelector unique à son appareil photo.
  • Passage de plusieurs API expérimentales au stade d'API publiques officielles.
  • Remplacement de l'annotation @Experimental par @RequiresOptIn pour les API expérimentales. Pour appeler des API expérimentales, utilisez androidx.annotation.OptIn au lieu d'androidx.annotation.experimental.UseExperimental.
  • Passage des API expérimentales suivantes au stade d'API officielles : CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(),
  • API @ExperimentalCameraFilter
  • API expérimentales de correction d'exposition
  • Promotion de l'API expérimentale UseCaseGroup pour camera-core, camera-lifecycle et camera-video. Ajout de ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection et ViewPort.Builder#setScaleType pour personnaliser la fenêtre d'affichage.
  • Passage d'ExperimentalUseCaseGroupLifecycle au stade d'API publique officielle.
  • Modifications apportées aux API existantes.
  • Remplacement de Renamed MediaStoreOutputOptions.getCollection par MediaStoreOutputOptions.getCollectionUri.
  • ActiveRecording a été renommé "Recording" pour réduire la verbosité.
  • Remplacement de l'API de création QualitySelector par une API basée sur des listes.

Corrections de bugs

  • Résolution du problème de YuvToJpegProcessor EOFException lorsque le mode extension est activé et que le mode ImageCapture#CAPTURE_MODE_MAX_QUALITY est défini.
  • Résolution de l'échec de la configuration du codec en raison de la fermeture de l'enregistrement vidéo.
  • Résolution du problème de format étiré de l'aperçu/de la vidéo lors de l'enregistrement en Full HD.
  • Résolution du problème de synchronisation du son et de la vidéo la mise en pause et la reprise sur certains appareils.
  • Résolution du problème de déclenchement du flash lors de la mise au point (startFocusAndMetering) lorsque le mode Flash est automatique ou toujours activé, en cas de faible luminosité.

Version 1.1.0-rc02

1er juin 2022

Publication d'androidx.camera:camera-*:1.1.0-rc02. Liste des commits de la version 1.1.0-rc02

Correction de bugs

  • Correction de NullPointerException au niveau d'ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)
  • Correction d'un bug qui empêchait la gestion de l'erreur AssertionError lors de l'obtention de la caractéristique CONTROL_ZOOM_RATIO_RANGE. (Ia248a, b/231701345)

Version 1.1.0-rc01

11 mai 2022

Publication d'androidx.camera:camera-*:1.1.0-rc01. Liste des commits de la version 1.1.0-rc01

Nouvelles fonctionnalités

  • Publication de la première version RC pour camera-video, camera-view et camera-extension.

Correction de bugs

  • Résolution du problème de publication du codec vidéo lorsque VideoCapture<Recorder> était dissocié, ce qui entraînait l'échec de l'utilisation de VideoCapture<Recorder> lors de l'enregistrement avec MediaCodec.CodecException, en particulier sur les appareils équipés de l'API 21 à 22. (Ie7f68)
  • Résolution du problème de suppression des images capturées pour CameraExtensionsActivity dans ImageCaptureTest.

Version 1.1.0-beta03

6 avril 2022

Publication d'androidx.camera:camera-*:1.1.0-beta03. Liste des commits de la version 1.1.0-beta03

Modifications apportées à l'API

  • Application de restrictions au constructeur CaptureRequestOptions. (I261b6)
  • Ajout d'une API expérimentale permettant d'utiliser CameraController avec des bibliothèques de traitement d'images externes comme MLKit. (I4ea71)

Correction de bugs

  • Résolution du problème d'affichage latéral de l'aperçu dans PreviewView lorsque l'activité n'est pas redémarrée après la rotation des appareils en mode multifenêtre. (I1ea36, b/223488673)
  • Résolution d'un problème multifenêtre qui, lorsque le ciblage est de nouveau dans l'application, ne parvient pas à réactiver l'appareil photo si (1) une autre application à priorité élevée ouvre un autre appareil photo (2) s'il s'agit d'un appareil Samsung Android 12. (I7e9f2)
  • Ajout d'une solution de contournement pour les appareils qui plantent lors d'une vérification de la disponibilité du flash. La lampe de poche n'est pas disponible sur ces appareils. (If26a3, b/216667482)
  • Correction de l'erreur AbstractMethodError lorsque les applications utilisent des extensions et activent ProGuard. (I7cbaf, b/222726805)
  • Désactivation forcée de l'extension bokeh sur l'appareil Motorola razr 5G, qui entraîne l'affichage d'un écran d'aperçu noir. (I35d49)
  • Résolution du problème de synchronisation du son et de la vidéo après la mise en pause et la reprise sur certains appareils Samsung dotés d'une version d'API antérieure à l'API 29. (I64622, b/202798609, b/202798572)
  • Résolution du problème de synchronisation du son et de la vidéo la mise en pause et la reprise sur Sony G3125. (I2a1a5, b/202799148)
  • Résolution du problème de plantage en cas d'exception InvalidConfigException au niveau de l'enregistreur. Ce correctif permet d'empêcher le plantage de l'application, mais ne résout pas le problème lié à l'exception InvalidConfigException. Si le Recorder ne peut toujours pas être configuré, les applications recevront un rappel d'erreur au début de l'enregistrement. (I89c29, b/213617227)

Contribution externe

  • Mise à jour de l'API :compose:ui:ui-test (updateApi) suite à la migration de test-coroutines-lib. (I3366D)

Version 1.1.0-beta02

23 février 2022

Publication d'androidx.camera:camera-*:1.1.0-beta02. Liste des commits de la version 1.1.0-beta02

Modifications apportées à l'API

  • Ajout de la possibilité de spécifier l'ID de l'appareil photo physique via Camera2Interop. (I5aed8)

Correction de bugs

  • Résolution du problème d'aperçu étiré sur l'appareil Oppo Find N. (I7d004)
  • Résolution d'un problème de distorsion sur le Galaxy J7 Prime. (I4c500)
  • Utilisation d'un débit compatible pour trouver un encodeur vidéo. (d969052)

Version 1.1.0-beta01

26 janvier 2022

Publication d'androidx.camera:camera-*:1.1.0-beta01. Liste des commits de la version 1.1.0-beta01

Nouvelles fonctionnalités

  • À partir de la version 1.1.0-beta01, toutes les bibliothèques CameraX adopteront le même numéro de version. Les développeurs pourront ainsi suivre les versions beaucoup plus facilement et réduire la complexité de la matrice de compatibilité des versions de grande envergure.

Modifications apportées à l'API

  • Ajout de Camera2CameraControl.clearCaptureRequestOptions pour effacer les options de demande de capture existantes. (Ifa07d)

Correction de bugs

  • Résolution du problème de plantage qui survenait lors de l'enregistrement de la vidéo sur certains appareils antérieurs à Android (API 26). (I88fdf, b/212328261)
  • Résolution du problème de région AF incorrecte lors de l'utilisation de cameraControl#startFocusAndMetering() sur l'appareil photo avant des appareils Samsung. (Ifbf59, b/210548792)
  • Utilisation de la lampe de poche comme flash sur le Pixel 3a/Pixel 3a XL pour améliorer la vitesse et la qualité de l'image capturée dans l'obscurité. (Ib12b6, b/211474332)
  • Activation d'applications permettant de réactiver l'appareil photo lorsqu'il est interrompu par une autre application de priorité supérieure en mode multifenêtre, et qu'il est ciblé de nouveau. Veuillez noter qu'en raison d'un problème lié au framework, il peut y avoir une latence (de 1 à 10 secondes environ) entre les changements de ciblage de l'application et la réouverture de l'appareil photo. (I4d092)

Version 1.1.0-alpha12

15 décembre 2021

Publication d'androidx.camera:camera-*:1.1.0-alpha12. Liste des commits de la version 1.1.0-alpha12

Modifications apportées à l'API

  • Suppression des annotations @RequiresApi(21) inutiles des classes/interfaces internes. (I8e286, b/204917951)
  • Les constantes de qualité et les constantes de la stratégie de secours de QualitySelector ont été modifiées pour être représentées par des objets de classe. Par exemple, QualitySelector.QUALITY_HD est remplacé par Quality.HD, et QualitySelector.FALLBACK_STRATEGY_LOWER est remplacé par l'instance renvoyée par FallbackStrategy.lowerQualityOrHigherThan(Quality). L'API utilisée pour créer QualitySelector a été remplacée par une API basée sur des listes. La nouvelle API QualitySelector.fromOrderedList(List<Quality>) fait référence à l'ordre de la liste des qualités d'entrée, et non à l'ordre créé par QualitySelector.Procedure. La classe QualitySelector.Procedure a été supprimée. (I43343)
  • PendingRecording.withEventListener() a été supprimé, et l'écouteur d'événements doit désormais être transmis à PendingRecording.start(). Cette exigence d'écouteur d'événements vise à encourager la gestion des erreurs asynchrones signalées dans l'événement VideoRecordEvent.Finalize. (I1e71d)
  • ActiveRecording a été renommé Recording afin de réduire la verbosité. (I77ceb)

Correction de bugs

  • Résolution du problème qui faisait que les photos capturées en mode FLASH_AUTO étaient sous-exposées dans des conditions sombres sur les Pixel 3a et les Pixel 3a XL. (I13f19, b/205373142).
  • Utilisation de la dernière taille d'affichage pour déterminer la Resolution de l'aperçu. (I4a694)
  • Filtrage des appareils photo qui n'utilisent pas REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE. Les appareils photo REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE disposent de toutes les fonctionnalités minimales requises. Il est possible qu'un appareil photo sans REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE soit compatible avec des fonctionnalités spéciales et n'accepte pas les couleurs de sortie standards. CameraX n'est pas compatible avec les cas d'utilisation Preview, ImageCapture, ImageAnalysis ou VideoCapture pour ces appareils photo. Ils doivent donc être filtrés pour éviter une utilisation incorrecte. (Ib8cda)
  • CameraSelector#filter ne génère plus d'exception IllegalArgumentException lorsque l'ensemble de résultats est vide. (I27804)
  • Une heuristique plus intelligente permet désormais de sélectionner les paramètres de l'encodeur en fonction des profils spécifiés par l'OEM. (Iaeef0)
  • Après le lancement de l'enregistrement vidéo UHD sur le Pixel 1, l'aperçu corrigé présente des lignes de couleur entrelacées. (I833c6, b/205340278)

Version 1.1.0-alpha11

17 novembre 2021

Publication d'androidx.camera:camera-*:1.1.0-alpha11. Liste des commits de la version 1.1.0-alpha11

Modifications apportées à l'API

  • Ajout de CameraSelector#filter à l'API publique pour filtrer une liste d'éléments CameraInfos basée sur un CameraSelector. (I105d0)
  • Ajout de l'API setOutputImageRotationEnabled pour la configuration d'ImageAnalysis L'utilisateur peut activer la rotation pour le tampon d'image YUV/RVB. Le degré de rotation est une rotation relative calculée en fonction de la rotation des capteurs et de la cible pour garder l'image au premier plan.

  • Ajout de l'API setOutputImageRotationEnabled pour la configuration d'ImageAnalysis L'utilisateur peut activer la rotation pour le tampon d'image YUV/RVB. Le degré de rotation est une rotation relative calculée en fonction de la rotation des capteurs et de la cible pour garder l'image au premier plan.

    Ajout de l'API getSensorToBufferTransformMatrix dans ImageInfo. La matrice renvoyée est un mappage entre les coordonnées du capteur et les coordonnées du tampon, c'est-à-dire la valeur entre CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE et (0, 0, image.getWidth, image.getHeight). La matrice peut être utilisée pour mapper les coordonnées entre des objets {UseCase}. Par exemple, vous pouvez mapper les coordonnées de la détection de visages via ImageAnalysis avec Preview. (I9ff1e)

  • Ajout d'une API ImageCapture.Builder#setJpegQuality permettant de modifier la qualité de compression des images JPEG de sortie lorsqu'une photo est prise. (I8dcf4)

  • Remplacement du nom MediaStoreOutputOptions.getCollection par MediaStoreOutputOptions.getCollectionUri. (I16639)

Correction de bugs

  • Résolution du problème de déclenchement du flash lors de la mise au point (startFocusAndMetering) lorsque le mode Flash est automatique ou toujours activé, en cas de faible luminosité. (Id4c11)
  • Désactivation de HDR+ sur le Pixel 2 XL ou le Pixel 3 XL en mode MINIMIZE_LATENCY pour réduire la latence. (Ib6270, b/203505523)

Contribution externe

Version 1.1.0-alpha10

13 octobre 2021

Publication d'androidx.camera:camera-*:1.1.0-alpha10. Liste des commits de la version 1.1.0-alpha10

Nouvelles fonctionnalités

  • Publication officielle de la première version alpha pour vidéo d'androidx.camera:camera-video:1.1.0-alpha10. Plusieurs problèmes connus seront résolus dans les versions suivantes.

Modifications apportées à l'API

  • Ajout de l'annotation @RequiresApi(21) à toutes les classes CameraX et suppression de minSdkVersion dans le fichier AndroidManifest.xml. Camera-core sera ainsi facilement intégré aux applications dont la version de SDK minimale est inférieure à 21, mais qui souhaitent utiliser de manière conditionnelle des chemins de code basés sur l'API 21 ou version ultérieure. Pour toute application disposant d'une version de SDK minimale 21 ou ultérieure, cette modification ne nécessite aucune action. (Ie7f2e, b/200599470)

Correction de bugs

  • Lancement d'une exception InitializationException pour permettre à l'application de gérer correctement l'erreur AssertionError lors de la création de CameraCharacteristics. (Ibec79)

Version 1.1.0-alpha09

29 septembre 2021

Publication d'androidx.camera:camera-camera2:1.1.0-alpha09, androidx.camera:camera-core:1.1.0-alpha09 et androidx.camera:camera-lifecycle:1.1.0-alpha09. Liste des commits de la version 1.1.0-alpha09

Modifications apportées à l'API

  • L'annotation ExperimentalUseCaseGroup a été supprimée, car les API ne sont plus expérimentales. (I01ef5)

Correction de bugs

  • Résolution du problème de floutage des photos en mode MAXIMIZE_QUALITY. (I173a9, b/193823892)
  • Résolution d'un problème Samsung Galaxy J5 qui empêchait l'appareil photo de prendre des photos avec le flash activé/automatique dans un environnement sombre. (I3aab9)
  • Lorsque le recadrage est nécessaire pour ImageCapture, la compression de la sortie recadrait l'image avec le niveau de qualité JPEG spécifié selon le mode de capture défini. Si le mode de capture est CAPTURE_MODE_MINIMIZE_LATENCY, la qualité de compression JPEG est de 95. Si le mode de capture est CAPTURE_MODE_MAXIMIZE_QUALITY, la qualité de compression JPEG est de 100. (Ieb37c, b/142856426)

Version 1.1.0-alpha08

18 août 2021

Publication d'androidx.camera:camera-camera2:1.1.0-alpha08, androidx.camera:camera-core:1.1.0-alpha08 et androidx.camera:camera-lifecycle:1.1.0-alpha08. Liste des commits de la version 1.1.0-alpha08

Nouvelles fonctionnalités

  • Ajout de l'API setOutputImageFormat pour la configuration d'analyse d'image. L'utilisateur peut sélectionner ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888 ou ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888. Par défaut, ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888 est sélectionné. (I7902d)

Modifications apportées à l'API

  • L'annotation ExperimentalUseCaseGroupLifecycle a été supprimée, car les API ne sont plus expérimentales. (I17b85)

Correction de bugs

  • L'écran d'aperçu était trop lumineux sur le Huawei P20 Lite. Ce problème ne survient que lorsque certaines résolutions d'aperçu spéciales sont utilisées avec un zoom avant de grande taille. (Idefce, b/192129158)
  • Résolution du problème de dysfonctionnement du flash sur certains appareils lorsque le mode Flash était défini sur FLASH_MODE_ON et que des photos étaient prises juste après. (Ieb49b)
  • Résolution du problème qui provoquait l'arrêt de l'aperçu pendant un certain temps lors de la prise de photos si les fonctions VideoCapture, ImageCapture et Preview étaient liées. (I56197, b/193864120)
  • Permet à Analysis de sélectionner une résolution supérieure à 1 080 pixels. Un appareil supérieur au niveau LIMITED peut prendre en charge une résolution de taille RECORD pour ImageAnalysis lorsqu'il est lié à Preview et ImageCapture. Dans ce cas, la résolution sélectionnée pour ImageCapture doit également être résolution de taille RECORD. Afin de sélectionner une résolution de taille RECORD pour ImageAnalysis, vous devez définir une résolution cible de taille RECORD au niveau d'ImageCapture et d'ImageAnalysis. Cela indique que l'application comprend clairement le compromis entre les deux tailles et préfère qu'ImageAnalysis ait une résolution plus grande au lieu d'utiliser une résolution MAXIMUM pour ImageCapture. Pour vous familiariser avec les définitions des tailles RECORD et MAXIMUM et pour en savoir plus, consultez la page https://developer.android.com/reference/android/hardware/camera2/CameraDevice#regular-capture. La taille RECORD correspond à la résolution d'enregistrement maximale acceptée par l'appareil photo, telle qu'elle est déterminée par CamcorderProfile. La taille MAXIMUM correspond à la résolution de sortie maximale de l'appareil photo pour ce format ou cette cible, à partir de StreamConfigurationMap.getOutputSizes(int). (I1ee97, b/192911449)
  • Ajout des informations Exif à l'image capturée. (I01ff0, b/193342619)
  • Dans ImageCapture, renvoi de l'URI de l'image enregistrée si l'emplacement d'enregistrement correspond à "Fichier". (Ib5b49, b/149241379)
  • Résolution d'un problème qui entraînait un assombrissement des photos prises avec flash sur de nombreux appareils. (I4e510)

Version 1.1.0-alpha07

21 juillet 2021

Publication d'androidx.camera:camera-camera2:1.1.0-alpha07, androidx.camera:camera-core:1.1.0-alpha07 et androidx.camera:camera-lifecycle:1.1.0-alpha07. Liste des commits de la version 1.1.0-alpha07

Correction de bugs

  • Résolution d'un problème sur Samsung Galaxy Note 5 sur lequel l'appareil photo se figeait lorsque des photos étaient prises avec le flash activé/automatique dans un environnement sombre. (If6871)
  • Correction du problème EOFException YuvToJpegProcessor lorsque le mode extension est activé et que le mode ImageCapture#CAPTURE_MODE_MAX_QUALITY est défini. (I538bd, b/192017012)

Version 1.1.0-alpha06

30 juin 2021

Publication d'androidx.camera:camera-camera2:1.1.0-alpha06, androidx.camera:camera-core:1.1.0-alpha06 et androidx.camera:camera-lifecycle:1.1.0-alpha06. Liste des commits de la version 1.1.0-alpha06

Modifications apportées à l'API

  • Passage des API expérimentales de correction d'exposition à un niveau supérieur pour camera-core. (I08ee8)
  • Ajout d'une API isFocusMeteringSupported dans CameraInfo, qui permet aux applications de vérifier si l'action FocusMeteringAction indiquée est compatible ou non avec l'appareil photo actuel. (Ib45ae, b/188606490)
  • API getResolutionInfo exposée afin de fournir les informations de résolution pour Preview, ImageCapture et ImageAnalysis. (I2b613, b/188600718)
  • Passage des API expérimentales suivantes au stade d'API officielles : CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(). (I2ade2)
  • Interface CameraProvider exposée pour permettre l'accès à un ensemble d'appareils photo. (I1a7b1)
  • Promotion de l'API expérimentale UseCaseGroup pour camera-core, camera-lifecycle et camera-video. Ajout de ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection et ViewPort.Builder#setScaleType pour personnaliser la fenêtre d'affichage. (I7cee8)

Version 1.1.0-alpha05

2 juin 2021

Publication d'androidx.camera:camera-camera2:1.1.0-alpha05, androidx.camera:camera-core:1.1.0-alpha05 et androidx.camera:camera-lifecycle:1.1.0-alpha05. Liste des commits de la version 1.1.0-alpha05

Modifications apportées à l'API

  • Suppression de la classe Camera2CameraFilter. Envisagez de sélectionner l'appareil photo via CameraFilter et de récupérer CameraCharacteristics ou d'autres informations liées à Camera2 via Camera2CameraInfo si nécessaire. (Ib887c)
  • Les API ExperimentalCameraFilter ne sont plus au stade expérimental et deviennent des API formelles. Elles peuvent être utilisées sans l'annotation OptIn. (I4bc94)
  • Ajout de l'API d'état de l'appareil photo via CameraInfo#getCameraState(). (Ia86b4)
  • Ajout de l'API expérimentale CameraInfo#getCameraSelector(), qui renvoie un CameraSelector propre à son appareil photo. (I77f9f)

Correction de bugs

  • Résolution du problème de renvoi de ListenableFuture dans setZoomRatio et setLinearZoom sur certains appareils Android 11. (I716d7)
  • Accélération des contacteurs de l'appareil photo et réduction du taux d'erreur de l'appareil photo. (I34c99)
  • Remplacement de ExperimentalUseCaseGroupLifecycle par ExperimentalUseCaseGroup. (I3b2ef, b/159033688)

Version 1.1.0-alpha04

21 avril 2021

Publication d'androidx.camera:camera-camera2:1.1.0-alpha04, androidx.camera:camera-core:1.1.0-alpha04 et androidx.camera:camera-lifecycle:1.1.0-alpha04. Liste des commits de la version 1.1.0-alpha04

Correction de bugs

  • Correction d'une fuite de mémoire causée par l'accès simultané de plusieurs threads à la même collection. Une fuite de mémoire peut entraîner la conservation de l'activité ou du fragment par une instance Preview. (I7b4b8)
  • Remplacement de l'annotation @Experimental par @RequiresOptIn pour les API expérimentales. Pour appeler des API expérimentales, utilisez androidx.annotation.OptIn au lieu de l'élément obsolète androidx.annotation.experimental.UseExperimental. (Iff226)
  • Résolution d'un problème de capture d'image qui prenait des photos délavées avec le flash activé/automatique sur le Samsung Galaxy S7. (I30001)
  • Ajout d'une API CameraState exposée via CameraInfo. (I75392)

Version 1.1.0-alpha03

24 mars 2021

Publication d'androidx.camera:camera-camera2:1.1.0-alpha03, androidx.camera:camera-core:1.1.0-alpha03 et androidx.camera:camera-lifecycle:1.1.0-alpha03. Liste des commits de la version 1.1.0-alpha03

Correction de bugs

  • Format de sortie JPEG pour ImageCapture#OnImageCapturedCallback lorsque les modes Extensions sont activés. (I0d7b1)
  • Correction de l'échec de l'initialisation sur les appareils UMIDIGI BISON, (I57d9e, b/180818665)
  • Résolution du problème d'aperçu étiré en mode PreviewView sur les appareils Samsung A3. (Iacb30, b/180121821)

Version 1.1.0-alpha02

24 février 2021

Publication d'androidx.camera:camera-camera2:1.1.0-alpha02, androidx.camera:camera-core:1.1.0-alpha02 et androidx.camera:camera-lifecycle:1.1.0-alpha02. Liste des commits de la version 1.1.0-alpha02

Modifications apportées à l'API

  • Ajout d'une API ProcessCameraProvider.getAvailableCameraInfos() pour récupérer directement des informations sur les appareils photo disponibles, à savoir tous les appareils photo ou à ceux sélectionnés par l'élément CameraSelector fourni dans CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector). (Ieac08)

Correction de bugs

  • CameraX essaie maintenant de forcer l'ouverture d'un appareil photo lors de la première tentative. Cette action peut entraîner l'ouverture de l'appareil photo par CameraX au lieu des autres clients d'appareils photo lorsque son application a une priorité plus élevée. (Iab069, b/175820568)
  • Correction de l'échec du test Robolectric lors de l'utilisation de setAvailableCamerasLimiter dans CameraXConfig. (Ice307)
  • Cette modification détecte l'exception lorsque la file d'attente d'images est au maximum dans ImageAnalysis. Au lieu de causer un plantage, vous remarquerez peut-être que d'autres cas d'utilisation sont figés ou lents, tels que l'aperçu. (Ic12da, b/175851631)
  • Correction d'ExtensionsErrorListener pour ne signaler les erreurs que si Preview ou ImageCapture est lié. (I5ae39)
  • Correction de la régression des performances d'ImageCapture en supprimant la validation de l'emplacement d'enregistrement de l'image avant de prendre une photo. Une fois la modification effectuée, si la destination d'enregistrement n'est pas valide, la réponse à l'échec prend plus de temps, car elle essaie d'enregistrer l'image une fois la photo prise. (I1fd4e, b/177061560)
  • Correction de la régression des performances d'ImageCapture avec le type "File" pour OutputFileOptions. (I5164a, b/177061560)
  • Mise à jour de la documentation pour éviter d'utiliser ProcessCameraProvider.configureInstance(...) à partir du code de la bibliothèque. (Ib8a9f)

Version 1.1.0-alpha01

27 janvier 2021

Publication d'androidx.camera:camera-camera2:1.1.0-alpha01, androidx.camera:camera-core:1.1.0-alpha01 et androidx.camera:camera-lifecycle:1.1.0-alpha01. Liste des commits de la version 1.1.0-alpha01

Corrections de bugs

  • Ajout d'une solution de contournement pour les données d'image corrompues par intermittence dans les fichiers JPEG sur la caméra arrière des appareils SM-G930T. (I52001, b/159831206)
  • Résolution du problème d'IllegalArgumentException qui survenait lorsque toutes les tailles d'aperçu compatibles étaient inférieures à 640 x 480 pixels et que l'écran avait une taille supérieure. (I2a63c, b/150506192)
  • Les ressources de bibliothèques ne comportant pas de ressources publiques explicitement déclarées (par exemple, via public.xml) sont désormais privées par défaut. (Ia1dcc, b/170882230)

Camera-Camera2, Camera-Core et Camera-Lifecycle Version 1.0.2

Version 1.0.2

29 septembre 2021

Publication d'androidx.camera:camera-camera2:1.0.2, androidx.camera:camera-core:1.0.2 et androidx.camera:camera-lifecycle:1.0.2. Liste des commits de la version 1.0.2

Correction de bugs

  • Résolution du problème de floutage des photos en mode MAXIMIZE_QUALITY. (I173a9, b/193823892)
  • Résolution d'un problème d'assombrissement des photos prises avec flash sur de nombreux appareils. (I4e510)

Camera-Camera2, Camera-Core et Camera-Lifecycle Version 1.0.1

Version 1.0.1

21 juillet 2021

Publication d'androidx.camera:camera-camera2:1.0.1, androidx.camera:camera-core:1.0.1 et androidx.camera:camera-lifecycle:1.0.1. Liste des commits de la version 1.0.1

Corrections de bugs

  • Résolution du problème de renvoi de ListenableFuture dans setZoomRatio et setLinearZoom sur certains appareils Android 11. (I716d7)

  • Résolution du problème de blocage de l'appareil photo lors de sa fermeture sur certains appareils, ce qui entraînait l'affichage d'un aperçu noir. (I34c99)

Camera-Camera2, Camera-Core et Camera-Lifecycle Version 1.0.0

Version 1.0.0

5 mai 2021

Publication d'androidx.camera:camera-camera2:1.0.0, androidx.camera:camera-core:1.0.0 et androidx.camera:camera-lifecycle:1.0.0. Liste des commits de la version 1.0.0

Principales fonctionnalités de la version 1.0.0

  • CameraX prend en charge Preview, ImageCapture et Analysis.
  • CameraX gère le cycle de vie de l'appareil photo dans une API facile à utiliser.
  • CameraX vise à fournir une couche de compatibilité qui résout de nombreux problèmes dans l'écosystème d'appareils photo Android.

Problèmes connus

Version 1.0.0-rc05

21 avril 2021

Publication d'androidx.camera:camera-camera2:1.0.0-rc05, androidx.camera:camera-core:1.0.0-rc05 et androidx.camera:camera-lifecycle:1.0.0-rc05. Liste des commits de la version 1.0.0-rc05

Corrections de bugs

  • Résolution d'un problème de capture d'image qui prenait des photos délavées avec le flash activé/automatique sur le Samsung Galaxy S7. (I30001)

Version 1.0.0-rc04

24 mars 2021

Publication d'androidx.camera:camera-camera2:1.0.0-rc04, androidx.camera:camera-core:1.0.0-rc04 et androidx.camera:camera-lifecycle:1.0.0-rc04. Liste des commits de la version 1.0.0-rc04

Correction de bugs

  • Correction de l'échec de l'initialisation sur les appareils UMIDIGI BISON, (I57d9e, b/180818665)

Version 1.0.0-rc03

24 février 2021

Publication d'androidx.camera:camera-camera2:1.0.0-rc03, androidx.camera:camera-core:1.0.0-rc03 et androidx.camera:camera-lifecycle:1.0.0-rc03. Liste des commits de la version 1.0.0-rc03

Correction de bugs

  • Correction de l'erreur de format dans le document de ProcessCameraProvider#getInstance.
  • Correction de l'échec du test Robolectric lors de l'utilisation de setAvailableCamerasLimiter dans CameraXConfig.
  • Correction de la régression des performances d'ImageCapture en supprimant la validation de l'emplacement d'enregistrement de l'image avant de prendre une photo. Une fois la modification effectuée, si la destination d'enregistrement n'est pas valide, la réponse à l'échec prend plus de temps, car elle essaie d'enregistrer l'image une fois la photo prise.
  • Cette modification détecte l'exception lorsque la file d'attente d'images est au maximum dans ImageAnalysis. Au lieu de causer un plantage, vous remarquerez peut-être que d'autres cas d'utilisation sont figés ou lents, tels que l'aperçu.
  • Ajout d'une solution de contournement pour les données d'image corrompues par intermittence dans les fichiers JPEG sur la caméra arrière des appareils SM-G930T. (I52001, b/159831206)
  • Cette modification détecte l'exception lorsque la file d'attente d'images est au maximum dans ImageAnalysis. Au lieu de causer un plantage, vous remarquerez peut-être que d'autres cas d'utilisation sont figés ou lents, tels que l'aperçu. (Ic12da, b/175851631)
  • Correction de l'échec du test Robolectric lors de l'utilisation de setAvailableCamerasLimiter dans CameraXConfig. (Ice307)
  • Correction de la régression des performances d'ImageCapture en supprimant la validation de l'emplacement d'enregistrement de l'image avant de prendre une photo. Une fois la modification effectuée, si la destination d'enregistrement n'est pas valide, la réponse à l'échec prend plus de temps, car elle essaie d'enregistrer l'image une fois la photo prise. (I1fd4e, b/177061560)
  • Correction de la régression des performances d'ImageCapture avec le type "File" pour OutputFileOptions. (I5164a, b/177061560)

Version 1.0.0-rc02

27 janvier 2021

Publication d'androidx.camera:camera-camera2:1.0.0-rc02, androidx.camera:camera-core:1.0.0-rc02 et androidx.camera:camera-lifecycle:1.0.0-rc02. Liste des commits de la version 1.0.0-rc02

Correction de bugs

  • Résolution du problème d'IllegalArgumentException qui survenait lorsque toutes les tailles d'aperçu compatibles étaient inférieures à 640 x 480 pixels et que l'écran avait une taille supérieure. (b/150506192)
  • Limitation du nombre de tentatives de réouverture de l'appareil photo. Lors d'une tentative de récupération suite à certains problèmes à l'ouverture de l'appareil photo, CameraX n'essaiera plus de rouvrir l'appareil photo indéfiniment, mais s'arrêtera après avoir réessayé pendant 10 secondes. I435d2

  • Résolution du problème d'IllegalArgumentException qui survenait lorsque toutes les tailles d'aperçu compatibles étaient inférieures à 640 x 480 pixels et que l'écran avait une taille supérieure. (I2a63c, b/150506192)

Version 1.0.0-rc01

16 décembre 2020

Publication d'androidx.camera:camera-camera2:1.0.0-rc01, androidx.camera:camera-core:1.0.0-rc01 et androidx.camera:camera-lifecycle:1.0.0-rc01. Liste des commits de la version 1.0.0-rc01

Modifications apportées à l'API

  • Modification de CameraFilter et Camera2Filter pour prendre en compte CameraInfo. (I6883d)
  • Ajout de la classe expérimentale Camera2CameraControl pour permettre l'interaction dynamique avec les API Camera2. (I45cf3)
  • Remplacement du nom Camera2CameraInfo#fromCameraInfo par #from. (Ia2bd6)
  • Ajout d'une API expérimentale setAvailableCamerasLimiter à CameraXConfig pour permettre aux applications d'optimiser la latence d'initialisation en évitant l'initialisation des appareils photo non utilisés. (I6cf88)
  • Ajout de la méthode expérimentale CameraXConfig.Builder#setMinimumLoggingLevel() afin de permettre la définition d'un niveau de journalisation minimal pour les journaux CameraX. Par défaut, elle est définie sur Log#DEBUG. (Ic3245)

Correction de bugs

  • Ajout d'une solution de contournement pour les données d'image corrompues par intermittence dans les fichiers JPEG sur la caméra arrière des appareils SM-G930V. (I5aca5, b/159831206)
  • Résolution d'un problème qui empêchait de prendre des photos lorsque le flash était toujours actif et que l'environnement était sombre sur les appareils Samsung SM-A716. (If98b2, b/172036589)
  • Résolution du problème qui empêchait d'arrêter l'aperçu en appelant Preview.setSurfaceProvider(null). (I3ac18)
  • Résolution du problème d'orientation lors de la prise de photos au format 4:3 sur certains appareils. (I0e3fb, b/171492111)

Camera Camera2, Cor et Lifecycle version 1.0.0-beta12

11 novembre 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta12, androidx.camera:camera-core:1.0.0-beta12 et androidx.camera:camera-lifecycle:1.0.0-beta12. Liste des commits de la version 1.0.0-beta12

Correction de bugs

  • Désactivation du flash automatique sur les appareils Samsung A3 pour résoudre le problème de plantage qui survenait lorsque des photos étaient prises en mode AE avec flash automatique. (Ia5fe3, b/157535165)
  • Résolution du problème d'aperçu étiré sur les appareils Nexus 4 équipés d'Android L (niveaux d'API 21 et 22). (I4d407, b/158749159)
  • L'implémentation de la classe de base OnImageCapturedCallback#onCaptureSuccess ne ferme plus l'image. Cela permet d'éviter tout comportement inattendu pour les développeurs. Les développeurs ne doivent pas utiliser super.onCaptureSuccess pour fermer l'image. (Ifbf9c)
  • La variante androidx de l'annotation expérimentale a été abandonnée pour assurer la parité avec Kotlin. Elle a été remplacée par l'annotation RequiresOptIn, et le lint pour Java a été mis à jour pour prendre en charge à la fois la nouvelle annotation Kotlin et la nouvelle variante androidx. (I52495, b/151331381)

Camera-Camera2 version 1.0.0-beta11

14 octobre 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta11. Liste des commits de la version 1.0.0-beta11

Nouvelles fonctionnalités

  • Prise en charge de l'API Android 11 CONTROL_ZOOM_RATIO pour les zooms sur les appareils Android 11 ou versions ultérieures contenant une valeur CONTROL_ZOOM_RATIO_RANGE valide. (I62cc6)

Correction de bugs

  • Résolution de l'exception NumberFormatException lorsque l'ID de l'appareil photo ne correspondait pas à un entier. (Ib2228)
  • Amélioration de la latence d'initialisation de CameraX et de bindToLifecycle. (I61dc5)
  • La création de cas d'utilisation ne nécessite pas d'initialisation de CameraX. Toutes les configurations spécifiques à l'implémentation sont définies au niveau du cas d'utilisation (UseCase) une fois qu'il est associé à une instance de Camera dont l'API publique est ProcessCameraProvider.bindToLifecycle(). (Ia5411)
  • <UseCase>.getTargetRotation() renvoie Surface.ROTATION_0 s'il est appelé avant d'être associé à une instance de Camera, à moins qu'une rotation cible n'ait été définie dans le compilateur ou dans le cas d'utilisation. (I80fcd)

Camera-Core version 1.0.0-beta11

14 octobre 2020

Publication d'androidx.camera:camera-core:1.0.0-beta11. Liste des commits de la version 1.0.0-beta11

Nouvelles fonctionnalités - Prise en charge de l'API Android 11 CONTROL_ZOOM_RATIO pour les zooms sur les appareils Android 11 ou versions ultérieures contenant une valeur CONTROL_ZOOM_RATIO_RANGE valide. (I62cc6)

Correction de bugs

  • Résolution de l'exception NumberFormatException lorsque l'ID de l'appareil photo ne correspondait pas à un entier. (Ib2228)
  • La création de cas d'utilisation ne nécessite pas d'initialisation de CameraX. Toutes les configurations spécifiques à l'implémentation sont définies au niveau du cas d'utilisation (UseCase) une fois qu'il est associé à une instance de Camera dont l'API publique est ProcessCameraProvider.bindToLifecycle(). (Ia5411)
  • <UseCase>.getTargetRotation() renvoie Surface.ROTATION_0 s'il est appelé avant d'être associé à une instance de Camera, à moins qu'une rotation cible n'ait été définie dans le compilateur ou dans le cas d'utilisation. (I80fcd)

Camera-Core version 1.0.0-beta10

23 septembre 2020

Publication d'androidx.camera:camera-core:1.0.0-beta10. Liste des commits de la version 1.0.0-beta10

Correction de bugs

  • Correction d'un bug qui affectait la validation de la destination d'enregistrement de fichier pour la capture d'image. (I8c565, b/167697553)

Camera-Camera2 version 1.0.0-beta10

23 septembre 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta10. Liste des commits de la version 1.0.0-beta10

Correction de bugs

Camera-Camera2 version 1.0.0-beta09

16 septembre 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta09. Liste des commits de la version 1.0.0-beta09

Modifications apportées à l'API

  • Au lieu de fournir des méthodes statiques, Camera2CameraInfo utilise une instance CameraInfo lors de sa création pour récupérer les informations liées à Camera2. (I5b844)

Correction de bugs

  • Résolution du problème de format de cible sur les tablettes. Le format 16:9 doit être sélectionné lorsque le format cible est défini sur AspectRatio.RATIO_16_9. (Ib7fcf, b/151969438)
  • Lancement d'une exception InitializationException pour permettre à l'application de gérer correctement l'erreur AssertionError lors de la création de CameraCharacteristics. (I89c8c, b/160524721)
  • Ajout d'interfaces expérimentales pour ExposureCompensation. (If96c7)

Camera-Core version 1.0.0-beta09

16 septembre 2020

Publication d'androidx.camera:camera-core:1.0.0-beta09. Liste des commits de la version 1.0.0-beta09

Modifications apportées à l'API

  • Correction du bug où la fenêtre d'affichage était marquée comme non nulle dans UseCaseGroup. Les développeurs devraient pouvoir créer une fenêtre d'affichage sans avoir à définir ce paramètre. (Ie3d2e)
  • Ajout d'interfaces expérimentales pour ExposureCompensation. (If96c7)
  • Autorisation de la rotation arbitraire de la cible pour l'aperçu. Les informations sur la transformation sont calculées et renvoyées à l'utilisateur à la volée via un nouveau rappel TranformationInfoListener. (I21470)

Correction de bugs

  • Résolution du problème qui empêchait le flash de s'allumer sur certains appareils. Cela survenait lorsque le mode flash était défini sur FLASH_MODE_ON pour prendre une photo et était remplacé par FLASH_MODE_OFF lors du déclenchement du flash. Ce symptôme est semblable à celui de l'activation du mode lampe de poche. (Ib4451, b/162568128)
  • Forçage de PreviewView afin d'utiliser TextureView si l'effet d'extension est activé et que l'implémentation de la bibliothèque du fournisseur doit exécuter un processus spécial sur la surface de sortie. (I0c3cc)
  • Correction de la fuite d'activité/de fragment lors de la transmission d'un contexte d'activité/de fragment à ProcessCameraProvider.getInstance(Context).

Problèmes connus

  • Lorsque ViewPort est défini, le rectangle de recadrage d'ImageCapture peut être incorrect sur les appareils qui font pivoter le tampon d'image dans la couche d'abstraction matérielle (HAL). Ce problème sera résolu dans la prochaine version.

Camera-Camera2 version 1.0.0-beta08

19 août 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta08. Liste des commits de la version 1.0.0-beta08

Correction de bugs

  • Optimisation de bindToLifecycle pour qu'il s'exécute rapidement sur le thread principal. (I1d57e)
  • DisplayOrientedMeteringPointFactory utilise une instance CameraInfo au lieu d'un CameraSelector. Il existe donc un mappage direct avec l'appareil photo pour lequel la fabrique génère des points. Toutes les classes qui utilisent DisplayOrientedMeteringPointFactory utilisent également une instance de CameraInfo au lieu de CameraSelector. (I400c1)
  • Correction d'un problème de groupement de tailles de format de résolution automatique selon lequel une taille 16:9 mod16 (864 x 480) était sélectionnée lorsque le paramètre de résolution cible correspondait à 2 016 x 1 080) et qu'il existe une autre taille 16:9 prise en charge (1 920 x 1 080). (I53167, b/159363774)
  • Résolution du problème lié à CameraControl dans lequel une condition de concurrence ne fonctionne pas. (I2279f, b/152333890, b/160714166)

Camera-Core version 1.0.0-beta08

19 août 2020

Publication d'androidx.camera:camera-core:1.0.0-beta08. Liste des commits de la version 1.0.0-beta08

Modifications apportées à l'API

  • DisplayOrientedMeteringPointFactory utilise une instance CameraInfo au lieu de CameraSelector. Il existe donc un mappage direct avec l'appareil photo pour lequel la fabrique génère des points. Toutes les classes qui utilisent DisplayOrientedMeteringPointFactory exploitent également une instance CameraInfo au lieu de CameraSelector. (I400c1)

Correction de bugs

  • Pour la capture d'image, remplacez l'indicateur horizontal de retournement dans les métadonnées en fonction de la direction de l'appareil photo. (I28499)
  • L'initialisation ne devrait plus planter lorsque vous utilisez un contexte qui ne renvoie pas d'objet Application à partir de Context.getApplicationContext(). (I3d3c9, b/160817073)

Camera-Camera2 version 1.0.0-beta07

22 juillet 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta07. Liste des commits de la version 1.0.0-beta07

Corrections de bugs

  • Résolution du problème d'aperçu étiré sur les anciens appareils Android 5.0. (I0c03a)
  • Exclusion de certaines tailles compatibles JPEG qui entraînent un problème WYSIWYG sur certains appareils. (Ib5128)

Camera-Core version 1.0.0-beta07

22 juillet 2020

Publication d'androidx.camera:camera-core:1.0.0-beta07. Liste des commits de la version 1.0.0-beta07

Modifications apportées à l'API

  • La fusion du style FIT_CENTER, FIT_START et FIT_END avec FIT. FIT signifie que le rectangle de recadrage renvoyé correspond au rectangle maximum possible pour le capteur. (Ia73c3)
  • Le rectangle de recadrage de l'aperçu est configuré en fonction de la fenêtre d'affichage. Les utilisateurs finaux ne devraient voir que la zone couverte par le rectangle de recadrage. (I142a4)

Correction de bugs

  • Résolution du problème d'aperçu étiré sur les anciens appareils Android 5.0. (I0c03a)
  • Correction de l'exception ConcurrentModificationException lors de la dissociation de cas d'utilisation. (I371c0)

Camera-Camera2 version 1.0.0-beta06

24 juin 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta06. Liste des commits de la version 1.0.0-beta06

Modifications apportées à l'API

  • Ajout d'interfaces expérimentales pour le filtrage des appareils photo en fonction de l'ID et des caractéristiques (CameraCharacteristics) de l'appareil photo. (I28f61)

Correction de bugs

  • Résolution du problème de mise au point de startFocusAndMetering sur les appareils Samsung Galaxy S7. (If3be7, b/159039233)
  • Résolution du problème de non-fermeture de l'appareil photo une fois l'application fermée. (I7a7b3)
  • Résolution du problème d'affichage de l'aperçu en cas d'utilisation répétée du contacteur de l'appareil photo lors de l'utilisation de l'implémentation SurfaceView correspondant à PreviewView. (I920ce)
  • CameraControl#startFocusAndMetering échoue si aucun des points de mesure spécifiés ne peut générer de rectangles de mesure valides. (Id53ce)

Camera-Core version 1.0.0-beta06

24 juin 2020

Publication d'androidx.camera:camera-core:1.0.0-beta06. Liste des commits de la version 1.0.0-beta06

Modifications apportées à l'API

  • Ajout d'interfaces expérimentales pour le filtrage des appareils photo en fonction de l'ID et des caractéristiques (CameraCharacteristics) de l'appareil photo. (I28f61)

Correction de bugs

  • CameraX peut désormais être configuré avec ProcessCameraProvider#configureInstance() avant d'appeler ProcessCameraProvider#getInstance(). Cela permet de personnaliser CameraXConfig sans implémenter CameraXConfig.Provider dans la classe Application de l'application. (Ia1a8d)
  • CameraControl#startFocusAndMetering échoue si aucun des points de mesure spécifiés ne peut générer de rectangles de mesure valides. (Id53ce)

Camera-Camera2 version 1.0.0-beta05

10 juin 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta05. Liste des commits de la version 1.0.0-beta05

Correction de bugs

  • Résolution du problème de plantage au démarrage de l'application lorsque l'appareil photo était initialisé et que le téléphone était en mode Ne pas déranger. Une exception InitializationException contient un élément CameraUnavailableException qui est défini sur l'élément ListenableFuture du résultat d'initialisation au lieu de faire planter l'application. (I9909a, b/149413835)
  • Résolution du problème de plantage qui survenait lors de l'appel de startFocusAndMetering sur des appareils dont la valeur CONTROL_AF_STATE était nulle. (Ife55e, b/157084254)

Camera-Core version 1.0.0-beta05

10 juin 2020

Publication d'androidx.camera:camera-core:1.0.0-beta05. Liste des commits de la version 1.0.0-beta05

Modifications apportées à l'API

  • Résolution du problème de plantage au démarrage de l'application lorsque l'appareil photo était initialisé et que le téléphone était en mode Ne pas déranger. Une exception InitializationException contient un élément CameraUnavailableException qui est défini sur l'élément ListenableFuture du résultat d'initialisation au lieu de faire planter l'application. (I9909a, b/149413835)

Correction de bugs

  • Mise à jour des javadocs de setTargetResolution et setTargetRotation. (Iae16f)

Camera-Camera2 version 1.0.0-beta04

27 mai 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta04. Liste des commits de la version 1.0.0-beta04.

Correction de bugs

  • Applications autorisées à définir n'importe quel paramètre de demande de capture camera2 via Camera2Interop sans provoquer de plantage. Notez si le remplacement de paramètres entraîne des problèmes. La stabilité et le comportement ne sont pas garantis lors du remplacement des paramètres avec Camera2Interop. (Ibe5a1, b/149103700)
  • L'initialisation automatique est corrigée lors de l'utilisation d'une application sur un appareil qui utilise des pseudo-paramètres régionaux. (I3bef3, b/154767663)
  • Conversion du journal d'erreurs lié au cas d'utilisation dissocié en journal de débogage sur Camera2CameraImpl. (I1a565, b/154422490)
  • Résolution d'un problème qui entraînait l'affichage d'une image trop sombre parfois, même lorsque le flash était déclenché. (I5d9fa, b/149729613)
  • Correction d'un bug où le tampon dans ImageProxy à partir d'ImageCapture n'était pas rembobiné. (I0c455, b/153249512)
  • Résolution des problèmes de liaison d'ImageCapture uniquement : (1) Échec de la prise de photos avec MAX_QUALITY ; (2) Qualité d'image médiocre, car l'exposition automatique ne fonctionne pas. (I17782, b/145326998)
  • Amélioration de la fiabilité de la réouverture de l'appareil photo lorsque celui-ci est déconnecté par un autre processus ou par un autre chemin de code qui accapare l'appareil photo. (I1fbc3, b/153714651)

Camera-Core version 1.0.0-beta04

27 mai 2020

Publication d'androidx.camera:camera-core:1.0.0-beta04. Liste des commits de la version 1.0.0-beta04

Modifications apportées à l'API

  • Ajout d'une API expérimentale, CameraXConfig.Builder#setSchedulerHandler(), pour définir le gestionnaire utilisé en interne par la pile de l'appareil photo CameraX. Cette nouvelle API et CameraXConfig.Builder#setCameraExecutor() devraient permettre un contrôle total des threads utilisés par la pile de l'appareil photo CameraX. (I7bf32, b/121160431)

Correction de bugs

  • Résolution du problème de plantage dans ImageAnalysis, où l'accès à ImageProxy avait lieu après la fermeture d'ImageReaderProxy. Tous les éléments ImageProxy reçus par Analyzer doivent maintenant être fermés avant la fermeture d'ImageReaderProxy. (I4b299, b/145956416, b/154155377, b/156357269)
  • Suppression du paramètre CameraInfo de PreviewView#createSurfaceProvider(). PreviewView le récupère désormais en interne à partir de SurfaceRequest. (If18f0, b/154652477)
  • L'initialisation automatique est corrigée lors de l'utilisation d'une application sur un appareil qui utilise des pseudo-paramètres régionaux. (I3bef3, b/154767663)
  • Résolution d'un problème qui entraînait l'affichage d'une image trop sombre parfois, même lorsque le flash était déclenché. (I5d9fa, b/149729613)
  • Résolution d'un problème lié à ImageAnalysis qui entraînait la réception d'images à analyser lors de plusieurs appels à setAnalyzer/clearAnalyzer. (I6169f, b/151605317, b/153514544)
  • Correction d'un bug où le tampon dans ImageProxy à partir d'ImageCapture n'était pas rembobiné. (I0c455, b/153249512)
  • Résolution du problème qui empêchait le premier appareil photo de la liste CameraManager prise en charge d'être toujours sélectionné. (I4c624, b/153418028)
  • Résolution du problème de plantage intermittent causé par le paramètre Preview.SurfaceProvider qui ne libérait pas la surface précédemment demandée. “java.lang.IllegalStateException: Camera surface session should only fail with request cancellation” (I8e4e7, b/155936225)

Camera-Camera2 version 1.0.0-beta03

15 avril 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta03. Liste des commits de la version 1.0.0-beta03

Correction de bugs

  • Correctifs permettant la publication de camera-core

Camera-Core version 1.0.0-beta03

15 avril 2020

Publication d'androidx.camera:camera-core:1.0.0-beta03. Liste des commits de la version 1.0.0-beta03

Correction de bugs

  • Correction d'une régression à partir de la version bêta 03, où l'appel de bindToLifecycle() sans aucun UseCase générait une exception. Cela empêchait la récupération d'un objet Camera sans la liaison d'un UseCase.

Camera-Camera2 version 1.0.0-beta02

1er avril 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta02. Liste des commits de la version 1.0.0-beta02

Correction de bugs

  • Correction d'ImageInfo.getRotationDegrees() à partir de l'ImageProxy généré par ImageCapture afin qu'il corresponde à la valeur de rotation de l'orientation EXIF. (Id4281, b/150802561)
  • Vous n'avez plus besoin de classer explicitement les dépendances CameraX dans build.gradle pour utiliser l'implémentation de CameraX/Camera2 par défaut. Dans les cas où la déclaration de dépendances strictes est requise, toutes les dépendances de CameraX peuvent désormais être incluses dans le fichier de compilation. (I46e88)
  • Résolution du problème lié à l'exception IllegalArgumentException sur les appareils dont la taille d'affichage est inférieure à 640 x 480. (Ife3f2, b/150506192)
  • Correction de bindToLifecycle de sorte qu'il ne modifie le cas d'utilisation que si la liaison aboutit. Le cas d'utilisation était mis à jour précédemment lors de l'appel de bindToLifecycle afin d'effectuer des calculs de résolution. À présent, il n'a plus besoin de mettre à jour le cas d'utilisation pour effectuer les calculs. (I78d9e).

Camera-Core version 1.0.0-beta02

1er avril 2020

Publication d'androidx.camera:camera-core:1.0.0-beta02. Liste des commits de la version 1.0.0-beta02

Correction de bugs

  • Correction d'ImageInfo.getRotationDegrees() à partir de l'ImageProxy généré par ImageCapture afin qu'il corresponde à la valeur de rotation de l'orientation EXIF. (Id4281, b/150802561)
  • Correction de bindToLifecycle de sorte qu'il ne modifie le cas d'utilisation que si la liaison aboutit. Le cas d'utilisation était mis à jour précédemment lors de l'appel de bindToLifecycle afin d'effectuer des calculs de résolution. À présent, il n'a plus besoin de mettre à jour le cas d'utilisation pour effectuer les calculs. (I78d9e).
  • Résolution d'un problème où la session de capture du cas d'utilisation Preview n'était pas mise à jour lorsque la surface d'aperçu était modifiée après avoir appelé Preview.setSurfaceProvider() plusieurs fois.

Camera-Camera2 version 1.0.0-beta01

26 février 2020

Publication d'androidx.camera:camera-camera2:1.0.0-beta01. Liste des commits de la version 1.0.0-beta01

Correction de bugs

  • SurfaceRequest.setSurface(Surface) a été renommé SurfaceRequest.provideSurface(Surface), et SurfaceRequest.setWillNotComplete() SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Résolution du problème de format incorrect d'une image enregistrée après avoir modifié la valeur de rotation cible avec ImageCapture.setTargetRotation(). (I474ea, b/148763432)
  • Correction de l'initialisation des variantes d'application avec ProGuard activé en conservant l'option qui définit le fournisseur CameraXConfig par défaut. (I2d6c1)

Camera-Core version 1.0.0-beta01

26 février 2020

Publication d'androidx.camera:camera-core:1.0.0-beta01. Liste des commits de la version 1.0.0-beta01

Modifications apportées à l'API

  • Remplacement de ListenableFuture sur SurfaceRequest.provideSurface() par Executor et Callback. Cela simplifie l'API en évitant d'avoir à gérer les exceptions sur provideSurface(), et fait en sorte que le rappel de provideSurface() ne puisse pas être annulé. Les plantages causés par la libération prématurée des surfaces sur les appareils plus anciens peuvent ainsi être évités. L'objet SurfaceRequest.Result permet désormais de suivre la façon dont une requête SurfaceRequest utilise la Surface fournie. (I7854b)
  • Remplacement du nom SurfaceRequest.setSurface(Surface) par SurfaceRequest.provideSurface(Surface) et du nom SurfaceRequest.setWillNotComplete() par SurfaceRequest.willNotProvideSurface(). (I224fe)

Correction de bugs

  • Résolution du problème de format incorrect d'une image enregistrée après avoir modifié la valeur de rotation cible avec ImageCapture.setTargetRotation(). (I474ea, b/148763432)
  • Correction de l'initialisation des variantes d'application avec ProGuard activé en conservant l'option qui définit le fournisseur CameraXConfig par défaut. (I2d6c1)
  • Mise à jour de la documentation pour les API en mode Flash afin d'inclure les valeurs possibles. (I4a3ec)

Camera-Camera2 version 1.0.0-alpha10

10 février 2020

Publication d'androidx.camera:camera-camera2:1.0.0-alpha10. Liste des commits de la version 1.0.0-alpha10

Correction de bugs

  • Amélioration de la stabilité sur les appareils INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY en assurant la conservation des Surfaces uniquement pendant la durée d'utilisation de Camera2. (I9dac2)
  • Résolution du problème d'aperçu sous-exposé sur les anciens appareils en ajustant CONTROL_AE_TARGET_FPS_RANGE correctement. (1224638)

Camera-Core version 1.0.0-alpha10

10 février 2020

Publication d'androidx.camera:camera-core:1.0.0-alpha10. Liste des commits de la version 1.0.0-alpha10

Modifications apportées à l'API

  • Mise à jour d'ImageCapture pour permettre l'enregistrement d'images dans Uri et OutputStream. Combinaison des méthodes takePicture surchargées en une seule. Mise à jour de l'application de test pour utiliser Uri comme exemple canonique. (Ia3bec)
  • Preview.PreviewSurfaceProvider a été renommé Preview.SurfaceProvider. SurfaceProvider n'exige plus des développeurs qu'ils créent leur propre ListenableFuture, et il est désormais possible de fournir une Surface via un nouvel objet SurfaceRequest. La méthode Preview.getPreviewSurfaceProvider() a été supprimée en raison d'un usage abusif potentiel lorsque Preview est associé à d'autres classes telles que PreviewView. (I20105)
  • Ajout de getTargetRotation() et getTargetName() à Preview. (Iceee7)
  • Ajout de getTargetRotation(), getBackpressureStrategy() et getImageQueueDepth() dans ImageAnalysis. (I9d6d9)
  • Ajout de getTargetRotation() et getCaptureMode() dans ImageCapture(). (I5bc17)
  • Les arguments qui étaient auparavant transmis dans ImageCapture.OnImageSavedCallback.onError() et ImageCapture.OnImageCapturedCallback.onError() ont été remplacés par un seul argument ImageCaptureException, qui contient toujours toutes les informations transmises précédemment.
  • L'argument de fichier précédemment transmis dans ImageCapture.OnImageSavedCallback.onImageSaved() a été supprimé. (I750d2)
  • Les classes Preview et ImageCapture sont désormais marquées comme finales. (I2500b)
  • API mise à jour, avec la fusion des méthodes getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() et getLinearZoom() de CameraInfo dans getZoomState(), ce qui renvoie une instance ZoomState. (Ib19fe)
  • Suppression des champs d'API OPTION_TARGET_CLASS et OPTION_TARGET_NAME de CameraXConfig, car ils ne sont destinés qu'à une bibliothèque interne. Constructeur supprimé pour CameraXConfig.Builder. (I96912)
  • Suppression de l'obligation pour l'application d'étendre Application afin d'initialiser CameraX. CameraX est maintenant initialisé avec une configuration Camera2 par défaut tant que l'artefact camera-camera2 est inclus dans le fichier build.gradle de l'application. (I58ff5) (b/146923574)

Camera-Camera2 version 1.0.0-alpha09

22 janvier 2020

Publication d'androidx.camera:camera-camera2:1.0.0-alpha09. Liste des commits de la version 1.0.0-alpha09

Modifications apportées à l'API

  • Ajout du chemin d'interopérabilité de Camera2 pour extraire un ID d'appareil photo Camera2. Vous pouvez extraire l'ID de l'appareil photo de CameraInfo à l'aide de Camera2CameraInfo.extractCameraId(). L'exemple de code suivant montre comment procéder :

    Camera camera = provider.bindToLifecycle(...);
    String cameraId =
        Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
    

    La classe Camera2CameraInfo nécessite la classe markerClass ExperimentalCamera2Interop.

Camera-Core version 1.0.0-alpha09

22 janvier 2020

Publication d'androidx.camera:camera-core:1.0.0-alpha09. Liste des commits de la version 1.0.0-alpha09

Modifications apportées à l'API

  • Le paramètre SurfaceOrientedMeteringPointFactory useCaseForSurface a été renommé useCaseForAspectRatio, et la documentation de référence a été étoffée.
  • Les méthodes FocusMeteringAction.Builder.from() sont remplacées par les constructeurs FocusMeteringAction.Builder().
  • Suppression de DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float). Les applications doivent utiliser le constructeur qui accepte un paramètre Display et transmet l'affichage actuel.
  • Améliorations de Javadoc pour les API de ciblage et de mesure concernant les indicateurs MeteringMode et 3A, et utilisation du paramètre Display.
  • Documentation de référence étoffée pour setZoomRatio et setLinearZoom.

Corrections de bugs

  • Résolution des problèmes liés à la fermeture, puis à l'ouverture des appareils photo, ce qui entraînait l'échec de la vérification de la condition préalable.
  • Correction d'une exception ConcurrentModificationException qui pouvait se produire lors de l'utilisation des API Torche et Zoom.
  • Résolution du problème lié à la sélection de résolutions plus proches de la résolution demandée lorsqu'une taille mod16 était disponible.
  • Les API startFocusMetering et cancelFocusMetering se comportent à présent comme indiqué, avec des délais corrects et la génération d'erreurs lorsque nécessaire.
  • Résolution d'un problème qui survenait lorsqu'une résolution cible spécifique était demandée avec un format de recadrage sur un appareil non compatible avec ce type de tailles. À présent, une taille non recadrée d'une résolution suffisante par rapport à la requête d'origine est sélectionnée, le cas échéant.

Camera-Camera2 version 1.0.0-alpha08

18 décembre 2019

Publication d'androidx.camera:camera-camera2:1.0.0-alpha08. Liste des commits de la version 1.0.0-alpha08

Problèmes connus

  • Toutes les options de demande de capture de Camera2 ne fonctionnent pas lorsque vous utilisez l'interopérabilité Camera2. Si l'option demandée n'est pas compatible, la session ne démarre pas, et une erreur de ce type peut s'afficher : 09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination

Correction de bugs

  • Résolution d'un problème d'affichage d'un écran noir d'aperçu après la rotation ou le basculement entre les appareils photo avant ou arrière pour les niveaux d'API 21 et 22.

Modifications apportées à l'API

  • Expérimental : ajout d'un chemin d'interopérabilité camera2 pour l'extraction de l'identifiant de l'appareil photo.

Camera-Core version 1.0.0-alpha08

18 décembre 2019

Publication d'androidx.camera:camera-core:1.0.0-alpha08. Liste des commits de la version 1.0.0-alpha08

Problèmes connus

  • Les applications qui utilisent PreviewView ou CameraView n'ont pas toujours le bon format d'aperçu. Cela se produit après la mise en pause ou la reprise sur certains appareils FULL, tels que le Pixel2.

Correction de bugs

  • Mise à jour de la documentation pour FocusMeteringAction et CameraControl.
  • Implémentation de TorchControl pour enableTorch() et getTorchState().

Modifications apportées à l'API

  • Masquage d'IntDefs et déplacement des constantes IntDef en dehors de la définition IntDef.
  • rotationDegrees déplacé de la classe OnImageCaptureCallback vers ImageInfo.
  • rotationDegrees déplacé de la classe Analyzer vers ImageInfo.

Camera-Camera2 version 1.0.0-alpha07

4 décembre 2019

Publication d'androidx.camera:camera-camera2:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07 de camera-camera2

  • Camera2Config peut désormais être utilisé pour initialiser et configurer une implémentation basée sur Camera2 pour CameraX. Pour en savoir plus sur l'utilisation de cette fonctionnalité lors de l'initialisation, consultez la section camera-core dans les notes de version.
  • L'interopérabilité de camera2 est désormais identifiée comme expérimentale et déplacée vers un package distinct, androidx.camera.camera2.interop..

Camera-Core version 1.0.0-alpha07

4 décembre 2019

Publication d'androidx.camera:camera-core:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07 de camera-core

Notez que cette version alpha comporte des changements majeurs en préparation de la version bêta. Nous vous recommandons de passer en revue les modifications et de partager vos commentaires dans le groupe Google de CameraX. Pour les développeurs qui utilisent CameraX dans les applications du Play Store, nous vous recommandons d'attendre la version bêta officielle avant de mettre à niveau la bibliothèque dans vos applications.

Modifications apportées à l'API

  • Important : L'initialisation de CameraX a changé. Les applications doivent implémenter CameraXConfig.Provider et utiliser la configuration Camera2Config par défaut fournie par androidx.camera.camera2. Voici un exemple d'utilisation courant :

    import androidx.camera.camera2.Camera2Config
    import androidx.camera.core.CameraXConfig
    
    public class MyCameraXApplication : Application(),  CameraXConfig.Provider {
        override fun getCameraXConfig(): CameraXConfig {
                return Camera2Config.defaultConfig(this)
        }
    }
    
  • La classe CameraX a été supprimée. Les éléments bindToLifecycle(), unbind(), unbindAll(), isBound() et hasCamera() précédemment fournis par l'appel de la classe CameraX sont désormais disponibles via ProcessCameraProvider.

  • Une instance par processus de ProcessCameraProvider est obtenue de manière asynchrone à l'aide de la méthode statique ProcessCameraProvider.getInstance(), qui renvoie un ListenableFuture qui fournit le ProcessCameraProvider une fois l'opération terminée. Ici, elle apparaît dans onCreate() pour une utilisation courante. Vous pouvez passer des appels à getInstance() ultérieurement dans le cycle de vie de l'activité pour différer la latence d'initialisation (par exemple, lorsqu'une action de l'utilisateur ouvre l'interface utilisateur d'un appareil photo).

    import androidx.camera.lifecycle.ProcessCameraProvider
    import com.google.common.util.concurrent.ListenableFuture
    
    class MainActivity : AppCompatActivity() {
       private lateinit var cameraProviderFuture : ListenableFuture<ProcessCameraProvider>
       override fun onCreate(savedInstanceState: Bundle?) {
           cameraProviderFuture = ProcessCameraProvider.getInstance(this);
      }
    
  • Un écouteur peut être ajouté au ListenableFuture renvoyé par getInstance(). Ainsi, le fournisseur d'appareil photo pourra être récupéré à partir de Future sans bloquer au niveau de Future.get().

    cameraProviderFuture.addListener(Runnable {
      val cameraProvider = cameraProviderFuture.get()
      cameraProvider.bindToLifecycle(...)
    }, ContextCompat.getMainExecutor(this))
    
  • La sélection de l'appareil photo est désormais effectuée par un sélecteur au lieu d'un cas d'utilisation spécifique.

    val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()
    
  • CameraProvider.bindToLifecycle reçoit le propriétaire du cycle de vie, le sélecteur d'appareil photo et les cas d'utilisation, qui sont ensuite liés au propriétaire du cycle de vie donné et s'exécutent pour l'appareil photo sélectionné.

    cameraProvider.bindToLifecycle(this as LifecycleOwner,
           cameraSelector, preview, imageAnalysis)
    
  • Les classes "Config" des cas d'utilisation sont supprimées. Créez plutôt des cas d'utilisation directement en définissant des options au niveau du compilateur de chaque cas d'utilisation. Par exemple :

    preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
    
  • Le cas d'utilisation Preview a été mis à jour pour accepter une surface créée et gérée par l'application afin de garantir les bonnes pratiques Android. Il est fortement recommandé d'utiliser la classe de vue PreviewView fournie dans le package camera-view.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • Consultez la documentation pour joindre une surface gérée par une application. Dans ce cas, l'application gère le cycle de vie de la surface.

  • Important : L'implémentation de la méthode ImageAnalysis doit appeler image.close() au niveau des images reçues lorsque vous avez fini de les utiliser. Sinon, il est possible que vous ne receviez pas les nouvelles images ou que l'appareil photo se fige, en fonction du paramètre de contre-pression. Pour en savoir plus, consultez la documentation de référence.

  • ImageAnalysis ImageReaderMode est désormais remplacé par une stratégie de contre-pression intdef.

  • ImageProxy.getImage() est marqué comme expérimental. Les applications doivent annoter l'utilisation, par exemple via @androidx.camera.core.ExperimentalGetImage.

  • L'annotation UIThread n'est plus obligatoire pour Analyzer.

  • La fonction ImageAnalysis.clearAnalyzer() a été ajoutée pour supprimer un analyseur.

  • Les écouteurs avec plusieurs méthodes sont maintenant accompagnés de la mention "Callback" :

    • ImageCapture.OnImageCapturedListener est désormais ImageCapture.OnImageCapturedCallback.
    • ImageCapture.OnImageSavedListener est désormais ImageCapture.OnImageSavedCallback.
    • VideoCapture.OnVideoSavedListener est désormais VideoCapture.OnVideoSavedCallback.
  • Les énumérations ont été remplacées par IntDef.

  • Des commandes de zoom ont été ajoutées :

    • CameraControl.setLinearZoom()
    • CameraControl.setZoomRatio()
    • CameraInfo.getLinearZoom()
    • CameraInfo.getMaxZoomRatio()
    • CameraInfo.getZoomRatio()
  • CameraInfo.hasFlashUnit() a été ajouté pour déterminer si le matériel flash ou la lampe de poche sont présents.

  • CameraInfo.isFlashAvailable() a été supprimé. La lampe de poche remplace la fonctionnalité Flash. Pour en savoir plus, consultez la documentation de référence.

  • Les champs ImageCapture.Metadata sont remplacés par les accesseurs get/set/is.

  • startFocusMetering et cancelFocusMetering renvoient désormais ListenableFutures, qui représentent l'opération asynchrone de l'appel.

  • Les éléments MeteringPoints fonctionnent désormais comme des handles pour les actions de mesure et sont générés par des fabriques. Les applications doivent utiliser les fabriques existantes plutôt que des fabriques personnalisées.

Problèmes résolus

  • Résolution d'un problème qui survenait lors de la prise d'une photo après une pause où des photos étaient en attente de finalisation.
  • Problème connu : CameraControl.enableTorch() fonctionne, mais la valeur ListenableFuture<Void> renvoyée est toujours un état complete(success) immédiat, même en l'absence de flash. Les versions ultérieures corrigeront ce comportement : en l'absence de flash, enableTorch(true) échouera immédiatement (aucune demande ne sera envoyée à CaptureSession), et TorchState restera désactivé.
  • Problème connu : startFocusAndMetering et cancelFocusAndMetering lancent et annulent la mesure de la mise au point, mais renvoient immédiatement un état completed (success) ne représentant pas le comportement documenté. L'élément FocusMeteringResult de ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering() est un résultat fictif dont l'état est isFocusSuccessful() et qui est toujours "false", ce qui diffère du comportement souhaité et documenté.
  • Problème connu : une fabrique de points de mesure à utiliser avec les événements tactiles PreviewView est en cours de développement. Pour le moment, les applications qui relient des surfaces gérées personnalisées peuvent utiliser les fabriques de points de mesure existantes. Sinon, aucune fonctionnalité de mise au point tactile n'est disponible pour PreviewView.

Camera-Camera2 et Camera-Core version 1.0.0-alpha06

9 octobre 2019

Publication d'androidx.camera:camera-camera2:1.0.0-alpha06 et d'androidx.camera:camera-core:1.0.0-alpha06. Il s'agit des commits inclus dans camera-camera2:1.0.0-alpha06 et de ceux inclus dans camera-core:1.0.0-alpha06.

Nouvelles fonctionnalités

Modifications apportées à la configuration des formats :

  • setTargetAspectRatioMode() a été ajouté et accepte un argument d'énumération. Le format est donc défini avec les options RATIO_4_3 ou RATIO_16_9 au lieu d'un format arbitraire. Ce changement permet de mieux refléter le fait que seuls certains formats sont fournis par l'appareil photo, plutôt que n'importe quel format arbitraire.
    • Actuellement, les seuls formats disponibles sont 16:9 et 4:3. Seuls certains appareils proposent le format 1:1 et seulement à des résolutions limitées. Les applications qui conçoivent une interface ou un traitement 1:1 doivent utiliser les formats 16:9 ou 4:3 plus flexibles, et recadrer l'écran ou traiter une sous-région.
    • Ces formats visent à utiliser la zone de capteurs maximale.
  • getTargetAspectRatio() a été ajouté aux API de configuration des cas d'utilisation et renvoie le format pour lequel la sortie du cas d'utilisation est ciblée.
  • La méthode setTargetAspectRatio(Rational aspectRatio) a été remplacée par setTargetAspectRatioCustom(Rational aspectRatio) pour ImageCapture. Lorsqu'elle est définie, la sortie ImageCapture est recadrée en conséquence.

API d'exécuteur

  • Les fonctions suivantes acceptent un paramètre qui permet à l'application de contrôler l'exécuteur sur lequel la fonction a lieu.
    • API Preview.setOnPreviewOutputUpdateListener(). Si l'exécuteur n'est pas présent pour cette fonction, elle s'exécute sur le thread principal.
    • Preview.setOnPreviewOutputUpdateListener
    • FocusMeteringAction.Builder.setAutoFocusCallback
    • ImageAnalysis.setAnalyzer
    • ImageCapture.takePicture
    • CameraView.takePicture
    • CameraView.startRecording
    • VideoCapture.startRecording

Ajout de CameraInfo avec les API de vérification de la disponibilité du flash et de rotation des capteurs.

  • Ajout de CameraInfo et d'une méthode getCameraInfo, qui permet aux applications de vérifier si des informations "CameraInfo" sur l'orientation de l'objectif sont disponibles et s'il existe un flash sur cet appareil photo. Exemple :

    try {
        CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing);
        LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable();
        flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE);
    } catch (CameraInfoUnavailableException e) {
        Log.w(TAG, "Cannot get flash available information", e);
        flashToggle.setVisibility(View.VISIBLE);
    }
    
  • CameraInfo.getSensorRotationDegrees() a été ajouté. Cet attribut indique l'orientation du capteur de l'appareil photo par rapport à l'orientation naturelle de ce dernier ou, pour plus de commodité, par rapport à une orientation décrite par une rotation de la surface (qui désigne une orientation par rapport à l'orientation naturelle).

Modifications de l'API et corrections de bugs

  • Format : pour chaque cas d'utilisation, les applications ne doivent appeler que setTargetResolution() ou setTargetAspectRatio(). L'appel des deux éléments sur le même compilateur renvoie une erreur.
    • En général, il est recommandé d'utiliser setTargetAspectRatio() en fonction de la conception de l'interface utilisateur de l'application. Des solutions spécifiques sont basées sur le cas d'utilisation. Par exemple, l'aperçu est proche de la résolution d'écran, et la capture d'image fournit des images fixes en haute résolution. Pour en savoir plus, consultez le tableau des résolutions automatiques.
    • Utilisez setTargetResolution() dans des cas plus spécifiques, par exemple lorsqu'une résolution minimale (pour enregistrer les calculs) ou maximale (pour le traitement des détails) est requise.
  • API d'exécuteur : suppression de l'appel setCallbackHandler() dans les API de configuration de cas d'utilisation. À la place, les applications peuvent définir l'exécuteur en tant que paramètre dans plusieurs autres API qui spécifient un rappel.
  • Mise à jour des annotations dont la valeur est "null" pour diverses fonctions.
  • Le problème qui entraînait le déclenchement de java.lang.IllegalStateException at Camera$StateCallback.onError à l'ouverture de l'appareil photo a été résolu.
  • Résolution du problème qui entraînait la sélection de résolutions trop petites (moins de 640 x 480) lorsque l'application demandait des résolutions plus grandes ou par défaut, ce qui générait une image d'aperçu grossière ou floue. Les applications qui nécessitent des résolutions plus faibles peuvent les demander explicitement.
  • Résolution d'un problème qui entraînait l'affichage d'un écran noir (échec du démarrage de l'appareil photo) après un retour d'intent qui lançait une autre application d'appareil photo.
  • Correction d'un bug qui provoquait l'erreur suivante lorsque des applications étaient démarrées ou arrêtées à plusieurs reprises : java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!
  • Correction de l'erreur suivante qui se produisait lors de la désactivation d'ImageAnalysis : java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more.
  • Ajout de tests supplémentaires pour le flux de déconnexion de l'appareil photo.
  • Amélioration de la robustesse du système de test lors des tests consécutifs des appareils photo.

Camera-Camera2 et Camera-Core version 1.0.0-alpha05

5 septembre 2019

Publication d'androidx.camera:camera-camera2:1.0.0-alpha05 et d'androidx.camera:camera-core:1.0.0-alpha05. Il s'agit des commits inclus dans camera-camera2:1.0.0-alpha05 et de ceux inclus dans camera-core:1.0.0-alpha05.

  • Modification de l'API avec changement de nom des variables d'erreur de cas d'utilisation :

    • ImageCapture.UseCaseError a été renommé ImageCapture.ImageCaptureError.
    • VideoCapture.UseCaseError a été renommé VideoCapture.VideoCaptureError.
  • Ajout de l'API CameraControl avec les API Appuyer pour sélectionner.

    • Ajout d'une API permettant d'obtenir CameraControl à partir de CameraX, sélectionné par orientation de l'objectif :

      CameraX.getCameraControl(LensFacing lensFacing)

    • Ajout de MeteringPointFactory, MeteringPoint, MeteringMode et FocusMeteringAction pour exécuter la fonctionnalité Appuyer pour sélectionner :

      MeteringPointFactory factory = new SensorOrientedMeteringPointFactory(width, height);
      MeteringPoint point = factory.createPoint(x, y);
      FocusMeteringAction action = FocusMeteringAction.Builder.from(point,
                                       MeteringMode.AF_ONLY)
          .addPoint(point2, MeteringMode.AE_ONLY) // could have many
          .setAutoFocusCallback(new OnAutoFocusListener(){
              public void onFocusCompleted(boolean isSuccess) {
              }
          })
          // auto calling cancelFocusAndMetering in 5 sec.
          .setAutoCancelDuration(5, TimeUnit.Second)
          .build();
      
    • Ajout de l'API pour CameraControl pour démarrer et annuler la mesure de la mise au point :

      getCameraControl(lensFacing).startFocusAndMetering(action); getCameraControl(lensFacing).cancelFocusAndMetering();

    • Ajout d'API pour les fabriques de points de mesure permettant de convertir les coordonnées des pressions en coordonnées de capteur, en fonction des classes de vue :

      MeteringPointFactory factory = new TextureViewMeteringPointFactory(textureView); MeteringPointFactory factory = new DisplayOrientedMeteringPointFactory(context, lensFacing, viewWidth, viewHeight);

  • Mise en application de l'appel des méthodes suivantes sur le thread principal (UI), qui génère une exception IllegalStateException lorsqu'elles ne sont pas présentes. Les versions ultérieures permettront l'utilisation sur d'autres threads et assureront la sérialisation.

    • CameraX.bindToLifecycle()
    • CameraX.unbind()
    • CameraX.unbindAll()
    • ImageAnalysis.setAnalyzer()
    • ImageAnalysis.getAnalyzer()
    • ImageAnalysis.removeAnalyzer()
    • Preview.removePreviewOutputListener()
    • Preview.getOnPreviewOutputUpdateListener()
    • Preview.setOnPreviewOutputUpdateListener()
  • Différents paramètres de configuration acceptent désormais les paramètres "null", et les getters correspondants peuvent renvoyer la valeur "null".

  • Résolution du problème qui survenait pendant les tests sur les émulateurs qui ne prennent pas en charge les paramètres AF/AE/AWB.

  • Correction d'un bug qui entraînait un plantage en cas de rotation lors de l'analyse de l'image.

  • Correction d'un bug qui provoquait l'affichage de l'aperçu au noir au démarrage (pas de données d'appareil photo) après la rotation ou le basculement entre les appareils photo avant et arrière.

  • Suppression des tests pour plusieurs cas d'utilisation simultanés d'analyse d'images. Pour garantir la compatibilité, les applications ne doivent joindre qu'un seul cas d'utilisation d'analyse d'image.

  • Ajout de tests Robolectric initiaux pour un appareil photo fictif dans la suite de tests de l'appareil photo (en cours).

  • Suppression du test de Camera2Inititalizer, car sa couverture n'était pas claire ou prêtait à confusion.

Camera-Camera2 et Camera-Core version 1.0.0-alpha04

7 août 2019

Publication d'androidx.camera:camera-camera2:1.0.0-alpha04 et d'androidx.camera:camera-core:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04

Nouvelles fonctionnalités

Modifications apportées à la sélection du format et de la résolution

L'objectif de CameraX est d'initialiser correctement une session d'appareil photo. Par conséquent, CameraX fait des compromis entre le format et la résolution en fonction de la capacité de l'appareil afin d'atteindre son objectif premier : démarrer une session de capture. Il est donc possible que les requêtes exactes ne soient pas traitées. Voici plusieurs raisons possibles :

  • Appareils non compatibles avec la résolution demandée
  • Problèmes de compatibilité, par exemple sur les anciens appareils sur lesquels certaines résolutions doivent être utilisées pour fonctionner correctement
  • Disponibilité de certains formats uniquement avec certaines proportions sur certains appareils
  • Préférence pour "mod16 le plus proche" pour l'encodage JPEG ou vidéo (voir CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP)

Bien que CameraX crée et gère la session, vérifiez toujours les tailles d'image renvoyées dans la sortie du cas d'utilisation de votre code et apportez les ajustements nécessaires.

Des modifications ont été apportées à la définition des résolutions et des formats, afin de rendre l'API plus claire :

  • Le cas d'utilisation Preview est désormais considéré comme utilisant le format 4:3 par défaut si aucun format n'est défini.
  • Lorsque CameraX considère en interne les modifications apportées aux résolutions et aux formats demandés en fonction de la capacité de l'appareil, il essaie d'abord de conserver le même format (via l'un des appels setTargetAspectRatio ou setTargetResolution).
  • Une version "mod16 le plus proche" de la résolution est considérée comme ayant le même format.

Mode de non blocage de l'analyse d'images

  • Le comportement d'ImageReaderMode.ACQUIRE_LATEST_IMAGE n'est plus bloquant. Il acquiert la dernière image de la file d'attente, mais supprime les images inutilisées en continu pour que le pipeline de l'appareil photo évite le blocage.
  • L'analyseur peut contenir une seule image indéfiniment, sans bloquer le pipeline.
  • Si l'application fournit un exécuteur qui se bloque ensuite, le cas d'utilisation d'analyse d'image se bloquera.
  • L'exécuteur par défaut défini en interne se comporte comme un exécuteur non bloquant.

Correction de bugs

  • Résolution du problème d'expiration du délai d'attente de la convergence de 3A lors de la capture d'images sur des appareils sans mise au point automatique, exposition automatique ni équilibrage automatique du blanc.
  • Résolution du problème lié à la prise rapide de photos avec ImageCapture. Correction de l'erreur : java.lang.IllegalStateException: maxImages (2) has already been acquired
  • Résolution du problème qui entraînait l'appel de setLensFacing pour un cas d'utilisation, ce qui générait java.lang.IllegalArgumentException: Unable to get camera ID for use case.
  • Résolution du problème dans le cadre duquel l'appareil LEGACY nécessitait un format spécifique en tant que résolution JPEG maximale.
  • Résolution du problème lié à l'arrière-plan de l'application en cours d'ouverture de l'appareil photo.
  • Résolution du problème lié à l'API 25 ou inférieure, suppression de l'erreur checkAndUpdateEglState: invalid current EGLDisplay.
  • Résolution du problème lié à la dissociation de l'aperçu après l'activation et le démarrage des extensions.
  • Les artefacts de build associés à camera-view et camera-extensions sont désormais publiés en version alpha.

Camera-Camera2 et Camera-Core version 1.0.0-alpha03

2 juillet 2019

Publication d'androidx.camera:camera-core:1.0.0-alpha03 et d'androidx.camera:camera-camera2:1.0.0-alpha03. Liste des commits de la version 1.0.0-alpha03

Modifications apportées à l'API

  • Ajout d'une précision Javadoc pour "target" dans les appels de configuration setTarget

Camera-Core

  • Résolution du problème de plantage de la surface d'entrée/sortie non configurée lors d'une ouverture/fermeture rapide ou d'une liaison/dissociation.
  • Passage à de nouvelles implémentations d'état.
  • Corrections apportées pour que les tests soient plus robustes.
  • Le test d'intégration principal affiche désormais le temps de capture des photos.
  • Développement d'une classe de compatibilité interne pour les exécuteurs.
  • Les images de capture de l'application de test attendent que la fin de la capture de l'image précédente, et la stabilité a été améliorée.

Extensions

  • Ajout de vérifications de la gestion des versions.
  • Couverture de test supplémentaire : rappels d'événements d'extension.
  • Améliorations concernant les images et les métadonnées correspondantes en interne.
  • Correction du changement de mode dans l'application de test.

Camera-Camera2 et Camera-Core version 1.0.0-alpha02

5 juin 2019

Publication d'androidx.camera:camera-core:1.0.0-alpha02 et d'androidx.camera:camera-camera2:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02

Corrections de bugs

  • Résolution du problème de division par zéro lors de l'utilisation de l'émulateur.
  • Correction d'une erreur NullPointerException/Surface Abandoned sur certains appareils lors de la prise rapide de photos tout en détachant lors de la liaison et de la dissociation rapides des cas d'utilisation.
  • Résolution d'un problème interne pour que les mises à jour des requêtes de capture s'appliquent de manière cohérente à toutes les surfaces.
  • Amélioration de la stabilité lors du redémarrage des cas d'utilisation dans de nouvelles instances d'application.
  • Modifications de l'architecture interne pour préparer la prise en charge des exécuteurs dans l'API.
  • Clarifications Javadoc supplémentaires sur la gestion du cycle de vie et de la classe CameraX.
  • Ajout d'un test d'instrumentation pour l'application de test des performances Antelope.
  • Suppression de "-keepattributes Signature" dans la configuration ProGuard de l'application.

Camera-Camera2 et Camera-Core 1.0.0-alpha01

7 mai 2019

Publication d'androidx.camera:camera-core:1.0.0-alpha01 et d'androidx.camera:camera-camera2:1.0.0-alpha01. Liste des commits de la version 1.0.0-alpha01

Camera-Lifecycle version 1.0.0-beta11

14 octobre 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta11. Liste des commits de la version 1.0.0-beta11

Correction de bugs

  • <UseCase>.getTargetRotation() renvoie Surface.ROTATION_0 s'il est appelé avant d'être associé à une instance de Camera, à moins qu'une rotation cible n'ait été définie dans le compilateur ou dans le cas d'utilisation. (I80fcd)

Camera-Lifecycle version 1.0.0-beta10

23 septembre 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta10. Liste des commits de la version 1.0.0-beta10

Correction de bugs

Camera-Lifecycle version 1.0.0-beta09

16 septembre 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta09. Liste des commits de la version 1.0.0-beta09

Camera-Lifecycle version 1.0.0-beta08

19 août 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta08. Liste des commits de la version 1.0.0-beta08

Corrections de bugs

  • L'initialisation ne devrait plus planter lorsque vous utilisez un contexte qui ne renvoie pas d'objet Application à partir de Context.getApplicationContext(). (I3d3c9, b/160817073)

Camera-Lifecycle version 1.0.0-beta07

22 juillet 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta07. Liste des commits de la version 1.0.0-beta07

Camera-Lifecycle version 1.0.0-beta06

24 juin 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta06. Liste des commits de la version 1.0.0-beta06

Modifications apportées à l'API

  • CameraX peut désormais être configurée avec ProcessCameraProvider#configureInstance() avant d'appeler ProcessCameraProvider#getInstance(). Cela permet de personnaliser l'élément CameraXConfig sans avoir à implémenter CameraXConfig.Provider dans la classe Application de l'application. (Ia1a8d)

Camera-Lifecycle version 1.0.0-beta05

10 juin 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta05. Liste des commits de la version 1.0.0-beta05

Correction de bugs

  • Résolution du problème de plantage au démarrage de l'application lorsque l'appareil photo était initialisé et que le téléphone était en mode Ne pas déranger. Une exception InitializationException contient un élément CameraUnavailableException qui est défini sur l'élément ListenableFuture du résultat d'initialisation au lieu de faire planter l'application. (I9909a, b/149413835)

Camera-Lifecycle version 1.0.0-beta04

27 mai 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta04. Liste des commits de la version 1.0.0-beta04

Camera-Lifecycle version 1.0.0-beta03

15 avril 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta03. Liste des commits de la version 1.0.0-beta03

Correction de bugs

  • Correction d'une régression à partir de la version bêta 03, où l'appel de bindToLifecycle() sans aucun UseCase générait une exception. Cela empêchait la récupération d'un objet Camera sans la liaison d'un UseCase.
  • Correctifs permettant la publication de camera-core

Camera-Lifecycle version 1.0.0-beta01

26 février 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta01. Liste des commits de la version 1.0.0-beta01

Correction de bugs

  • Correction de la documentation pour noter que, lors de l'obtention d'un ProcessCameraProvider au cours de l'initialisation, une configuration par défaut est utilisée, et que l'extension de la classe Application est facultative. (I5e395)

Camera-Lifecycle version 1.0.0-beta02

1er avril 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-beta02. Liste des commits de la version 1.0.0-beta02

Correction de bugs

  • Mise à jour pour prendre en charge les corrections de bugs dans les artefacts camera-camera2:1.0.0-beta02 et camera-core:1.0.0-beta02.

Camera-Lifecycle version 1.0.0-alpha10

10 février 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-alpha10. Liste des commits de la version 1.0.0-alpha10

Modifications apportées à l'API

  • Ajout de l'annotation @MainThread aux méthodes BindToLifecycle, unbind et unbindAll. (I990d2)

Camera-Lifecycle version 1.0.0-alpha03

22 janvier 2020

Publication d'androidx.camera:camera-lifecycle:1.0.0-alpha03. Liste des commits de la version 1.0.0-alpha03

Mises à jour

  • Différents correctifs et mises à jour pour prendre en charge les modifications apportées à Camera Core et Camera2.

Camera-Lifecycle version 1.0.0-alpha02

18 décembre 2019

Publication d'androidx.camera:camera-lifecycle:1.0.0-alpha02. Liste des commits de la version 1.0.0-alpha02

Modifications de la dépendance

  • Mise à jour pour utiliser androidx.camera:camera-core:1.0.0-alpha08.

Camera-Lifecycle version 1.0.0-alpha01

4 décembre 2019

Publication d'androidx.camera:camera-lifecycle:1.0.0-alpha01. Liste des commits de la version 1.0.0-alpha01 de camera-lifecycle

Remarques relatives à l'API

  • L'artefact camera-lifecycle est ajouté. Il fournit l'interface LifeCycleCameraProvider et une implémentation appelée ProcessCameraProvider, qui offre de nombreuses fonctions de la classe CameraX précédente et qui est obtenue via une méthode getInstance().
  • Les applications doivent inclure la bibliothèque camera-lifecycle pour utiliser CameraX.
  • Consultez les remarques de la section camera-core pour découvrir comment initialiser CameraX à l'aide d'un ProcessCameraProvider.

Camera-Extensions et Camera-View version 1.0.0

Version 1.0.0-alpha32

15 décembre 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha32 et d'androidx.camera:camera-view:1.0.0-alpha32. Liste des commits de la version 1.0.0-alpha32

Modifications apportées à l'API

  • Suppression des annotations @RequiresApi(21) inutiles des classes/interfaces internes. (I8e286, b/204917951)
  • Mise à jour des fichiers d'API pour l'artefact camera-extensions. (If683a, b/161377155)

Correction de bugs

  • L'application ne peut plus activer les modes d'extension lors de la liaison de VideoCapture. Les extensions CameraX ne sont compatibles qu'avec ImageCapture et Preview. VideoCapture n'est pas encore pris en charge. Si l'application associe VideoCapture et active un mode d'extension, une erreur IllegalArgumentException est générée. (I0d87b)
  • CameraSelector#filter ne génère plus d'exception IllegalArgumentException lorsque l'ensemble de résultats est vide. (I27804)
  • L'API ExtensionsManager#getInstance a été renommée getInstanceAsync, car elle renvoie ListenableFuture. Le suffixe asynchrone du nom de la fonction peut indiquer clairement qu'il s'agit d'une fonction asynchrone. (I279d2)
  • Suppression du paramètre de résolution de l'API ExtensionsManager#getEstimatedCaptureLatencyRange, car les utilisateurs ne peuvent pas identifier quelles tailles sont acceptées pour le cas d'utilisation ImageCapture et ne peuvent pas distinguer les informations de latence renvoyées pour la taille de sortie de capture maximale ou le paramètre de résolution d'entrée. (I74bb2)
  • Transfert du paramètre CameraProvider des fonctions ExtensionsManager vers l'API getInstance(). De la sorte, les utilisateurs n'ont pas besoin d'ajouter le paramètre CameraProvider chaque fois qu'ils appellent les fonctions ExtensionsManager. (Ic7e48)

Version 1.0.0-alpha31

17 novembre 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha31 et d'androidx.camera:camera-view:1.0.0-alpha31. Liste des commits de la version 1.0.0-alpha31

Modifications apportées à l'API

  • Ajout de CameraSelector#filter à l'API publique pour filtrer une liste d'éléments CameraInfos basée sur un CameraSelector. (I105d0)

Correction de bugs

  • Résolution d'un problème de plantage qui survenait lors du changement rapide du mode extensions sur certains appareils. (Iebbef)

Version 1.0.0-alpha30

13 octobre 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha30 et d'androidx.camera:camera-view:1.0.0-alpha30. Liste des commits de la version 1.0.0-alpha30

Modifications apportées à l'API

  • Ajout de l'annotation @RequiresApi(21) à toutes les classes CameraX et suppression de minSdkVersion dans le fichier AndroidManifest.xml. Camera-core sera ainsi facilement intégré aux applications dont la version de SDK minimale est inférieure à 21, mais qui souhaitent utiliser de manière conditionnelle des chemins de code basés sur l'API 21 ou version ultérieure. Pour toute application disposant d'une version de SDK minimale 21 ou ultérieure, cette modification ne nécessite aucune action. (Ie7f2e, b/200599470)

Correction de bugs

  • Correction du problème abstractionMethodError qui survenait lorsque ProGuard était activé. (Iae468, b/201177844)

Version 1.0.0-alpha29

29 septembre 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha29 et d'androidx.camera:camera-view:1.0.0-alpha29. Liste des commits de la version 1.0.0-alpha29

Modifications apportées à l'API

  • L'annotation ExperimentalUseCaseGroup a été supprimée, car les API ne sont plus expérimentales. (I01ef5)
  • Suppression de RotationProvider#removeAllListeners(). Veuillez utiliser RotationProvider#removeListener(...) à la place. (Id9d4a)
  • Mise à jour de la classe RotationReceiver : modification de l'écouteur set/clear pour les actions d'ajout et de suppression (add/remove/removeAll, remove) de la variante setListener qui utilise le thread principal par défaut, et ajout d'une annotation aux méthodes. (Ib1669)

Corrections de bugs

  • ExtensionMode#BEAUTY a été renommé FACE_RETOUCH pour présenter correctement le fonctionnement du mode d'extension. (I61f54, b/198515274)
  • Résolution du problème de fermeture inattendue de l'appareil photo en cas d'utilisation de CameraController et de PreviewView dans une même activité. (Ibfd18, b/197539358)

Version 1.0.0-alpha28

18 août 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha28 et d'androidx.camera:camera-view:1.0.0-alpha28. Liste des commits de la version 1.0.0-alpha28

Modifications apportées à l'API

  • L'annotation ExperimentalUseCaseGroupLifecycle a été supprimée, car les API ne sont plus expérimentales. (I17b85)
  • RotationListener refactorisé et renommé en RotationProvider. Il continue de proposer la même fonctionnalité avec une API légèrement différente. (Idffc5)
  • Remplacement du nom TAP_TO_FOCUS_UNSUCCESSFUL par TAP_TO_FOCUS_NOT_FOCUSED et du nom TAP_TO_FOCUS_SUCCESSFUL par TAP_TO_FOCUS_FOCUSED. Finalisation d'OutputSize. (I099fa)

Correction de bugs

  • Suppression des classes <EffectName><UseCase>Extender obsolètes, d'ExtensionsErrorListener et des API ExtensionsManager associées. (I3b8c3)

Version 1.0.0-alpha27

21 juillet 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha27 et d'androidx.camera:camera-view:1.0.0-alpha27. Liste des commits de la version 1.0.0-alpha27

Modifications apportées à l'API

  • Passage de l'API de fenêtre d'affichage de l'état expérimental à un niveau supérieur. Suppression de l'annotation expérimentale de l'API. (I717ea)
  • Remplacement du nom CoordinateTransform#getTransform par CoordinateTransform#transform et mise à jour JavaDoc. (I864ae)

Correction de bugs

  • Résolution du problème d'étirement du mode PreviewView PERFORMANCE lors de son utilisation avec l'interface utilisateur de Compose. (Ie1137, b/183864890)

Version 1.0.0-alpha26

30 juin 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha26 et d'androidx.camera:camera-view:1.0.0-alpha26. Liste des commits de la version 1.0.0-alpha26

Modifications apportées à l'API

  • Ajout d'une méthode CameraController#getTapToFocusState() qui expose le dernier résultat de la fonctionnalité Appuyer pour sélectionner. (Iaccb0)
  • Ajout de fonctionnalités camera-core à CameraController : getters/setters pour le format cible, la résolution cible, le mode de capture, CameraControl et les exécuteurs personnalisés. (Iea8f2)
  • Ajout d'une classe RotationReceiver qui reçoit les modifications de rotation de la surface. Permet de définir la rotation cible lorsque l'appareil est en mode portrait ou paysage fixe. (Ib278f)
  • Nouvelles API publiques getEstimatedCaptureLatencyRange exposées dans la classe ExtensionsManager. (I6a8ec)
  • ExtensionsErrorListener obsolète. Actuellement, cette interface ne sert qu'à vérifier si Preview ou ImageCapture sont manquants lors de l'activation des modes d'extension. CameraX ajoute automatiquement un élément Preview ou ImageCapture supplémentaire pour que les fonctions de l'extension soient opérationnelles. Par conséquent, aucune erreur n'est signalée via cette interface. (I47d9e)
  • Nouvelles API publiques ExtensionsManager getInstance, isExtensionAvailable et getExtensionEnabledCameraSelector exposées, abandon des anciennes classes <EffectName><UseCase>Extender et des API associées. (I329e6)

Version 1.0.0-alpha25

2 juin 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha25 et d'androidx.camera:camera-view:1.0.0-alpha25. Liste des commits de la version 1.0.0-alpha25

Modifications apportées à l'API

  • Les API ExperimentalCameraFilter ne sont plus au stade expérimental et deviennent des API formelles. Elles peuvent être utilisées sans l'annotation OptIn. (I4bc94)
  • Ajout d'un utilitaire qui convertit les coordonnées entre les cas d'utilisation. Exemple d'utilisation : transformation des coordonnées détectée dans le cas d'utilisation ImageAnalysis et mise en évidence de l'objet identifié dans l'aperçu. (I63ab1, b/137515129)
  • Suppression de CameraView. CameraView a été remplacé par CameraController. Consultez le guide de migration pour découvrir comment effectuer la migration. (Id5005)

Correction de bugs

  • Remplacement d'ExperimentalUseCaseGroupLifecycle par ExperimentalUseCaseGroup. (I3b2ef, b/159033688)

Version 1.0.0-alpha24

21 avril 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha24 et d'androidx.camera:camera-view:1.0.0-alpha24. Liste des commits de la version 1.0.0-alpha24

Correction de bugs

  • Remplacement de l'annotation @Experimental par @RequiresOptIn pour les API expérimentales. Pour appeler des API expérimentales, utilisez androidx.annotation.OptIn au lieu de l'élément obsolète androidx.annotation.experimental.UseExperimental. (Iff226)
  • Correction du problème d'étirement de PreviewView sur le Samsung J5 Prime. (Ib10b6)

Camera-Extensions et Camera-View version 1.0.0-alpha23

24 mars 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha23 et d'androidx.camera:camera-view:1.0.0-alpha23. Liste des commits de la version 1.0.0-alpha23

Modifications apportées à l'API

  • CameraView est abandonné. Veuillez utiliser LifecycleCameraController à la place. Consultez le guide de migration. (Idac2c).
  • Ajout de l'annotation FloatRange à setLinearZoom(). (I69971)

Correction de bugs

  • Épinglage des dépendances camera-view pour utiliser des artefacts 1.0.0. Selon camera-view, la résolution des dépendances de Gradle n'entraînera plus la mise à niveau automatique de camera-core, camera-camera2 et camera-lifecycle vers les derniers artefacts<1.1.0, bien que camera-view soit toujours compatible avec ces artefacts s'ils sont explicitement configurés pour utiliser la version 1.1.0. (Ic8fa1, b/181599852)
  • Résolution du problème d'aperçu étiré en mode PreviewView sur les appareils Samsung A3. (Iacb30, b/180121821)
  • Résolution du problème où le sélecteur d'appareil photo ne pouvait pas être réglé avant l'initialisation de l'appareil photo. (Ic8bd0)

Camera-Extensions et Camera-View version 1.0.0-alpha22

24 février 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha22 et d'androidx.camera:camera-view:1.0.0-alpha22. Liste des commits de la version 1.0.0-alpha22

Modifications apportées à l'API

Correction de bugs

  • Correction d'ExtensionsErrorListener pour ne signaler les erreurs que si Preview ou ImageCapture est lié. (I5ae39)

Camera-Extensions et Camera-View version 1.0.0-alpha21

27 janvier 2021

Publication d'androidx.camera:camera-extensions:1.0.0-alpha21 et d'androidx.camera:camera-view:1.0.0-alpha21. Liste des commits de la version 1.0.0-alpha21

Publication pour la prise en charge d'autres artefacts de la bibliothèque d'appareils photo.

Camera-Extensions et Camera-View version 1.0.0-alpha20

16 décembre 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha20 et d'androidx.camera:camera-view:1.0.0-alpha20. Liste des commits de la version 1.0.0-alpha20

Publication pour la prise en charge d'autres artefacts de la bibliothèque d'appareils photo.

Camera-Extensions et Camera-View version 1.0.0-alpha19

11 novembre 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha19 et d'androidx.camera:camera-view:1.0.0-alpha19. Liste des commits de la version 1.0.0-alpha19

Correction de bugs

  • L'annotation @ExperimentalVideo a été ajoutée à camera-view. Cette annotation marque les API qui exposent des fonctionnalités vidéo expérimentales susceptibles de changer lorsqu'elles seront entièrement développées. Toute méthode utilisant ces API doit utiliser l'annotation @UseExperimental avec ExperimentalVideo comme markerClass. (I6d729)

Camera-Extensions version 1.0.0-alpha18

14 octobre 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha18. Liste des commits de la version 1.0.0-alpha18

Correction de bugs

  • Amélioration de la latence d'initialisation de CameraX et de bindToLifecycle. (I61dc5)
  • <UseCase>.getTargetRotation() renvoie Surface.ROTATION_0 s'il est appelé avant d'être associé à une instance de Camera, à moins qu'une rotation cible n'ait été définie dans le compilateur ou dans le cas d'utilisation. (I80fcd)

Camera-View version 1.0.0-alpha18

14 octobre 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha18. Liste des commits de la version 1.0.0-alpha18

Publication pour la prise en charge d'autres artefacts de la bibliothèque d'appareils photo.

Camera-Extensions version 1.0.0-alpha17

23 septembre 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha17. Liste des commits de la version 1.0.0-alpha17

Correction de bugs

Camera-View version 1.0.0-alpha17

23 septembre 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha17. Liste des commits de la version 1.0.0-alpha17

Correction de bugs

Camera-Extensions version 1.0.0-alpha16

16 septembre 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha16. Liste des commits de la version 1.0.0-alpha16

Correction de bugs

  • Ajout d'une méthode dans ExtensionsManager pour obtenir un objet Extensions permettant d'activer et d'interroger des extensions sur les instances d'appareil photo. (I4fb7e)

Camera-View version 1.0.0-alpha16

16 septembre 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha16. Liste des commits de la version 1.0.0-alpha16

Modifications apportées à l'API

  • Suppression de PreviewView#setDeviceRotationForRemoteDisplayMode() et de PreviewView#getDeviceRotationForRemoteDisplayMode(). Ces deux méthodes permettent de personnaliser la rotation des aperçus lorsque la rotation souhaitée ne correspond pas à celle de l'écran, par exemple en cas d'affichage à distance. Pour gérer la rotation d'un aperçu différent de l'écran, définissez la rotation souhaitée avec Preview#setTargetRotation() et le nouvel élément PreviewView#getViewPort(targetRotation). (Ib62cc)
  • createSurfaceProvider() a été renommé getSurfaceProvider(). Cette méthode renvoie toujours la même instance de Preview.SurfaceProvider. (Iff83c)

Correction de bugs

  • Forçage de PreviewView afin d'utiliser TextureView si l'effet d'extension est activé et que l'implémentation de la bibliothèque du fournisseur doit exécuter un processus spécial sur la surface de sortie. (I0c3cc)
  • Autorisation de la rotation arbitraire de la cible pour l'aperçu. Les informations sur la transformation sont calculées et renvoyées à l'utilisateur à la volée via un nouveau rappel TranformationInfoListener. (I21470)

Problèmes connus

  • Dans PreviewView, OnClickListener#onClick() n'est pas appelé lorsque l'utilisateur final clique sur PreviewView. L'événement tactile est utilisé par erreur via PreviewView#onTouchEvent(). Ce problème sera résolu dans la prochaine version.
  • Le point de mesure (MeteringPoint) obtenu à partir de PreviewView#getMeteringPointFactory() peut être incorrect si ViewPort est utilisé avec PreviewView.

Camera-Extensions version 1.0.0-alpha15

19 août 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha15. Liste des commits de la version 1.0.0-alpha15

Correction de bugs

  • La méthode ExtensionsManager.init() utilise désormais un contexte en tant que paramètre au lieu de n'avoir aucun argument. (Ife754)
  • L'initialisation ne devrait plus planter lorsque vous utilisez un contexte qui ne renvoie pas d'objet Application à partir de Context.getApplicationContext(). (I3d3c9, b/160817073)

    Camera-View version 1.0.0-alpha15

    19 août 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha15. Liste des commits de la version 1.0.0-alpha15

Correction de bugs

  • DisplayOrientedMeteringPointFactory utilise une instance CameraInfo au lieu de CameraSelector. Il existe donc un mappage direct avec l'appareil photo pour lequel la fabrique génère des points. Toutes les classes qui utilisent DisplayOrientedMeteringPointFactory exploitent également une instance CameraInfo au lieu de CameraSelector. (I400c1)
  • Suppression de TextureViewMeteringPointFactory. PreviewView fournit une API publique (createMeteringPointFactory()) pour créer une fabrique de points de mesure, qu'elle utilise un élément TextureView ou SurfaceView. (Ide693)
  • Remplacement des modes d'implémentation SURFACE_VIEW/TEXTURE_VIEW de PreviewView par PERFORMANCE/COMPATIBLE. PERFORMANCE est l'ancien mode SURFACE_VIEW, et COMPATIBLE est l'ancien mode TEXTURE_VIEW. (I0edc2)
  • Pour la capture d'image, remplacez l'indicateur horizontal de retournement dans les métadonnées en fonction de la direction de l'appareil photo. (I28499)

Camera-Extensions version 1.0.0-alpha14

22 juillet 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha14. Liste des commits de la version 1.0.0-alpha14

Camera-View version 1.0.0-alpha14

22 juillet 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha14. Liste des commits de la version 1.0.0-alpha14

Camera-Extensions version 1.0.0-alpha13

24 juin 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha13. Liste des commits de la version 1.0.0-alpha13

Correction de bugs

  • Ajout d'interfaces expérimentales pour le filtrage des appareils photo en fonction de l'ID et des caractéristiques (CameraCharacteristics) de l'appareil photo. (I28f61)

Camera-View version 1.0.0-alpha13

24 juin 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha13. Liste des commits de la version 1.0.0-alpha13

Correction de bugs

  • CameraView ne plante plus avec une exception IllegalArgumentException lors de la liaison à un LifecycleOwner dont le cycle de vie passe à un état DESTROYED peu de temps après avoir été lié. Les cycles de vie de liaison dont l'état est DESTROYED ne tentent pas d'ouvrir l'appareil photo. (I7c2b8)
  • PreviewView StreamState est désormais disponible via CameraView.getPreviewStreamState(). (I21a2b)

Camera-Extensions version 1.0.0-alpha12

10 juin 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha12. Liste des commits de la version 1.0.0-alpha12

Correction de bugs

  • Résolution du problème de plantage au démarrage de l'application lorsque l'appareil photo était initialisé et que le téléphone était en mode Ne pas déranger. Une exception InitializationException contient un élément CameraUnavailableException qui est défini sur l'élément ListenableFuture du résultat d'initialisation au lieu de faire planter l'application. (I9909a, b/149413835)

Camera-View version 1.0.0-alpha12

10 juin 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha12. Liste des commits de la version 1.0.0-alpha12

Correction de bugs

  • Ajout de l'API PreviewView#getBitmap() qui renvoie une représentation bitmap du contenu affiché sur la surface d'aperçu. (I9b500, b/157659818)

Camera-Extensions version 1.0.0-alpha11

27 mai 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha11. Liste des commits de la version 1.0.0-alpha11

Camera-View version 1.0.0-alpha12

10 juin 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha12. Liste des commits de la version 1.0.0-alpha12

Nouvelles fonctionnalités

Modifications apportées à l'API

Correction de bugs

  • Ajout de l'API PreviewView#getBitmap() qui renvoie une représentation bitmap du contenu affiché sur la surface d'aperçu. (I9b500, b/157659818)

Camera-View version 1.0.0-alpha11

27 mai 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha11. Liste des commits de la version 1.0.0-alpha11

Modifications apportées à l'API

  • Ajout de l'API PreviewView#getPreviewStreamState, qui permet aux applications d'observer si l'aperçu est diffusé en streaming ou non. Lorsque l'aperçu est en mode TEXTURE_VIEW, l'état STREAMING garantit également que l'image d'aperçu est visible. (Ic0906, b/154652477)
  • Ajout de l'API PreviewView#setDeviceRotationForRemoteDisplayMode() pour permettre la rotation des appareils pour les calculs de transformation si l'application s'exécute en mode d'affichage à distance. (I59b95, b/153514525)

Correction de bugs

  • Résolution du problème de distorsion de l'aperçu sur les appareils photo FULL/LIMITED/LEVEL_3 fonctionnant sur Android 7.0 ou version antérieure. Utilisation forcée du mode ImplementationMode#TEXTURE_VIEW lorsque la version d'Android est 7.0 ou antérieure. (I83e30, b/155085307)
  • Suppression du paramètre CameraInfo de PreviewView#createSurfaceProvider(). PreviewView le récupère désormais en interne à partir de SurfaceRequest. (If18f0, b/154652477)
  • Résolution du format par défaut de VideoCapture pour qu'il corresponde à 16:9 dans CameraView. (Ie6a7b, b/153237864)
  • Résolution du problème d'affichage d'un écran noir PreviewView lors du balayage du fragment Preview, puis d'un balayage en arrière dans ViewPager2. Le problème a également été résolu avec removeView(previewview), puis addView(previewView). (Iab555, b/149877652, b/147354615)
  • Mise à jour de l'API CameraView#takePicture() pour autoriser l'enregistrement des images dans Uri et OutputStream. Mise à jour de l'application de test pour qu'elle utilise Uri comme exemple canonique. (Ia2459, b/153607583)
  • Vous pouvez définir le type d'échelle de PreviewView à partir d'une mise en page XML en spécifiant l'attribut ScaleType. (I08565, b/153015659)
  • Suppression de CameraView.ScaleType. Utilisez plutôt PreviewView.ScaleType pour définir/obtenir un type d'échelle avec CameraView. (Ia8974, b/153014831)
  • Attribuez une couleur d'arrière-plan à PreviewView si ce n'est pas déjà fait. Cela permet d'éviter que le contenu situé derrière ne soit visible avant le début de la diffusion de l'aperçu. (I09fad)

Camera-Extensions version 1.0.0-alpha10

15 avril 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha10. Liste des commits de la version 1.0.0-alpha10

Corrections de bugs

  • Correctifs permettant la publication de Camera-Core.

Camera-View version 1.0.0-alpha10

15 avril 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha010. Liste des commits de la version 1.0.0-alpha010

Correction de bugs

  • Résolution d'un problème connu où l'implémentation PreviewView de surfaceView ne fonctionnait pas correctement sur certains appareils et provoquait le plantage de l'application après la réactivation de l'aperçu. (I5ed6b)

Camera-Extensions version 1.0.0-alpha09

1er avril 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha09. Liste des commits de la version 1.0.0-alpha09

Correction de bugs

  • Mise à jour pour prendre en charge les corrections de bugs dans les artefacts camera-camera2:1.0.0-beta02, camera-core:1.0.0-beta02 et camera-lifecycle:1.0.0-beta02.

Camera-View version 1.0.0-alpha09

Publication d'androidx.camera:camera-view:1.0.0-alpha09 le 1er avril 2020. Liste des commits de la version 1.0.0-alpha09

Problèmes connus

  • L'utilisation d'ImplementationMode.SURFACE_VIEW avec PreviewView peut ne pas fonctionner correctement sur certains appareils. En effet, la valeur SurfaceView utilisée pour l'aperçu invalide sa surface lorsque le cycle de vie de la fenêtre dans laquelle elle se trouve est arrêté. Lorsqu'il redémarre, l'appareil photo est rouvert et peut tenter de reprendre l'aperçu avant que la surface de SurfaceView ne soit de nouveau valide. Pour l'instant, utilisez ImplementationMode.TEXTURE_VIEW.

Modifications apportées à l'API

  • PreviewView.setImplementationMode() a été renommé PreviewView.setPreferredImplementationMode().
  • PreviewView.getImplementationMode() a été renommé PreviewView.getPreferredImplementationMode().
  • Remplacement de PreviewView.getSurfaceProvider() par PreviewView.createSurfaceProvider(CameraInfo), qui accepte une instance CameraInfo pouvant avoir une valeur nulle et utilisée pour optimiser l'aperçu à l'aide d'ImplementationMode.SURFACE_VIEW le cas échéant. Si une instance nulle est transmise ou si vous définissez le mode d'implémentation préféré sur ImplementationMode.TEXTURE_VIEW, ImplementationMode.TEXTURE_VIEW est utilisé en interne.
  • L'exemple de code suivant montre comment un cas d'utilisation d'aperçu était auparavant utilisé avec PreviewView.

    preview.setSurfaceProvider(previewView.previewSurfaceProvider)
    cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    

    Maintenant, vous pouvez écrire ce qui suit :

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
    preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
    
  • L'annotation @UiThread a été ajoutée à PreviewView.getSurfaceProvider(), ce qui signifie qu'elle doit être appelée à partir du thread principal. (I192f3)

  • Ajout de PreviewView.setScaleType(), qui permet de définir le type d'échelle de l'aperçu. Il accepte l'une des valeurs dans PreviewView.ScaleType et utilise par défaut PreviewView.ScaleType.FILL_CENTER.

  • Ajout de PreviewView.getScaleType().

  • Il n'est plus possible de définir le mode d'implémentation pour PreviewView dans une mise en page XML avec l'attribut implementationMode.

  • Ajout de l'API createMeteringPointFactory() à PreviewView pour permettre la conversion (x, y) de PreviewView en MeteringPoint. (Ib36d7)

Correction de bugs

  • Correction d'un problème d'affichage d'un aperçu incorrect après le changement de taille de PreviewView. (I71101)

Camera-Extensions version 1.0.0-alpha08

26 février 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha08. Liste des commits de la version 1.0.0-alpha08

Camera-View version 1.0.0-alpha08

26 février 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha08. Liste des commits de la version 1.0.0-alpha08

Correction de bugs

  • Remplacement de ListenableFuture sur SurfaceRequest.provideSurface() par Executor et Callback. Cela simplifie l'API en évitant d'avoir à gérer les exceptions sur provideSurface(), et fait en sorte que le rappel de provideSurface() ne puisse pas être annulé. Les plantages causés par la libération prématurée des surfaces sur les appareils plus anciens peuvent ainsi être évités. L'objet SurfaceRequest.Result permet désormais de suivre la façon dont une requête SurfaceRequest utilise la Surface fournie. (I7854b)
  • Remplacement du nom SurfaceRequest.setSurface(Surface) par SurfaceRequest.provideSurface(Surface) et du nom SurfaceRequest.setWillNotComplete() par SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Correction de l'initialisation des variantes d'application avec ProGuard activé en conservant l'option qui définit le fournisseur CameraXConfig par défaut. (I2d6c1)

Camera-Extensions version 1.0.0-alpha07

10 février 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07

Correction de bugs

  • Les arguments qui étaient auparavant transmis dans ImageCapture.OnImageSavedCallback.onError() et ImageCapture.OnImageCapturedCallback.onError() ont été remplacés par un seul argument ImageCaptureException, qui contient toujours toutes les informations transmises précédemment.
  • L'argument de fichier précédemment transmis dans ImageCapture.OnImageSavedCallback.onImageSaved() a été supprimé. (I750d2)

Camera-View version 1.0.0-alpha07

10 février 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha07. Liste des commits de la version 1.0.0-alpha07

Modifications apportées à l'API

  • L'implémentation TextureView de PreviewView définit désormais la taille de TextureView sur la taille de sortie du capteur de l'appareil photo avant de la mettre à l'échelle afin qu'elle remplisse l'élément PreviewView parent. Si vous souhaitez que l'aperçu de l'appareil photo remplisse intégralement une partie de l'interface utilisateur (l'écran tout entier, par exemple), vous ne devez pas définir une valeur fixe pour la propriété PreviewView, ni lui faire encapsuler son contenu (à l'aide de l'attribut wrap_content, par exemple). Dans le cas contraire, l'aperçu de l'appareil photo pourrait ne remplir qu'une partie de PreviewView (si la taille de sortie du capteur de l'appareil photo est inférieure). Définissez une taille PreviewView identique à celle du parent (en utilisant l'attribut match_parent, par exemple). (1204869)

Correction de bugs

  • Mise à jour d'ImageCapture pour permettre l'enregistrement d'images dans Uri et OutputStream. Combinaison des méthodes takePicture surchargées en une seule. Mise à jour de l'application de test pour utiliser Uri comme exemple canonique. (Ia3bec)
  • Preview.PreviewSurfaceProvider a été renommé Preview.SurfaceProvider. SurfaceProvider n'exige plus des développeurs qu'ils créent leur propre ListenableFuture, et il est désormais possible de fournir une Surface via un nouvel objet SurfaceRequest. La méthode Preview.getPreviewSurfaceProvider() a été supprimée en raison d'un usage abusif potentiel lorsque Preview est associé à d'autres classes telles que PreviewView. (I20105)
  • Les arguments qui étaient auparavant transmis dans ImageCapture.OnImageSavedCallback.onError() et ImageCapture.OnImageCapturedCallback.onError() ont été remplacés par un seul argument ImageCaptureException, qui contient toujours toutes les informations transmises précédemment.
  • L'argument de fichier précédemment transmis dans ImageCapture.OnImageSavedCallback.onImageSaved() a été supprimé. (I750d2)
  • API mise à jour, avec la fusion des méthodes getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() et getLinearZoom() de CameraInfo dans getZoomState(), ce qui renvoie une instance ZoomState. (Ib19fe)

Camera-Extensions version 1.0.0-alpha06

22 janvier 2020

Publication d'androidx.camera:camera-extensions:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06

Mises à jour

  • Différents correctifs et mises à jour pour prendre en charge les modifications apportées à Camera Core et Camera2.

Camera-View version 1.0.0-alpha06

22 janvier 2020

Publication d'androidx.camera:camera-view:1.0.0-alpha06. Liste des commits de la version 1.0.0-alpha06

Mises à jour

  • Différents correctifs et mises à jour pour prendre en charge les modifications apportées à Camera Core et Camera2.

Camera-Extensions version 1.0.0-alpha05

18 décembre 2019

Publication d'androidx.camera:camera-extensions:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05

Correction de bugs

  • Mise à jour pour correspondre aux API Camera Core internes.

Camera-View version 1.0.0-alpha05

18 décembre 2019

Publication d'androidx.camera:camera-view:1.0.0-alpha05. Liste des commits de la version 1.0.0-alpha05

Problèmes connus

  • Le format peut être incorrect lors de l'utilisation de PreviewView. (b/146215202).

Nouvelles fonctionnalités

  • Implémentation d'une nouvelle classe appelée PreviewView.TextureViewImplementation qui synchronise le cycle de vie de SurfaceTexture avec l'utilisation de la surface de TextureView par l'appareil photo.

Camera-Extensions version 1.0.0-alpha04

4 décembre 2019

Publication d'androidx.camera:camera-extensions:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04 de camera-extensions

Modifications apportées à l'API

  • La vérification de la disponibilité et de l'activation d'une extension utilise désormais un CameraSelector en tant que paramètre d'entrée. Il doit s'agir du même CameraSelector que celui utilisé pour lier le cas d'utilisation.

    val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
    val builder = ImageCapture.Builder()
    val bokehImageCaptureExtender = BokehImageCaptureExtender.create(builder)
    if (bokehImageCaptureExtender.isExtensionAvailable(cameraSelector)) {
        bokehImageCaptureExtender.enableExtension(cameraSelector)
    }
    val imageCapture = builder.build()
    mCameraProvider?.bindToLifecycle(this, cameraSelector, imageCapture)
    
  • Vous devez initialiser les extensions avant d'utiliser la bibliothèque d'extensions.

    val availability = ExtensionsManager.init()
    Futures.addCallback<ExtensionsManager.ExtensionsAvailability>(
       availability,
       object : FutureCallback<ExtensionsManager.ExtensionsAvailability> {
           override fun onSuccess(availability: ExtensionsManager.ExtensionsAvailability?) {
               // Ready to make extensions calls
           }
           override fun onFailure(throwable: Throwable) {
               // Extensions could not be initialized
           }
       },
       Executors.newSingleThreadExecutor()
    )
    

Camera-View version 1.0.0-alpha04

4 décembre 2019

Publication d'androidx.camera:camera-view:1.0.0-alpha04. Liste des commits de la version 1.0.0-alpha04 de camera-view

Modifications apportées à l'API

  • Une classe PreviewView permet d'afficher facilement la sortie du cas d'utilisation Preview dans une application.
  • PreviewView peut être inclus dans la mise en page :

    <androidx.camera.view.PreviewView
      android:id="@+id/preview_view"
      … />
    
  • PreviewView fournit un PreviewSurfaceProvider permettant de connecter facilement un cas d'utilisation Preview.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • ZoomLevel a été renommé ZoomRatio dans les noms d'API.

  • La valeur nulle de certains paramètres de méthode a changé.

Camera-Extensions et Camera-View version 1.0.0-alpha03

9 octobre 2019

Publication d'androidx.camera:camera-extensions:1.0.0-alpha03 et d'androidx.camera:camera-view:1.0.0-alpha03. Il s'agit des commits inclus dans camera-extensions:1.0.0-alpha03 et de ceux inclus dans camera-view:1.0.0-alpha03.

Nouvelles fonctionnalités

  • Ajout de l'initialiseur de contexte pour les extensions. Version d'extensions incrémentée à 1.1.0.

Camera-Extensions et Camera-View version 1.0.0-alpha02

5 septembre 2019

Publication d'androidx.camera:camera-extensions:1.0.0-alpha02 et d'androidx.camera:camera-view:1.0.0-alpha02. Il s'agit des commits inclus dans camera-extensions:1.0.0-alpha02 et de ceux inclus dans camera-view:1.0.0-alpha02.

  • Ajout de tests pour vérifier que PreviewImageProcessorImpl a correctement implémenté les horodatages.
  • Résolution de l'échec du test ExtensionTest sur le Nexus 5 (niveau d'API 21) et aperçu maintenant disponible à tout moment.

Camera-Extensions et Camera-View version 1.0.0-alpha01

7 août 2019

Publication d'androidx.camera:camera-extensions:1.0.0-alpha01 et d'androidx.camera:camera-view:1.0.0-alpha01. Il s'agit des commits inclus dans Camera-extensions:1.0.0-alpha01 et des commits inclus dans Camera-view:1.0.0-alpha01.

  • Nouvelle bibliothèque pour les futures extensions Camera permettant d'accéder aux effets sur les appareils compatibles. Cette bibliothèque est en cours de développement.
  • Nouvelle classe camera-view. Cette bibliothèque est en cours de développement.