该问题的根本原因是使用takePicture方法时缺少对FileProvider的支持。可以通过以下步骤解决此问题:
1.在AndroidManifest.xml文件中添加以下标签:
2.创建一个名为“provider_paths.xml”的文件,并将其保存在xml文件夹中。该文件应包含以下内容:
3.使用如下方式获取FileProvider的Uri:
val photoFile: File = //相片文件 val photoURI: Uri = FileProvider.getUriForFile(context, context.applicationContext.packageName + ".provider", photoFile)
4.调用takePicture()方法时,使用上一步获取到的Uri参数,如下所示:
imageCapture.takePicture(photoFile, object : ImageCapture.OnImageSavedListener { override fun onError(error: ImageCapture.UseCaseError, message: String, exc: Throwable?) {} override fun onImageSaved(file: File) {} })
完成以上步骤后,即可正常使用takePicture()方法拍照并保存相片。