0

我想为 kotlin 制作 Objectron,但出现此错误-> Logcat img

  1. 启动我的应用
  2. 获取消息框以访问我的相机
  3. 点击确定
  4. 跳到黑屏
  5. 在黑屏和应用程序崩溃 2-3 秒后

这就是我运行相机的方式:

override fun onResume() {
    super.onResume()
    converter = ExternalTextureConverter(eglManager!!.context)
    converter!!.setFlipY(FLIP_FRAMES_VERTICALLY)
    converter!!.setConsumer(processor)
    if (PermissionHelper.cameraPermissionsGranted(this)) {
        startCamera()
    }
}

private fun startCamera() {
    cameraHelper = CameraXPreviewHelper()
    cameraHelper!!.setOnCameraStartedListener { surfaceTexture: SurfaceTexture? ->
        previewFrameTexture = surfaceTexture
        // Make the display view visible to start showing the preview. This triggers the
        // SurfaceHolder.Callback added to (the holder of) previewDisplayView.
        previewDisplayView!!.visibility = View.VISIBLE
    }
    cameraHelper!!.startCamera(this, CAMERA_FACING,  /*surfaceTexture=*/null)
}

这是用于查看相机:

private fun setupPreviewDisplayView() {
    previewDisplayView!!.visibility = View.GONE
    val viewGroup = findViewById<ViewGroup>(R.id.preview_display_layout)
    viewGroup.addView(previewDisplayView)
    previewDisplayView!!
            .holder
            .addCallback(
                object : SurfaceHolder.Callback {
                    override fun surfaceCreated(holder: SurfaceHolder) {
                        processor!!.videoSurfaceOutput.setSurface(holder.surface)
                    }

                    override fun surfaceChanged(
                        holder: SurfaceHolder,
                        format: Int,
                        width: Int,
                        height: Int
                    ) {
                        val viewSize = Size(width, height)
                        val displaySize =
                            cameraHelper!!.computeDisplaySizeFromViewSize(viewSize)
                        converter!!.setSurfaceTextureAndAttachToGLContext(
                            previewFrameTexture, displaySize.width, displaySize.height
                        )
                    }

                    override fun surfaceDestroyed(holder: SurfaceHolder) {
                        processor!!.videoSurfaceOutput.setSurface(null)
                    }
                })
}
4

0 回答 0