使用相机拍照并设置为“图像视图”在kotlin中不工作

xxhby3vn  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(367)

我试图在应用程序上创建一个摄像头选择器功能,我面临的摄像头图片的一些方法是不赞成的,所以我试图解决的代码,而不是使用任何去擦洗的方法。清单上的第一个声明权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

之后创建一个摄影机意图:

private var imageStr:Uri?=null

val values = ContentValues()
values.put(Media.TITLE, "New Picture")
values.put(Media.DESCRIPTION, "From the Camera")
imageStr = requireActivity().contentResolver.insert(EXTERNAL_CONTENT_URI, values)
// camera intent
val intent = Intent(ACTION_IMAGE_CAPTURE)
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageStr)
startForCameraResult.launch(intent)

然后我们得到startforcameraresult的值:

private val startForCameraResult = registerForActivityResult(StartActivityForResult()) {
    if (it.resultCode == RESULT_OK) {
        profileImage.setImageURI(imageStr)
    }
}

这是代码,问题是我总是得到imagestr为空。请告诉我处理这个问题的正确方向。谢谢

vecaoik1

vecaoik11#

在OnActivityResult中,您将得到如下意图:将其转换为位图

val bitmap = data.extras?.get("data") as Bitmap?

现在在图像上设置位图:

profileImage.setImageBitmap(bitmap)

更新:

fun takeImage() {

        val i = Intent(
            Intent.ACTION_PICK, 
      MediaStore.Images.Media.EXTERNAL_CONTENT_URI
        )
        startActivityForResult(i, 100)

}

在onactivityresult()中

override fun onActivityResult(requestCode: Int, resultCode: Int, data: 
Intent?) {
 super.onActivityResult(requestCode, resultCode, data)
if(requestCode==100){

} }

xjreopfe

xjreopfe2#

如果您正在使用 targetSdkVersion 29 & compileSdkVersion 29 你需要设置 android:requestLegacyExternalStorage="true" 在androidmanifest.xml文件的应用程序标记中。

相关问题