zoukankan      html  css  js  c++  java
  • 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         }

       

  • 相关阅读:
    HDOJ 1015 Safecracker
    POJ3187 虽然超时了,但是还得纪念一下
    HDOJ 1248
    HDOJ 1161
    动态规划——砝码称重
    P01P02P03各种背包!!
    对基类与派生类对象和指针赋值的小结
    程序员技术练级攻略
    CodeForces 愚人节题目
    java入门
  • 原文地址:https://www.cnblogs.com/ZSS-Android/p/3955601.html
Copyright © 2011-2022 走看看