我想为 kotlin 制作 Objectron,但出现此错误-> Logcat img
- 启动我的应用
- 获取消息框以访问我的相机
- 点击确定
- 跳到黑屏
- 在黑屏和应用程序崩溃 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)
}
})
}