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.4.0 - - 1.5.0-alpha03
camera-core 1.4.0 - - 1.5.0-alpha03
camera-compose - - - 1.5.0-alpha03
camera-effects 1.4.0 - - 1.5.0-alpha03
camera-extensions 1.4.0 - - 1.5.0-alpha03
camera-feature-combination-query - - - 1.5.0-alpha03
appareil-photo-combinaison-requête-lecture-services - - - 1.5.0-alpha03
camera-lifecycle 1.4.0 - - 1.5.0-alpha03
camera-mlkit-vision 1.4.0 - - 1.5.0-alpha03
camera-view 1.4.0 - - 1.5.0-alpha03
camera-viewfinder - - 1.3.0-beta02 1.4.0-alpha07
camera-video 1.4.0 - - 1.5.0-alpha03
Dernière mise à jour de cette bibliothèque: 30 octobre 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.5.0-alpha03"
  // 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.5.0-alpha03"
    // 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.

Compose version 1.0 pour le viseur de l'appareil photo

Version 1.0.0-alpha02

12 juin 2024

Publication d'androidx.camera:camera-viewfinder-compose:1.0.0-alpha02. La version 1.0.0-alpha02 contient ces commits.

Version 1.0.0-alpha01

14 mai 2024

Publication d'androidx.camera:camera-viewfinder-compose:1.0.0-alpha01. La version 1.0.0-alpha01 contient ces commits.

Nouvelles fonctionnalités

  • Nouvelle bibliothèque. Cette bibliothèque introduit un composable de viseur Compose natif, qui peut être utilisé avec CameraX et Camera2. Le composable Viewfinder est compatible avec différents formats et la gestion des événements tactiles.

Viseur de l'appareil photo version 1.4

Version 1.4.0-alpha07

12 juin 2024

Publication d'androidx.camera:camera-viewfinder:1.4.0-alpha07 et d'androidx.camera:camera-viewfinder-core:1.4.0-alpha07. La version 1.4.0-alpha07 contient ces commits.

Version 1.4.0-alpha06

14 mai 2024

Publication d'androidx.camera:camera-viewfinder:1.4.0-alpha06 et d'androidx.camera:camera-viewfinder-core:1.4.0-alpha06. La version 1.4.0-alpha06 contient ces commits.

Modifications apportées à l'API

  • Renommez les énumérations ImplementationMode de Viewfinder pour mieux refléter les implémentations sous-jacentes, et ajoutez des constantes fixes pour TransformationInfo.sourceRotation. (Ic6149).
  • Ajout de ZoomGestureDetector.ZoomEvent pour encapsuler les états d'un geste de zoom. (I84cdf)

Version de la caméra 1.5

Version 1.5.0-alpha03

30 octobre 2024

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

Modifications apportées à l'API

  • Ajout d'API de format de sortie pour RAW et RAW + JPEG ImageCapture. La vérification de la capacité de l'appareil est disponible dans ImageCaptureCapabilities#getSupportedOutputFormats. OUTPUT_FORMAT_RAW permet de capturer des images RAW, qui sont au format Adobe DNG, et OUTPUT_FORMAT_RAW_JPEG permet de capturer simultanément des images RAW et JPEG. La nouvelle API ImageCapture#takePicture est utilisée pour la capture d'images simultanée. Elle doit fournir deux OutputFileOptions, le premier pour l'image RAW et le second pour l'image JPEG. (Ib0f3d)

Correction de bugs

  • Résolution du problème de sous-exposition de l'aperçu et de la vidéo sur les appareils TCL lorsque VideoCapture est activé. (Id7a64)
  • Correction d'un problème qui empêchait d'obtenir les coordonnées de capteur correctes lorsque vous appelez startFocusMetering avec PreviewView.getMeteringPointFactory lorsqu'un effet est activé ou lorsque quatre cas d'utilisation sont associés (partage de flux). (I916c5, b/345993685)
  • Correction du problème d'absence de déclenchement de l'événement VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE lors de l'enregistrement d'une vidéo et d'espace de stockage insuffisant. (I35779, b/356399842)

Version 1.5.0-alpha02

2 octobre 2024

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

Nouvelles fonctionnalités

  • Nouvelles API permettant d'interroger les fonctionnalités de l'appareil photo compatibles avec l'appareil. Par exemple, vérifier si le HDR et le 60 FPS peuvent être activés en même temps. Elle comprend deux artefacts: camera-feature-combination-query et camera-feature-combination-query-play-services. Il s'agit d'une version compatible de l'API CameraManager#getCameraDeviceSetup#isSessionConfigurationSupported de camera2, avec des données supplémentaires fournies par le service Google Play.

Correction de bugs

  • Correction du problème de fréquence d'images cible Preview/VideoCapture sur les anciens appareils. La fréquence d'images cible définie via l'API setTargetFrameRate ou Camera2Interop a toujours été remplacée par la valeur fournie par AeFpsRangeLegacyQuirk. Avec ce correctif, la bibliothèque CameraX respectera la valeur définie via l'API setTargetFrameRate ou Camera2Interop. (Ie2d32)
  • Ajout de fonctionnalités de flash/lampe de poche/3A pour les captures d'images avec CameraEffect. Les captures d'images avec CameraEffect doivent désormais avoir les mêmes traitements avant et après la capture (déclencheur du flash, convergence 3A, etc. le cas échéant) que la capture d'image sans CameraEffect. (I5ff30)
  • Exclusion des tailles de sortie problématiques pour ImageAnalysis sur l'appareil Samsung SM-A057G. Lorsque ImageAnalysis utilise une résolution supérieure ou égale à 1 920 x 1 440, un problème d'aperçu noir est généré. ExcludedSupportedSizesQuirk a été appliqué à l'appareil SM-A057G pour éviter le problème. (I63dfe, b/365877975)
  • Correction du problème de fréquence d'images cible Preview/VideoCapture lorsque le mécanisme de partage de flux est activé en interne pour partager un flux avec Preview et VideoCapture. (I4fdac).
  • Activation d'une solution de contournement permettant de résoudre le problème de métadonnées d'image JPEG incorrectes sur les appareils Samsung S10e et S10+. Avec ce correctif, CameraX peut enregistrer l'image JPEG ou renvoyer des objets Bitmap corrects lors de l'appel de la fonction ImageProxy.toBitmap() sur ces appareils si le problème de métadonnées d'image JPEG incorrectes se produit. (Iae493, b/356428987).
  • Désactivation des extensions pour la caméra arrière du Samsung A52s dont l'ID est 0, car des plantages natifs peuvent se produire lors de la capture d'images HDR et la configuration des sessions de capture peut échouer pour les modes BOKEH ou FACE_RETOUCH. (I03ec9, b/364152642).
  • Résolution du problème de déclenchement de l'événement VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE lors de l'enregistrement d'une vidéo et que l'espace de stockage disponible est insuffisant. (Ia5b4f, b/356399842)
  • Correction d'un problème qui empêchait la deuxième tentative d'enregistrement vidéo sur l'Oppo A5 (CPH1931). (I181d6)

Version 1.5.0-alpha01

4 septembre 2024

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

Modifications apportées à l'API

  • Fournir une API pour définir les paramètres de composition pour la capture vidéo simultanée de deux caméras. Les paramètres incluent la valeur alpha pour le mélange, le décalage dans les coordonnées X et Y, l'échelle de la largeur et de la hauteur de la fenêtre d'affichage du cadre de l'appareil photo. Le décalage, la largeur et la hauteur sont spécifiés en coordonnées normalisées de l'appareil. (Ia2b8a)
  • CameraProvider.getCameraInfo est désormais une API officielle. (I901cd)
  • Ajout de l'API PendingRecording.withAudioEnabled(boolean initialMuted) pour contrôler l'état initial de la mise en sourdine. (I635c3, b/354829267)

Correction de bugs

  • Correction du plantage qui se produisait lorsque bindToLifecycle était appelé avec un LifecycleOwner détruit. (I6e6d8)
  • Correction de l'écran noir de l'aperçu de la caméra avant lors de l'association avec VideoCapture sur le Motorola Edge 20 Fusion. (I1fe88)
  • Optimisation de la configuration pour la détection des gestes de zoom dans PreviewView afin d'améliorer la fluidité. (I04ffc)

Version de l'application Appareil photo 1.4

Version 1.4.0

30 octobre 2024

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

Changements importants depuis la version 1.3.0

CameraX 1.4.0 regorge de mises à jour intéressantes. Récapitulatif :

Fonctionnalité principale: HDR 10 bits:

  • Réalisez facilement de superbes photos et vidéos HDR.
  • Compatible avec l'encodage HLG et HEVC 10 bits.
  • Profitez de l'aperçu HDR 10 bits et interrogez les fonctionnalités de l'appareil.
  • Fonctionne avec les images UltraHDR et les vidéos HDR sur un nombre croissant d'appareils.

Autres fonctionnalités intéressantes:

  • Extensions Kotlin: ajout des fonctions de suspension takePicture et awaitInstance.
  • Effets en temps réel: appliquez des effets tels que des filigranes et des mises en surbrillance d'objets.
  • API CameraController: nouvelles commandes pour la configuration de la capture vidéo.
  • Stabilisation de l'aperçu: interrogez les fonctionnalités de l'appareil et activez la stabilisation.
  • Améliorations de la capture vidéo: contrôle plus précis de la qualité et accès à des résolutions plus élevées.
  • Intégration des extensions CameraX: intégration parfaite avec VideoCapture et nouvelles fonctionnalités ImageCapture.
  • API Shutter Sound: vérifiez facilement les exigences régionales concernant le son de l'obturateur.
  • Flash de l'écran: amélioration des photos par faible luminosité pour les caméras avant.
  • API de métadonnées des extensions de l'appareil photo: API compatibles pour ajuster l'intensité des extensions et recevoir une notification du mode Extensions actuel dans ExtensionMode#AUTO. Pour en savoir plus sur les corrections de bugs, consultez nos annonces sur les versions bêta et RC.

Version 1.4.0-rc04

16 octobre 2024

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

Correction de bugs

  • Correction d'un problème qui empêchait l'appel de startFocusMetering avec PreviewView.getMeteringPointFactory d'obtenir les coordonnées correctes du capteur lorsqu'un effet était activé ou que quatre cas d'utilisation étaient liés (partage de flux). (I916c5, b/345993685)

Version 1.4.0-rc03

2 octobre 2024

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

Correction de bugs

  • Ajout de fonctionnalités de flash/lampe de poche/3A pour les captures d'images avec CameraEffect. Les captures d'image avec CameraEffect doivent désormais avoir les mêmes traitements avant et après la capture (déclencheur du flash, convergence 3A, etc., le cas échéant) que la capture d'image sans CameraEffect. (I5ff30).
  • Amélioration de la fluidité du zoom avec pincement dans PreviewView (I04ffc)
  • Dissocier le HDR Ultra de la capacité de sortie 10 bits, car la compatibilité avec le HDR Ultra ne nécessite plus que les appareils disposent d'une capacité de sortie 10 bits. (I96ff2, I0c3b3)

Version 1.4.0-rc02

18 septembre 2024

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

Correction de bugs

  • Correction du plantage qui se produisait lorsque bindToLifecycle était appelé avec un LifecycleOwner détruit. (I6e6d8)
  • Ajout d'une animation de visibilité dans ScreenFlashView pour ScreenFlash#apply, qui corrige également les bugs dus à la finalisation asynchrone du changement de luminosité au bout d'un certain temps. (I37cdb)
  • Amélioration de la fluidité du zoom en ignorant les paramètres de zoom dans le framework sur les appareils compatibles.

Version 1.4.0-rc01

7 août 2024

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

Nouvelles fonctionnalités

  • Ajout d'un CameraInfo.getCameraInfo expérimental pour fournir des informations spécifiques sur l'appareil photo sans avoir à lier des cas d'utilisation à l'appareil photo. (I550d1)

Modifications apportées à l'API

  • Ajout des API PreviewView.getScreenFlash et PreviewView.setScreenFlashOverlayColor pour les cas où ScreenFlashView n'est pas ajouté explicitement. (I43945).

Correction de bugs

  • Correction des problèmes d'exposition et de teinte de couleur lorsque l'image est capturée avec le flash activé en cas de faible luminosité et que le cas d'utilisation VideoCapture est lié. (Ic9814)
  • Correction du problème qui empêchait d'obtenir un résultat lorsqu'une requête takePicture était interrompue avec les extensions activées, et qui pouvait entraîner l'échec de la requête takePicture suivante. (Iae78f).
  • Correction d'un problème de fuite de mémoire survenant lorsque les extensions étaient activées. (Iab276)
  • Résolution d'un dysfonctionnement des extensions CameraX sur des appareils tels que le Pixel 7/8 et la gamme Samsung Galaxy S24. Ce problème, qui découle d'un problème de conversion Camera2OutputConfigImpl en mode version, est apparu après la mise à niveau d'AGP vers la version 8.5.1 et l'activation de la minification. (I99598, b/354824993)

Version 1.4.0-beta02

12 juin 2024

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

Modifications apportées à l'API

  • Comme pour VideoCapture, ajoutez setMirrorMode pour le cas d'utilisation "Preview" (Aperçu). Le mode miroir sera activé et désactivé pour le flux d'aperçu via OutputConfiguration.setMirrorMode à partir de l'API 33 et des versions ultérieures. Pour les API plus anciennes, il n'aura aucun effet. (I821f4)

Correction de bugs

  • Résolution du problème qui empêchait les applications de prendre des photos sur le Samsung Tab A8 lorsque ImageCapture sélectionne 1 920 x 1 080 pixels sous la combinaison UseCase Preview + VideoCapture + ImageCapture. (I5a463, b/336925549)
  • Correction : l'enregistrement persistant peut ne pas continuer après le changement de caméra. (Icb0a1)

Version 1.4.0-beta01

14 mai 2024

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

Modifications apportées à l'API

  • Ajout de ZoomGestureDetector.ZoomEvent pour encapsuler les états d'un geste de zoom. (I84cdf).

Correction de bugs

  • Correction d'un bug qui empêchait toujours la capture et la mise au point via un appui pour effectuer la mise au point, qui n'utilisaient pas les valeurs du mode de stabilisation/FPS des requêtes répétées, ce qui pouvait recréer une session de capture et entraîner des problèmes de latence ou le gel de l'aperçu sur certains appareils. (I7dc0b)
  • Correction d'un bug qui empêchait la sélection de la haute résolution lorsque CameraEffect était activé sur certains appareils. (par exemple, 4 000 x 3 000 sur le Samsung A32 5G). (Ie3ed3, b/337336152)
  • Correction d'un plantage lors de la prise de photos avec Preview. ImageCapture et VideoCapture(UHD) sont liés à l'API 29 du Pixel 4XL. (I5b288)
  • Compatibilité avec les appareils virtuels: le contexte transmis à ProcessCameraProvider conserve l'ID de l'appareil pour garantir le fonctionnement dans un environnement d'appareil virtuel. (I5ba48)

Version 1.4.0-alpha05

17 avril 2024

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

Nouvelles fonctionnalités

  • Conversion de ProcessCameraProvider en implémentation Kotlin. (I46d4f).
  • Ajout de fonctions de suspension ImageCapture.takePicture pour permettre de l'appeler de manière idiomatique en Kotlin. (I920be)

Modifications apportées à l'API

  • Ajout des API de format de sortie à ImageCapture et ajout de la méthode getSupportedOutputFormats à ImageCaptureCapabilities pour interroger la capacité de l'appareil. La valeur par défaut du format de sortie est OUTPUT_FORMAT_JPEG, qui capture les images SDR au format JPEG. Lorsque l'appareil est compatible avec l'Ultra HDR et que le format de sortie est défini sur OUTPUT_FORMAT_JPEG_ULTRA_HDR, CameraX capture des images compressées Ultra HDR à l'aide du format d'image JPEG/R. Il est rétrocompatible avec le format JPEG SDR et prend en charge le rendu HDR des contenus. Cela signifie que sur les applications ou appareils plus anciens, les images s'affichent en tant que JPEG standard. Sur les applications et appareils qui ont été mis à jour pour prendre pleinement en charge le format, les images s'affichent en HDR. (I5de50)
  • Ajout de PhysicalCameraInfo dans CameraInfo pour interroger les informations sur la caméra physique et ajout d'un setter/getter d'ID de caméra physique dans CameraSelector (Ic5b90)
  • Remplacement de CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED par ImageAnalysis#COORDINATE_SYSTEM_VIEW_REFERENCED. La valeur de la constante reste la même. Cela permet de regrouper toutes les constantes au même endroit. (I890bb)
  • La nouvelle API RetryPolicy permet aux développeurs de personnaliser le comportement de nouvelle tentative pour l'initialisation de CameraX. (I36dd2)
  • Activation de la création d'un objet ImageCaptureLatencyEstimate pour faciliter la testabilité (Iaba99)
  • Ajoutez un ImageAnalysis#COORDINATE_SYSTEM_SENSOR. Dans ce cas, MlKitAnalyzer renvoie les coordonnées dans le système de coordonnées du capteur de l'appareil photo. (I3ec61).
  • API de métadonnées des extensions exposées. Les nouvelles interfaces CameraExtensionsInfo et CameraExtensionsControl permettent aux applications de surveiller et d'ajuster les paramètres d'intensité des extensions. Les applications peuvent obtenir l'instance CameraExtensionsInfo ou CameraExtensionsControl via les méthodes ExtensionsManager#getCameraExtensionsInfo() ou ExtensionsManager#getCameraExtensionsControl() nouvellement ajoutées. (I28e1a)
  • Ajout de ProcessCameraProvider.awaitInstance, qui est une version de suspension de ProcessCameraProvider.getInstance. (Ib22b9)
  • Ajout d'une API PreviewView#getSensorToViewTransform(). La matrice représente la transformation des coordonnées du capteur de la caméra en coordonnées de PreviewView. Vous pouvez l'utiliser pour transformer les coordonnées d'une UseCase en une autre. Par exemple, transformer les coordonnées des objets détectés dans ImageAnalysis en superposition PreviewView. (I947ab).
  • Rendre l'API camera-viewfinder-core plus générique afin qu'elle puisse être utilisée par camera-viewfinder et camera-viewfinder-compose. (I1e295)
  • Ajoutez la fonction getSurface à ViewfinderSurfaceRequest. (I781a0)
  • Utilisez camera-viewfinder-core dans camera-viewfinder et supprimez ViewfinderSurfaceRequest et CameraViewfinder. (I6198c)
  • Ajout de ZoomGestureDetector qui interprète les gestes de mise à l'échelle spécifiquement configurés pour l'activité de pincement pour zoomer. (Ifafbf).

Correction de bugs

  • Correction du problème de sélection de résolution de ImageAnalysis lié au paramètre de résolution cible par défaut de l'analyseur: la résolution cible était incorrectement conservée à 640 x 480, même si les applications avaient défini un autre paramètre de résolution par défaut de l'analyseur. Si les applications rencontrent ce problème (versions 1.3.0 à 1.3.2) et ne peuvent pas passer à une version plus récente contenant la solution, vous pouvez contourner le problème en définissant directement un ResolutionSelector avec la résolution préférée et un AspectRatioStrategy correspondant à l'UseCase ImageAnalysis. (I81f72, b/330091012)
  • Correction d'un problème qui pouvait empêcher l'exécution de la requête takePicture mise en file d'attente si la requête en cours échouait. (Ie0801).
  • Application de la vérification des données JPEG non valides aux appareils Vivo X60 et X60 Pro. Cela peut résoudre le problème d'image anormalement grande sur ces appareils. (I82247, b/288828159).
  • Correction du problème de métadonnées d'image JPEG incorrectes sur les appareils Samsung A24. Avec ce correctif, CameraX peut enregistrer l'image JPEG ou renvoyer des objets Bitmap corrects lors de l'appel de la fonction ImageProxy.toBitmap() sur les appareils Samsung A24. (I8d6eb, b/309005680)
  • Appliquer la vérification des données JPEG non valides à tous les appareils Samsung si l'image capturée est supérieure à 10 Mo. Cela peut résoudre le problème d'image anormalement grande sur les appareils Samsung. (Ic2a65, b/288828159).
  • Suppression de la prise en charge de ImageAnalysis dans les extensions CameraX, car de nombreuses implémentations d'extensions d'OEM ne fonctionnent pas bien avec ImageAnalysis et peuvent entraîner des problèmes incohérents. (I2d926)

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 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 la caméra.
  • OverlayEffect: permet de dessiner des superpositions avec l'API Canvas d'Android. Cela permet à l'application d'appliquer un filigrane ou de mettre en évidence les objets détectés sur les sorties de l'appareil photo.
  • API DynamicRange pour le cas d'utilisation "Aperçu" : la plage dynamique peut désormais être définie sur le cas d'utilisation "Aperçu", indépendamment du cas d'utilisation "Vidéo". Cela permet d'utiliser des plages dynamiques HDR telles que HLG10 pour l'aperçu uniquement. De nouvelles API sont également disponibles dans CameraInfo pour interroger les plages dynamiques compatibles avec chaque appareil photo.

Modifications apportées à l'API

  • ScreenFlashUiCompleter a été renommé ScreenFlashListener et ScreenFlashUiCompleter#getExpirationTimeMillis a été déplacé vers le paramètre expirationTimeMillis de ScreenFlash#apply. (I13944)
  • De nouvelles API ont été ajoutées pour permettre de définir la plage dynamique dans le cas d'utilisation Preview et d'interroger les plages dynamiques compatibles avec chaque caméra. Cela permet d'utiliser des plages dynamiques HDR, telles que HLG10, uniquement pour le cas d'utilisation Preview. Ainsi, il n'est plus nécessaire qu'un VideoCapture soit lié en même temps. (If25e3)
  • getMirroring() renommé en isMirroring() (I47063)
  • Ajout de la prise en charge de l'estimation de la latence de capture d'image fixe en temps réel dans CameraX. Les extensions pour l'appareil photo permettent aux applications d'utiliser une API qui fournit une estimation de la durée d'une capture. L'estimation tient compte des conditions actuelles de l'environnement et de l'appareil photo. Elle inclut le temps passé à traiter les demandes de capture multi-frames, ainsi que tout temps supplémentaire pour encoder les tampons traités, si nécessaire. (I05c3a).
  • Changement de nom : ScreenFlashUiControl devient ScreenFlash, ScreenFlashUiControl#applyScreenFlashUi devient ScreenFlash#apply, ScreenFlashUiControl#clearScreenFlashUi devient ScreenFlash#clear. Ajout de la méthode getScreenFlashUiApplyTimeoutSeconds au lieu d'exposer SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS directement. (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 sont activées. (I14215)
  • Correction du problème qui faisait que getZoomRatio renvoyait une valeur incorrecte lors de l'application d'un facteur de zoom croissant. (I4aa0d, b/317543616)
  • L'événement ImageCapture#ScreenFlash#clear est appelé immédiatement lorsque ImageCapture est dissocié ou que la caméra est fermée. Correction de bugs qui n'étaient jamais invoqués en raison d'une mauvaise capture dans ces scénarios. (If99f9)
  • Correction du plantage qui se produit lorsque le cycle de vie est arrêté avant la fin de la requête takePicture. (Idf017, b/306202751)
  • Résolution du problème d'aperçu noir de l'appareil photo lorsque les extensions sont activées sur certains appareils (I1ffd0)
  • Correction de la durée incorrecte de l'enregistrement vidéo sur les appareils équipés du 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 un son de déclencheur doit être diffusé conformément aux restrictions régionales. (Ifda84)
  • Ajout de OnImageCapturedCallback.onCaptureStarted et OnImageSavedCallback.onCaptureStarted pour envoyer une notification lorsque la caméra a commencé à exposer un frame. À ce stade, nous vous recommandons de lire le son ou l'animation du déclencheur. (Ic49b3).
  • Ajout de la prise en charge de la fonctionnalité Flash de l'écran dans CameraX pour la capture d'images avec la caméra avant. CameraX gère la gestion de l'API côté framework et synchronise le timing avec les modifications de l'interface utilisateur de l'application si nécessaire (par exemple, le déclencheur de précapture de l'AE après un changement de couleur/luminosité de l'écran de l'application). Les applications n'auront qu'à ajouter leurs implémentations côté UI dans l'interface ScreenFlashUiControl fournie à CameraX. (I8ae84)
  • Ajout de la prise en charge de l'implémentation côté UI de la fonctionnalité Flash de l'écran dans CameraX. Les applications pourront obtenir une implémentation ImageCapture.ScreenFlashUiControl de base à partir de PreviewView ou de la nouvelle ScreenFlashView, qui ajoutera une vue superposée monochrome et maximisera la luminosité de l'écran lors de la capture de photo avec flash de l'écran. (I1810e).

Modifications apportées à l'API

  • Compatibilité avec les nouvelles fonctionnalités d'extensions(postview et progression du processus de capture): ajout d'API ImageCapture#getImageCaptureCapabilities() permettant aux applications d'interroger les fonctionnalités du rappel de postview et de progression du processus de capture. Les applications peuvent activer la postview à l'aide de ImageCapture.Builder#setPostviewEnabled(). Vous pouvez sélectionner la taille des posts après affichage à 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 notification de postview et de progression du traitement, le cas échéant. (I5cd88)
  • API permettant de calculer la transformation des coordonnées du capteur au tampon actuel, avec un indicateur indiquant si la surface contient les informations d'orientation de la caméra. (I59096)
  • Exposez l'API pour interroger PreviewCapabitlity dans Preview UseCase. (Ie5b6c)
  • Ajout d'API pour prendre en charge davantage 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)
  • Ajoutez un getter/setter de format de sortie ImageAnalysis à CameraController. (I9a96c, b/308240643)

Correction de bugs

  • Dans 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 adapté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)
  • Autorisez l'utilisation de VideoCapture lorsque les extensions sont activées. (I91f32)
  • Résolution du problème lié aux images JPEG de grande taille capturées sur les appareils de la série Samsung A71 et M51. Les images JPEG capturées contiennent des données de remplissage redondantes de zéros dans le segment de données compressées JFIF. Les images capturées sont trop volumineuses. Les données de marge intérieure de ces zéros 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 les Pixel qui renvoie accidentellement les tailles compatibles ImageAnalysis non vides. (I7ec31)
  • Correction d'un problème de performances qui entraînait une augmentation de la charge du processeur et de la consommation d'énergie lorsque les extensions étaient activées. (Ibdccb)
  • Ajout du Snapdragon 480 à la CameraUseInconsistentTimebaseQuirk. Cela corrige un problème sur Android 12 pour les appareils utilisant ce chipset, où l'audio 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 en setCameraOpenRetryMaxTimeoutInMillisWhileResuming et renommez l'argument. (I72370)
  • Ajout d'API pour interroger les fonctionnalités de l'appareil et activer la stabilisation de la vidéo/de l'aperçu. (I87544).
  • Fournir une API pour personnaliser le délai avant expiration maximal de la tentative d'ouverture de l'appareil photo. (I0c642)
  • Publication de ProcessCameraProvider.shutdownAsync en tant qu'API de test publique pour permettre d'utiliser le fournisseur d'appareil photo de processus dans des suites de test 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 de 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

  • Correction du problème d'aperçu noir sur le Samsung Galaxy S23 Ultra 5G lorsque les extensions Bokeh ou le retouche du visage sont activés avec ImageAnalysis sur la caméra arrière. (I2e8b1)
  • Résolution des problèmes d'aperçu et d'étirement de VideoCapture sur le 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 nouvelle 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ésinitialisation sont déclenchés dans le bon ordre. (Ib3b8e).
  • Correction de l'échec de la configuration de la session de capture en cas de dépassement de la combinaison de surfaces compatible en raison de l'ajout d'une surface répétitive supplémentaire en interne. (Id718c)
  • Correction d'un problème d'image JPEG capturée de grande taille sur l'appareil Vivo S16. Les images JPEG capturées contiennent des données de marge intérieure redondantes de 0 dans le segment de données compressées JFIF. Cela entraîne une taille de fichier importante pour les images capturées. Ces données de remplissage par zéro redondantes seront supprimées pour que les images capturées aient des tailles de fichiers d'image normales. (I79505, b/299069235)
  • Correction du problème qui empêchait ImageAnalysis d'être associé à ImageCapture et à Preview lorsque certains modes d'extension étaient activés sur certains appareils. La correction renvoie la valeur correcte lorsque les applications interrogent la disponibilité de ImageAnalysis via ExtensionsManager#isImageAnalysisSupported(). (I7d538).
  • Mise à jour de JavaDoc pour correspondre au 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.4

12 juin 2024

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

Correction de bugs

  • Correction du problème qui faisait que getZoomRatio renvoyait une valeur incorrecte lors de l'application d'un facteur de zoom croissant. (I4aa0d, b/317543616).
  • Correction du problème de non-utilisation des valeurs de FPS/mode de stabilisation des requêtes répétées pour la capture d'image fixe/la mise au point par appui, ce qui pouvait recréer la session de capture et entraîner des problèmes de latence ou le blocage de l'aperçu sur certains appareils. (I7dc0b)
  • Correction du problème qui entraînait une valeur inférieure pour la fréquence d'images lors de l'appel de setTargetFrameRate avec FRAME_RATE_RANGE_UNSPECIFIED. (I78c61).

Version 1.3.3

17 avril 2024

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

Correction de bugs

  • Correction du problème de sélection de la résolution ImageAnalysis lié au paramètre de résolution cible par défaut de l'analyseur: la résolution cible était incorrectement définie sur 640 x 480, même si les applications avaient défini un autre paramètre de résolution par défaut de l'analyseur. Si les applications rencontrent ce problème (versions 1.3.0 à 1.3.2) et ne peuvent pas passer à une version plus récente contenant la solution, vous pouvez contourner le problème en définissant directement un ResolutionSelector avec la résolution préférée et un AspectRatioStrategy correspondant à l'UseCase ImageAnalysis. (I81f72, b/330091012)

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 appropriés. (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 adapté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 à 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 à 7 ms
    • Samsung Galaxy S23 Ultra: environ 6 à 5 ms
    • Samsung A53 5G: environ 32 ms à 12 ms
  • Ajout du Snapdragon 480 à la CameraUseInconsistentTimebaseQuirk. Cela corrige un problème sur Android 12 pour les appareils utilisant ce chipset, où l'audio 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ésinitialisation sont déclenchés dans le bon ordre. Correction de certains problèmes d'aperçu noir lors du changement de mode des extensions ou du changement d'appareil photo. (Iddaac)
  • Correction du problème qui empêchait ImageAnalysis d'être associé à ImageCapture et à Preview lorsque certains modes d'extension sont activés sur certains appareils. La correction renvoie la valeur correcte lorsque les applications interrogent la disponibilité de ImageAnalysis via ExtensionsManager#isImageAnalysisSupported(). (I7d538)
  • Correction du problème de synchronisation du son et de la vidéo enregistrés lorsque le mode de duplication était activé sur le Xiaomi Poco X3 NFC. (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 alors que le VideoCapture auquel son enregistreur est associé est redirigé. (I517c6)

Correction de bugs

  • Correction d'un plantage qui survenait lorsqu'un flux était partagé avec VideoCapture et avec Preview. Correction d'un problème d'écran noir sur les anciens appareils lorsque le partage de flux est activé.
  • Résolution du problème lié aux grandes images JPEG capturées sur les appareils Samsung S7 (SM-G930T, SM-G930V). Les images JPEG capturées contiennent des données de marge intérieure redondantes de 0 dans le segment de données compressées JFIF. La taille des fichiers des images capturées est importante. Ces données de remplissage par zéro redondantes seront supprimées pour que les images capturées aient des tailles de fichiers d'image normales. (I407b0, b/288828159)
  • Correction d'un problème d'image JPEG capturée de grande taille sur les appareils de la série Samsung S22 (SM-S901B, SM-S901B/DS) et S22+ (SM-S906B). Les images JPEG capturées contiennent des données de marge intérieure redondantes de 0 dans le segment de données compressées JFIF. La taille des fichiers des images capturées est alors importante (environ 13 Mo) sur l'appareil S22 SM-S901B/DS. Les données de marge intérieure de ces zéros 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 JPEG capturées sur les appareils Samsung A5, A52, A70 et A72. Les images JPEG capturées contiennent des données de marge intérieure redondantes de 0 dans le segment de données compressées JFIF. Les images capturées sont très volumineuses (par exemple, environ 32 Mo, voire 96 Mo). Les données de marge intérieure de ces zéros 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 vue 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 la capture par faible luminosité. (I56ff5, b/280221967)
  • Correction d'un problème d'image JPEG capturée de grande taille sur les appareils de la série Samsung A5 (2017). Les images JPEG capturées contiennent des données de marge intérieure redondantes de 0 dans le segment de données compressées JFIF. La taille des fichiers des images capturées est alors d'environ 32 Mo. Ces données de remplissage par zéro redondantes seront supprimées pour que les images capturées aient des tailles de fichiers d'image normales. (I29837, b/288828159)
  • Correction du problème de non-déclenchement correct 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

  • Modification du nom de la fonction ResolutionSelector.Builder#setHighResolutionEnabledFlag(int) en setAllowedResolutionMode et des 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. Vous pouvez l'utiliser pour sélectionner des formats HDR 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 sont obsolètes. Veuillez utiliser les méthodes getSupportedQualities() et isQualitySupported() de VideoCapabilities à la place. (I04014)
  • CameraController#setVideoCaptureTargetQuality() est renommé setVideoCaptureQualitySelector et prend l'argument QualitySelector, ce qui offre plus de souplesse pour la configuration de la qualité vidéo. CameraController#getVideoCaptureTargetQuality() est 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

  • Utilisation de 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 dans des conditions de faible luminosité. (I6a022, b/286190938).
  • Ajout de la prise en charge du format ImageFormat.JPEG pour ImageProxy.toBitmap(). Si la matrice d'octets JPEG ne peut pas être décodée, une exception 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 vidéos avec une fréquence d'images en plus de 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

  • Les constantes ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON ont été rebaptisées ALLOWED_RESOLUTIONS_NORMAL/SLOW, et le nom de la fonction setHighResolutionEnabledFlag du générateur a été renommé setAllowedResolutionMode. (Iae817)
  • CameraInfo#getSupportedFrameRateRanges() renvoie désormais un Set plutôt qu'un List pour mieux représenter que les plages ne sont pas ordonnées. (I02f43)
  • Ajout d'un écouteur d'erreur à CameraEffect pour gérer les erreurs non ré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 "Aperçu" (If4f22).
  • VideoRecordEvent.Finalize se terminera désormais avec le code d'erreur ERROR_RECORDING_GARBAGE_COLLECTED lorsque l'objet Recording sera arrêté en raison de la collecte des déchets. (Iba974)

Correction de bugs

  • Correction de NullPointerException lorsque les tailles de sortie mises en cache dans StreamConfigurationMapCompat sont nulles. (Idf124, b/282025204)
  • Correction du problème qui empêchait Preview.setSurfaceProvider(null) de mettre en pause l'aperçu dans les extensions (Ia903e)
  • Correction d'un problème qui entraînait le déclenchement de 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

  • La caméra simultanée est une nouvelle fonctionnalité introduite à partir d'Android 11, qui permet de diffuser simultanément des images d'appareils photo. Par exemple, elle permet à un appareil d'utiliser simultanément la caméra avant et la caméra arrière. CameraX n'est actuellement compatible qu'avec deux caméras simultanées, ce qui permet à deux caméras de fonctionner en même temps, avec un maximum de deux {@link UseCase} liés à chacune. La résolution maximale est de 720p ou 1440p. Pour en savoir plus, consultez CameraManager#getConcurrentCameraIds().
  • Présentation de la nouvelle API ResolutionSelector, qui couvre les fonctionnalités suivantes :
    • Les applications peuvent spécifier des stratégies d'aspect et de résolution pour sélectionner la meilleure résolution en fonction de leurs besoins.
    • Tous les paramètres de taille et de format sont exprimés dans les coordonnées du capteur de l'appareil photo.
    • 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 haute résolution pour obtenir des images en haute résolution. Toutefois, veuillez noter 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 mises en miroir par défaut. Toutefois, par défaut, l'aperçu de la caméra avant est mis en miroir. Les API de mise en miroir VideoCapture permettent d'aligner 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 mise en miroir n'est pas activée pour la caméra arrière, mais l'est 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 à l'aide de règles de remplacement ou d'un filtre de résolution personnalisé pour obtenir les résultats souhaités. Les applications peuvent spécifier un indicateur pour activer la capture haute résolution. Cela permettra à CameraX de sélectionner des résolutions plus élevées lorsque vous prenez des photos ou des vidéos. Toutefois, veuillez noter 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).
  • Remplacez les noms de toutes les méthodes de fréquence d'images par "FrameRate". Correction de l'erreur Javadoc dans VideoCapture#getTargetFrameRate(). (I83304)
  • Abandon de l'ancienne API setTargetAspectRatio et setTargetResolution. Veuillez utiliser la nouvelle API ResolutionSelector à la place. (I542c3).
  • Ajout d'API publiques pour l'utilisation simultanée de deux caméras, y compris :
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn() et ConcurrentCameraConfig, SingleCameraConfig et ConcurrentCamera (Iab1c1)
  • ImageProcessor.Response#getOutputImage a été défini comme 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 exigent que l'enregistrement vidéo soit cohérent avec le comportement d'aperçu de l'appareil photo courant, c'est-à-dire que l'aperçu de la caméra arrière n'est pas mis en miroir, mais que l'aperçu de la caméra avant l'est. (I713b6, b/194634656)
  • Ajout de l'API setTargetFrameRate() dans VideoCapture.Builder et de l'API getTargetFramerate() dans VideoCapture (I109d4)
  • Faites en sorte que SurfaceOutput étend Closable et masquez le constructeur public de SurfaceOutput.Event. (I60ea8)
  • Ajout de Recording.mute pour activer ou désactiver dynamiquement le son d'un enregistrement en cours de traitement. RecordingStats contient AudioStats.AUDIO_STATE_MUTED lorsque l'enregistrement en cours de traitement est mis en sourdine explicitement. (Ie17fc)
  • Le paramètre #setEffects() a été défini comme 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 qui entraînait le plantage des applications qui appelaient 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 du problème qui empêchait de prendre des photos à l'aide de File dans le dossier public de l'espace de stockage externe sous Android 10 ou version ultérieure. Veuillez noter qu'à partir d'Android 10, pour prendre des photos à l'aide de "Fichier" dans le dossier public du stockage externe, vous devez également définir requestLegacyExternalStorage sur "true" dans le tag de l'application. (I11b2c)
  • Correction d'un plantage RejectedExecutionException dans DefaultSurfaceProcessor. Le plantage peut se produire lorsque VideoCapture est lié et que l'activité est mise en pause. (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 cible d'effets. Les effets qui ciblent VIDEO_CAPTURE seront appliqués à l'UseCase VideoCapture. Les effets qui ciblent PREVIEW|VIDEO_CAPTURE seront appliqués à un flux partagé avant d'être copiés dans le flux Preview et VideoCapture. (Iee6f3)

Correction de bugs

  • Dans Appareil photo 1.2.2: correction du problème qui empêchait les extensions CameraX de fonctionner correctement lorsque ProGuard est activé sur certains appareils tels que le Pixel (I90aa2)
  • Correction d'un bug PreviewView qui pouvait entraîner une distorsion de l'aperçu en cas de rotation de l'écran si l'application gère elle-même l'orientation de l'écran. Cela ne se produit que sur certains appareils. Il peut être reproduit sur le Pixel 4a, le Pixel 5 et le 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)

Corrections 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)

Corrections 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 de non-fonctionnement des extensions CameraX lorsque ProGuard est 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)

Corrections 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)

Corrections 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().

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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

Corrections 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.

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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

Corrections 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)

Corrections 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

Corrections 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

Corrections 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)

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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)

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-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

Corrections 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)

Corrections 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)

Corrections 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

Corrections 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

Corrections 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)

Corrections 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)

Corrections 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

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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

Corrections 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)

Corrections 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.

Corrections 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)

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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)

Corrections 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

Corrections 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

Corrections 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.

Corrections 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. 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.

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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)

Corrections 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

Corrections 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)

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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)

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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

Corrections 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)

Corrections 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

Corrections 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

Corrections 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)

Corrections 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

Corrections 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

Corrections 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)

Corrections 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

Corrections 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 de ceux 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.