10.1 使用MediaStore检索视频

    正如在第1章多讨论的,Android为应用程序之间共享数据提供了一个标准的方式。ContentProvider类是实现此功能的基础类。而且,正如之前所提及的那样,针对媒体扩展了ContentProvider概念的类是各种MediaStore类。我们之前已经查看了如何将MediaStore用于图像和音频以及他们的相关元数据。而用于视频的MediaStore也会以大致相同的方式工作。

   MediaStore.Video是MediaStore中的嵌套类,专门用于视频文件。在MediaStore.Video中是MediaStore.Video.Media类,其中包含了各种常量,以指定在MediaStore中与视频媒体本身相关的可用列,其中的许多列都是继承自其他类,如MediaStore.MediaColumns等。还有一个MediaStore.Video.Thumbnails类,其中也包含了常量,以指定在用于缩略图存储的MediaStore中与视频文件相关的可用列。

    为了使用在Activity类中存在的managedQuery方法,还需要传入想要返回的列数组。本例指定的数组表明我们想要视频在MediaStore中的唯一ID:MediaStore.Video.Media._ID。随后是MediaStore.Video.Media.DATA,它是指向视频文件本身的路径。接下来两个参数指定我们想要获得文件的标题和MIME类型。

1         String[]mediaColumns={MediaStore.Video.Media._ID,MediaStore.Video.Media.DATA,MediaStore.Video.Media.TITLE,MediaStore.Video.Media.MIME_TYPE};

    为了通过MediaStore查询视频内容,可利用在常量MediaStore.Video.Media.EXTERNAL_CONTENT_URI中指定的Uri作为查询的数据源。

1         cursor=managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, mediaColumns, null, null, null);

    之后将返回一个Cursor对象,其可用于遍历和提取数据。

 1 if(cursor.moveToFirst()){
 2             do{
 3                 VideoViewInfo newVVI=new VideoViewInfo();
 4                 int id=cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media._ID));
 5                 Cursor thumbCursor=managedQuery(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, thumbColumn, MediaStore.Video.Thumbnails.VIDEO_ID+"="+id, null, null);
 6                 if(thumbCursor.moveToFirst()){
 7                     newVVI.thumbPath=thumbCursor.getString(thumbCursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA));
 8                 }
 9                 newVVI.filePath=cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));
10                 newVVI.title=cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.TITLE));
11                 newVVI.mimeType=cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.MIME_TYPE));
12                 videoRows.add(newVVI);
13             }while(cursor.moveToNext());
14         }

   

原文地址:https://www.cnblogs.com/ZSS-Android/p/3955601.html