我下面的代码运行良好,单击按钮后,打开了“相机意图”,允许我拍照,然后确认照片是可以的,即单击按钮后有2个用户界面,直到图片已加载到图片视图中。 我可以自动执行该操作吗,即,一旦用户单击活动上的按钮,摄像机的意图便会直接打开,为其中的任何东西拍照,然后将捕获的内容返回给用户。
mm,即类似使用take a selfie
语音命令的应用。
我打开相机意图的典型代码是:
btnCamera.setOnClickListener { // I need this click to be the only thing done by the user
if(isPermissionGranted(permission.CAMERA)) startCamera()
else requestCameraPermission(this)
}
private fun startCamera() {
val fileName = System.currentTimeMillis().toString() + ".jpeg"
output = File(
this.getExternalFilesDir(Environment.DIRECTORY_PICTURES),
fileName
)
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
outPutFileUri = this.let { it ->
FileProvider.getUriForFile(
it,
BuildConfig.APPLICATION_ID,
output!!
)
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutFileUri)
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) = runBlocking {
super.onActivityResult(requestCode, resultCode, data)
val activity = this
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) {
val bitmap = outPutFileUri?.let { getCapturedImage(it) }
imageView.setImageBitmap(bitmap)
}
}
private fun getCapturedImage(selectedPhotoUri: Uri): Bitmap =
when {
Build.VERSION.SDK_INT < 28 -> MediaStore.Images.Media.getBitmap(
contentResolver, selectedPhotoUri)
else -> {
val source = ImageDecoder.createSource(contentResolver, selectedPhotoUri)
ImageDecoder.decodeBitmap(source)
}
}
相机将被打开,图片将被拍摄,用户将看到屏幕上正在发生的事情,如果可以在不打开相机应用程序的情况下拍照,那么它也会受到欢迎。谢谢
答案 0 :(得分:0)
我可以自动执行该操作吗,即,一旦用户单击活动上的按钮,摄像机的意图便会直接打开,为其中的任何照片拍照,并将捕获的内容返回给用户。
否。
您需要实现自己的相机应用程序功能以自动捕获图像,无论是直接使用相机API还是通过包装器库(CameraX,Fotoapparat,CameraKit-Android等)使用。