【问题标题】:Kotlin - unresolved reference for constantKotlin - 未解决的常量参考
【发布时间】:2015-04-06 21:48:11
【问题描述】:

我正在尝试将新相机硬件 API (android.hardware.camera2) 的示例代码用于我的 android 应用。首先,我通过 Android Studio 的 Kotlin 插件的自动转换功能将 Java 代码转换为 Kotlin 代码。下面是一段转换后的代码:

private val mCaptureCallback = object : CameraCaptureSession.CaptureCallback() {

    private fun process(result: CaptureResult) {
        when (mState) {
            STATE_PREVIEW -> {
            }// We have nothing to do when the camera preview is working normally.
            STATE_WAITING_LOCK -> {
                val afState = result.get(CaptureResult.CONTROL_AF_STATE)
                if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState || CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState) {
                    // CONTROL_AE_STATE can be null on some devices
                    val aeState = result.get<Int>(CaptureResult.CONTROL_AE_STATE)
                    if (aeState == null || aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED) {
                        mState = STATE_WAITING_NON_PRECAPTURE
                        captureStillPicture()
                    } else {
                        runPrecaptureSequence()
                    }
                }
            }
            STATE_WAITING_PRECAPTURE -> {
                // CONTROL_AE_STATE can be null on some devices
                val aeState = result.get<Int>(CaptureResult.CONTROL_AE_STATE)
                if (aeState == null || aeState == CaptureResult.CONTROL_AE_STATE_PRECAPTURE || aeState == CaptureRequest.CONTROL_AE_STATE_FLASH_REQUIRED) {
                    mState = STATE_WAITING_NON_PRECAPTURE
                }
            }
            STATE_WAITING_NON_PRECAPTURE -> {
                // CONTROL_AE_STATE can be null on some devices
                val aeState = result.get<Int>(CaptureResult.CONTROL_AE_STATE)
                if (aeState == null || aeState != CaptureResult.CONTROL_AE_STATE_PRECAPTURE) {
                    mState = STATE_PICTURE_TAKEN
                    captureStillPicture()
                }
            }
        }
    }

我收到未解决的参考错误:

CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED
CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED
CaptureResult.CONTROL_AE_STATE_CONVERGED
CaptureResult.CONTROL_AE_STATE_PRECAPTURE
CaptureRequest.CONTROL_AE_STATE_FLASH_REQUIRED

但是这些常量在原始 Java 代码中是可以识别的。这些错误有什么解决办法吗?

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    这些变量在 CameraMetadata 中声明。在 Kotlin 中,静态变量和方法不能在子类上调用。

    【讨论】:

    • 不,只需使用 CameraMetadata.CONTROL_AF_STATE_FOCUSED_LOCKED 而不是 CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED
    • 谢谢!我会尝试你的建议。
    猜你喜欢
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 2021-10-29
    • 2018-10-16
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多