takePicture 需要 CameraX 上的执行程序 (1.0.0-alpha06)

2024-03-24

更新后从

androidx.camera:camera-core:1.0.0-alpha03

to

androidx.camera:camera-core:1.0.0-alpha06

setTargetAspectRatio(在 ImageCaptureConfig.Builder 中)和 takePicture(在 ImageCapture 中)方法的签名已更改。

官方文档和网络信息没有显示如何使用新方法(如何指定执行器)。

更新后损坏的代码:

...
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?) {
            ...
        })
    }
}

有谁有(或知道在哪里可以找到)如何使用新方法的示例? 提前致谢


官方 Google Codelabs 显然最近已经更新,使用:Executors.newSingleThreadExecutor()

参考:https://codelabs.developers.google.com/codelabs/camerax-getting-started/#4 https://codelabs.developers.google.com/codelabs/camerax-getting-started/#4

编辑:自从@kos https://stackoverflow.com/users/1481500/kos的回应对我来说也很有意义,我添加了这两个官方 Android 文档参考:

https://developer.android.com/reference/java/util/concurrent/Executors.html#newSingleThreadExecutor() https://developer.android.com/reference/java/util/concurrent/Executors.html#newSingleThreadExecutor()

https://developer.android.com/reference/java/util/concurrent/Executors.html#newCachedThreadPool() https://developer.android.com/reference/java/util/concurrent/Executors.html#newCachedThreadPool()

这样,本主题的每个读者都可以对执行者做出自己的决定。

进一步编辑:自 1.0.0-alpha07 以来,API 发生了重要变化,因此我研究了一些文档。有一个 GitHub 示例显示执行器检索,如下所示mainExecutor = ContextCompat.getMainExecutor(requireContext())(Source https://github.com/android/camera-samples/blob/master/CameraXBasic/app/src/main/java/com/android/example/cameraxbasic/fragments/CameraFragment.kt#L145)

如果你们中的一些人已经实现了 CameraX 并且它运行良好,我肯定会等待 Android 推荐的测试版发行说明 https://developer.android.com/jetpack/androidx/releases/camera

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

takePicture 需要 CameraX 上的执行程序 (1.0.0-alpha06) 的相关文章

随机推荐