CameraX的OnImageCapturedListener给出错误

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

我正在测试新的CameraX API,并且具有以下代码行:

imageCapture.takePicture(executor, object:ImageCapture.OnImageCapturedListener{
    // do some work when image is captured 
})

但是参数object:ImageCapture.OnImageCapturedListener用红色下划线。 Android Studio告诉我:"This type has a constructor and thus must be initialized here"

注意:上面的代码在Button的点击监听器中调用。

[下面您可以看到ImageCapture类的另一个侦听器,即OnImageSavedListener。使用此界面,我没有任何错误。

findViewById<ImageButton>(R.id.capture_button).setOnClickListener {
            val file = File(externalMediaDirs.first(),
                "${System.currentTimeMillis()}.jpg")

            imageCapture.takePicture(file, executor,
                object : ImageCapture.OnImageSavedListener {

                    override fun onError(
                        imageCaptureError: ImageCapture.ImageCaptureError,
                        message: String,
                        exc: Throwable?
                    ) {
                        val msg = "Photo capture failed: $message"
                        Log.e("CameraXApp", msg, exc)
                        viewFinder.post {
                            Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
                        }
                    }

                    override fun onImageSaved(file: File) {
                        val msg = "Photo capture succeeded: ${file.absolutePath}"
                        Log.d("CameraXApp", msg)
                        viewFinder.post {
                            Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
                        }

                        var bitmap:Bitmap = viewFinder.bitmap
                        runOnUiThread { imageView.setImageBitmap(bitmap) }
                    }
                })

我对此没有问题,但是当我使用OnImageCapturedListener并将onImageSaved回调替换为onCaptureSuccess回调时,如上所述,我得到一个错误

android callback android-camerax
1个回答
0
投票

尝试此代码。

imageCapture.takePicture(executor,object :ImageCapture.OnImageCapturedListener(){
            override fun onCaptureSuccess(image: ImageProxy?, rotationDegrees: Int) {
                super.onCaptureSuccess(image, rotationDegrees)                     
            }
            override fun onError(
                imageCaptureError: ImageCapture.ImageCaptureError,
                message: String,
                cause: Throwable?
            ) {
                super.onError(imageCaptureError, message, cause)
            }

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