无法访问“<init>”:它是“ViewfinderSurfaceRequest”中的包私有

问题描述 投票:0回答:1

我正在尝试在 Kotlin/Android 中使用 Camera2 API 实现 CameraViewFinder。但我遇到了这样的错误,

无法访问“”:它是包私有的 '取景器表面请求'。

import androidx.camera.viewfinder.ViewfinderSurfaceRequest
import androidx.camera.viewfinder.CameraViewfinder

val viewfinderSurfaceRequest =
             ViewfinderSurfaceRequest(
                Size(640, 480),
                characteristics.get(CameraCharacteristics.LENS_FACING)!!,
                characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION)!!,
                CameraViewfinder.ImplementationMode.PERFORMANCE
            )
        val surfaceListenableFuture =
            cameraViewFinder.requestSurfaceAsync(viewfinderSurfaceRequest)

        Futures.addCallback(surfaceListenableFuture, object : FutureCallback<Surface> {
            override fun onSuccess(result: Surface?) {
                /* create a CaptureSession using this surface as usual */
            }

            override fun onFailure(t: Throwable) { /* something went wrong */
            }
        }, ContextCompat.getMainExecutor(cameraViewFinder.context))

在我的build.gradle

 implementation "androidx.camera:camera-camera2:1.3.0-rc01"
 implementation "androidx.camera:camera-lifecycle:1.3.0-rc01"
 implementation "androidx.camera:camera-view:1.3.0-rc01"
 implementation "androidx.camera:camera-viewfinder:1.3.0-beta02"

当我导航到 ViewfinderSurfaceRequest 的源代码时,它被声明为公共,正如它应该的那样。怎么了?

android androidx android-camera2 camera-view
1个回答
0
投票

构造函数不是公开的 - 您应该使用 Builder 创建请求的实例:https://developer.android.com/reference/androidx/camera/viewfinder/ViewfinderSurfaceRequest.Builder

这样您就可以在适当的情况下使用默认值或 XML 布局。

您还可以使用扩展方法跳过CameraCharacteristics中的几行读取: https://developer.android.com/reference/androidx/camera/viewfinder/ViewfinderSurfaceRequest.Builder#(androidx.camera.viewfinder.ViewfinderSurfaceRequest.Builder).populateFromCharacteristics(android.hardware.camera2.CameraCharacteristics)

© www.soinside.com 2019 - 2024. All rights reserved.