Android MediaStore:Images.Media.insertImage vs ContentResolver.insert

Android 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

最近,我正在使用一个摄像头应用程序,我需要插入我在MediaStore中所做的所有图像。我看到有两种方法,但在阅读了文档之后,我没有看到它们之间有任何明显的区别

使用MediaStore

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,我有一个特定案例的问题。如果您能抽出时间检查一下,那就太好了: