Android - 以上升时间顺序检索图像和视频

时间:2012-01-11 00:12:25

标签: android provider

是否有可能以暂时上升的顺序检索提供商MediaStore.Images.ImageColumns和MediaStore.Video.VideoColumns的所有图像和视频?

为了更准确地解释,我需要一个包含每个元组的所有视频和图像的列表,其中包含以下属性:id,date,name,latitude,longitude,path,mimeType,data。

但是这些信息分为三个表,每种表对应一种媒体:MediaStore.MediaColumns,Images.ImageColumns和MediaStore.Video.VideoColumns。

是否可以使用一个查询?

我认为解决方案是在MediaStore.MediaColumns表中查询id(按时间上升顺序)然后,对于获得的每个id,在特定表中执行一个查询,具体取决于mimetype:在MediaStore中。 Images.ImageColumns如果是图像,或者在MediaStore.Video.VideoColumns中,如果它是一个视频......

暂时上升的顺序对我来说很重要。首先查询图像然后查看视频的解决方案不方便...我不想对两个列表结果进行分类......

非常感谢你能帮助我!

1 个答案:

答案 0 :(得分:1)

通常我建议您使用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;

此查询返回两个表中所有视频和图像的列表,结果按date_modified排序。但是,android的ContentResolver的查询API并不是为完整的SQL请求而设计的。因此,我不确定如何将此复合请求放入内容解析器的查询函数中。

所以,我认为您应该根据需要对Images.Media.EXTERNAL_CONTENT_URI和Video.Media.EXTERNAL_CONTENT_URI执行单独的查询,然后整理结果。