Après la mise à jour de
androidx.camera:camera-core:1.0.0-alpha03
à
androidx.camera:camera-core:1.0.0-alpha06
les signatures des méthodes setTargetAspectRatio (dans ImageCaptureConfig.Builder) et takePicture (dans ImageCapture) ont été modifiées.
La documentation officielle et les informations sur le Web ne montrent pas comment utiliser de nouvelles méthodes (comment spécifier l'exécuteur).
Code cassé après la mise à jour:
...
val captureConfig = ImageCaptureConfig.Builder()
.setTargetAspectRatioCustom(Rational(1, 1)) //this method changed
.setFlashMode(flashMode)
.setLensFacing(lensFacing)
.build()
val capture = ImageCapture(captureConfig)
binding.takeAPhoto.setOnClickListener {
...
val imageFile = createTempFile(System.currentTimeMillis().toString(), ".jpg")
capture.takePicture(imageFile, object : ImageCapture.OnImageSavedListener { //this method also changed
override fun onImageSaved(file: File) {
...
}
override fun onError(useCaseError: ImageCapture.UseCaseError, message: String, cause: Throwable?) {
...
})
}
}
Quelqu'un a-t-il (ou sait-il où trouver) des exemples d'utilisation de nouvelles méthodes? Merci d'avance
Vous devez uniquement exécuter la commande comme ci-dessous.
@Override
public void execute(Runnable command) {
command.run(); // <-- THIS IS NEEDED
}
Voici un journal des modifications pour les modifications dans alpha06: https://developer.Android.com/jetpack/androidx/releases/camera
setTargetAspectRatio()
prend désormais AspectRatio
enum avec la valeur 4_3
ou 16_9
.takePicture()
la méthode prend (file, metadata, executor, imageSavedListener)
// pourrait utiliser l'exécuteur selon votre cas/besoin. l'exemple est val executor = Executors.newSingleThreadExecutor()
useCase.onPreviewOutputUpdateListener =
utilisez useCase.setOnPreviewOutputUpdateListener()
FYI: CameraX sera en version bêta en décembre 2019