如何启用 Android CameraX 供应商扩展?

我正在尝试构建基于 CameraX 的相机应用程序,并希望为相机预览启用散景(模糊)效果。这可能是由 CameraX 扩展来完成的,但是如何启用它们呢?


我已经在Android Developer Docs阅读了有关供应商扩展的文章。我尝试重用他们的方法,但示例中显示的类未包含在 CameraX 中alpha-02


import androidx.camera.extensions.BokehExtender;


void onCreate() {

    // Create a Builder same as in normal workflow.

    ImageCaptureConfig.Builder builder = new ImageCaptureConfig.Builder();


    // Create a Extender object which can be used to apply extension

    // configurations.

    BokehImageCaptureExtender bokehImageCapture = new

            BokehImageCaptureExtender(builder);


    // Query if extension is available (optional).

    if (bokehImageCapture.isExtensionAvailable()) {

        // Enable the extension if available.

        bokehImageCapture.enableExtension();

    }


    // Finish constructing configuration with the same flow as when not using

    // extensions.

    ImageCaptureConfig config = builder.build();

    ImageCapture useCase = new ImageCapture(config);

    CameraX.bindToLifecycle((LifecycleOwner)this, useCase);

}

我预计BokehImageCaptureExtender会导入,但看起来仍未提供。而且整个包裹androidx.camera.extensions都不见了。


这些类可以在官方AndroidX git 存储库中找到,但是如果不导入完整的 AndroidX 项目就很难设置它。


侃侃尔雅
浏览 141回答 3
3回答

慕虎7371278

Android CameraX 扩展仅存在于版本中:“1.0.0-alpha01”。降级相机版本://Camera Jetpack Librarydef camerax_version = "1.0.0-alpha01"implementation "androidx.camera:camera-core:$camerax_version"implementation "androidx.camera:camera-camera2:$camerax_version"implementation "androidx.camera:camera-extensions:$camerax_version"

梦里花落0921

我刚刚注意到编辑您的问题并在此处查看您显示的代码示例是Java,但您将Kotlin作为标识符。确保您使用的是正确的语言。这可能是问题所在。这是Android 开发者文档中的Kotlin示例:import androidx.camera.extensions.BokehExtenderfun onCreate() {    // Create a Builder same as in normal workflow.    val builder = ImageCaptureConfig.Builder()    // Create a Extender object which can be used to apply extension    // configurations.    val bokehImageCapture = BokehImageCaptureExtender.create(builder)    // Query if extension is available (optional).    if (bokehImageCapture.isExtensionAvailable()) {        // Enable the extension if available.        bokehImageCapture.enableExtension()    }    // Finish constructing configuration with the same flow as when not using    // extensions.    val config = builder.build()    val useCase = ImageCapture(config)    CameraX.bindToLifecycle(this as LifecycleOwner, useCase)}这是Android 开发者文档中的Java示例:import androidx.camera.extensions.BokehExtender;void onCreate() {    // Create a Builder same as in normal workflow.    ImageCaptureConfig.Builder builder = new ImageCaptureConfig.Builder();    // Create a Extender object which can be used to apply extension    // configurations.    BokehImageCaptureExtender bokehImageCapture = new            BokehImageCaptureExtender(builder);    // Query if extension is available (optional).    if (bokehImageCapture.isExtensionAvailable()) {        // Enable the extension if available.        bokehImageCapture.enableExtension();    }    // Finish constructing configuration with the same flow as when not using    // extensions.    ImageCaptureConfig config = builder.build();    ImageCapture useCase = new ImageCapture(config);    CameraX.bindToLifecycle((LifecycleOwner)this, useCase);}

郎朗坤

扩展在 google maven 上仍然不可用 https://dl.google.com/dl/android/maven2/index.html请参阅此线程, https://stackoverflow.com/a/57177147/11861734
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java