【问题标题】:Not able to take pictures with CameraKit in Kotlin无法在 Kotlin 中使用 CameraKit 拍照
【发布时间】:2019-06-26 19:32:47
【问题描述】:

我正在尝试使用 CameraKit 来拍照。到目前为止,我已经能够实现 CameraKit 并从我的相机中获取预览流。

这是我的代码:

package com.example.testapp
import com.camerakit.CameraKitView
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_camera_screen.*


class cameraScreen : AppCompatActivity() {

    private lateinit var cameraKitView:CameraKitView


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_camera_screen)
        cameraKitView = findViewById(R.id.camera)

        photoButton.setOnClickListener{
            cameraKitView.captureImage(object:CameraKitView.ImageCallback() {
                 override fun onImage(cameraKitView:CameraKitView, capturedImage:ByteArray) {
                    // capturedImage contains the image from the CameraKitView.
                     Toast.makeText(applicationContext,"Image Taken", Toast.LENGTH_SHORT).show()
                 }
            })
        }

    }

    override fun onStart() {
        super.onStart()
        cameraKitView.onStart()

    }

    override fun onResume() {
        super.onResume()
        cameraKitView.onResume()

    }

    public override fun onPause() {
        cameraKitView.onPause()
        super.onPause()
    }

    override fun onStop() {
        cameraKitView.onStop()
        super.onStop()
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        cameraKitView.onRequestPermissionsResult(requestCode, permissions, grantResults)
    }
}

现在根据 CameraKit 文档,这就是制作图像的原因:

cameraKitView.captureImage(new  CameraKitView.ImageCallback() {
    @Override
    public void onImage(CameraKitView cameraKitView, final byte[] capturedImage) {
        // capturedImage contains the image from the CameraKitView.
    }
})

如您所见,我已尝试将这段 Java 代码转换为上面的 Kotlin。但是,在这一行 - cameraKitView.captureImage(object:CameraKitView.ImageCallback() { 我不断收到错误

这个类没有构造函数

我在 ImageCallback() 上收到此错误。我尝试了很多关于如何从 CameraKit 捕获图像的示例,但它们都是 Java 语言,当我转换它们时,它们都给了我同样的错误。

我该如何解决这个问题? 此外,如何在拍摄后预览图像,直到用户点击按钮保存(或拒绝它,在这种情况下我会返回相机)?

更新

cameraKitView.captureImage(object:CameraKitView.ImageCallback() 行中删除了圆括号。这使得错误消失并显示吐司,但应用程序没有响应,所以我真的不知道是否正在拍摄照片。

现在的新线路是cameraKitView.captureImage(object:CameraKitView.ImageCallback

【问题讨论】:

    标签: java android kotlin android-camera


    【解决方案1】:

    我认为你不应该使用

    cameraKitView.captureImage(object:CameraKitView.ImageCallback()
    

    事实上,因为我也不知道如何使用它。

    如果可能,请尝试以下方法获取捕获的图像。它返回图像字节数组样式,你可以用它来做你想做的事!

    btnLaunchCameraKit.setOnClickListener {
        cameraKitView.captureImage { cameraKitView, bytes ->
            val bitmap = BitmapFactory.decodeByteArray(bytes,0,bytes.size) as Bitmap
            cameraImage3.setImageBitmap(bitmap)
        }
    }
    

    【讨论】:

    • 非常感谢您的回答。然而,我放弃了这个项目,所以我无法判断它是否正确。
    猜你喜欢
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2019-03-03
    • 2013-02-17
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多