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

时间:2019-06-26 14:52:06

标签: java android android-camerax

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

我已经在Android Developer Docs阅读了有关供应商扩展的文章。我试图重用他们的方法,但是CameraX var request = await client.FetchAccountInfoAsync(new Acklann.Plaid.Auth.GetAccountInfoRequest() { AccessToken = accessToken.AccessToken, ClientId = "<clientid>", Secret = "<secret>", Options = new Acklann.Plaid.Auth.GetAccountInfoOptions { AccountIds = bankId } });

中未包含示例中显示的类
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 git repository上找到,但是如果不导入完整的AndroidX项目,则很难进行设置。

3 个答案:

答案 0 :(得分:0)

我刚刚注意到编辑问题,并here选择显示为 Java 代码示例,但您放了 Kotlin 作为标识符。确保您使用正确的语言。这可能是问题所在。

这是来自Android Developer Docs Kotlin 示例:

import androidx.camera.extensions.BokehExtender

fun 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 Developer Docs 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);
}

答案 1 :(得分:0)

扩展名在Google Maven上仍然不可用 https://dl.google.com/dl/android/maven2/index.html

请参考此主题, https://stackoverflow.com/a/57177147/11861734

答案 2 :(得分:0)

Android CameraX扩展仅存在于以下版本中:“ 1.0.0-alpha01”

降级您的相机版本: //相机Jetpack库

def 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"
相关问题