是否可以按时间升序检索提供者 MediaStore.Images.ImageColumns 和 MediaStore.Video.VideoColumns 的所有图像和视频?
为了更准确地解释,我需要一个包含所有视频和图像的列表,每个元组包含以下属性:id、日期、名称、纬度、经度、路径、mimeType、数据。
但是这些信息分为三个表,每种媒体一个:MediaStore.MediaColumns、Images.ImageColumns 和 MediaStore.Video.VideoColumns。
是否可以一次查询?
我认为一种解决方案是查询 MediaStore.MediaColumns 表中的 ID(按时间升序排列),然后对于获得的每个 ID,根据 MediaStore 中的 mimetype 在特定表中执行一次查询。如果是图片则在 Images.ImageColumns 中,如果是视频则在 MediaStore.Video.VideoColumns 中...
时间上的上升顺序对我来说很重要。先查询图片再查询视频的解决方案不太方便...我不想对两个列表结果进行分类...
如果你能帮助我,非常感谢!
最佳答案
通常我会建议您使用 UNION 操作,如下例所示:
select _id, date_modified, _display_name, latitude, longitude, _data, mime_type from video UNION ALL select _id, date_modified, _display_name, latitude, longitude, _data, mime_type from images ORDER BY date_modified ASC;
此查询返回两个表中所有视频和图像的列表,结果按修改日期排序。然而,android 的 ContentResolver 的查询 API 并不是完全为全面的 SQL 请求而设计的。因此,我不确定如何将这个复合请求放入内容解析器的查询函数中。
因此,我认为您应该根据需要对 Images.Media.EXTERNAL_CONTENT_URI 和 Video.Media.EXTERNAL_CONTENT_URI 执行单独查询,然后整理结果。
关于Android - 以上升的时间顺序检索图像和视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8812452/