Android MediaStore:Images.Media.insertImage vs ContentResolver.insert
最近,我正在使用一个摄像头应用程序,我需要插入我在MediaStore中所做的所有图像。我看到有两种方法,但在阅读了文档之后,我没有看到它们之间有任何明显的区别 使用MediaStoreAndroid MediaStore:Images.Media.insertImage vs ContentResolver.insert,android,image,android-camera,thumbnails,mediastore,Android,Image,Android Camera,Thumbnails,Mediastore,最近,我正在使用一个摄像头应用程序,我需要插入我在MediaStore中所做的所有图像。我看到有两种方法,但在阅读了文档之后,我没有看到它们之间有任何明显的区别 使用MediaStore return Images.Media.insertImage(app.contentResolver, metadata.path, metadata.name, "") 使用ContentResolver val contentValues = ContentValues().app
return Images.Media.insertImage(app.contentResolver, metadata.path, metadata.name, "")
使用ContentResolver
val contentValues = ContentValues().apply {
put(Images.Media.DATA, metadata.path)
put(Images.Media.MIME_TYPE, appImg.mimeType)
put(Images.Media.DISPLAY_NAME, metadata.name)
put(Images.Media.DATE_TAKEN, currentTime)
put(Images.Media.DATE_ADDED, currentTime)
put(Images.ImageColumns.SIZE, appImg.sizeInBytes)
put(Images.Media.WIDTH, appImg.width)
put(Images.Media.HEIGHT, appImg.height)
appImg[MediaMetadata.Location]?.let {
put(Images.Media.LATITUDE, it.latitude)
put(Images.Media.LONGITUDE, it.longitude)
}
}
return app.contentResolver.insert(Images.Media.EXTERNAL_CONTENT_URI, contentValues)
在阅读一些文档时,我看到第二个文档也在创建缩略图,但它不能解释它是否会永远创建缩略图,因此这也将存储在MediaStore中,我将能够更快地查询和检索缩略图
任何人都可以使用这两个版本,并且可以解释何时使用其中一个版本?尽管从源代码来看,insertImage()
等同于使用具有正确值的contentResolver.insert()
,但也被标记为不推荐使用。因此,您可能应该使用后者
还要注意,从Android Q(API 29)开始,位置数据不再存储在MediaStore数据库中(它存储在Exif元数据中)。有关Android Q的更多信息,请参阅媒体存储。如果您没有启用传统存储或是系统应用程序,则任何
数据字段都将被忽略。只需在上面@CodeRed的回复上添加,相同的示例代码在上非常有用。在示例代码中,我没有看到任何MediaStore代码,@CodeRed提供的上述链接不再可访问。Hi@CodeRed,我有一个特定案例的问题。如果您能抽出时间检查一下,那就太好了: