你好,游客 登录 注册 搜索
背景:
阅读新闻

Android本地视频播放器开发

搜索本地视频(1)

[日期:2013-06-13] 来源:Linux社区  作者:jwzhangjie [字体: ]

这一章的主要内容是搜索手机本地视频,添加到ListView列表里,每一个表项含有这个视频的缩略图,视频的播放时间,视频的标题,在搜索本地视频(1)中我们先制作搜索功能。
 
Video.java--视频相关的属性类

package com.zhangjie.graduation.videopalyer.videofile;

import java.io.Serializable;

import com.zhangjie.graduation.videopalyer.component.LoadedImage;

public class Video implements Serializable{
    /**
  *
  */
 private static final long serialVersionUID = -7920222595800367956L;
 private int id;
    private String title;
    private String album;
    private String artist;
    private String displayName;
    private String mimeType;
    private String path;
    private long size;
    private long duration;
    private LoadedImage image;

    /**
    *
    */
    public Video() {
        super();
    }

    /**
    * @param id
    * @param title
    * @param album
    * @param artist
    * @param displayName
    * @param mimeType
    * @param data
    * @param size
    * @param duration
    */
    public Video(int id, String title, String album, String artist,
            String displayName, String mimeType, String path, long size,
            long duration) {
        super();
        this.id = id;
        this.title = title;
        this.album = album;
        this.artist = artist;
        this.displayName = displayName;
        this.mimeType = mimeType;
        this.path = path;
        this.size = size;
        this.duration = duration;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }

    public String getDisplayName() {
        return displayName;
    }

    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }

    public String getMimeType() {
        return mimeType;
    }

    public void setMimeType(String mimeType) {
        this.mimeType = mimeType;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public long getSize() {
        return size;
    }

    public void setSize(long size) {
        this.size = size;
    }

    public long getDuration() {
        return duration;
    }

    public void setDuration(long duration) {
        this.duration = duration;
    }
   
    public LoadedImage getImage(){
     return image;
<pre class="java" name="code"> 
    }
   
    public void setImage(LoadedImage image){
     this.image = image;
    }

}

AbstructProvider.java ---一个接口,来获取搜索的视频的一个集合
package com.zhangjie.graduation.videopalyer.videofile;

import java.util.List;

public interface AbstructProvider {
 
    public List<Video> getList();
   
}

VideoProvider.java--- 实现AbstructProvider接口,通过cursor来搜索视频的相关信息
package com.zhangjie.graduation.videopalyer.videofile;

import java.util.ArrayList;
import java.util.List;

import Android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;

public class VideoProvider implements AbstructProvider {
    private Context context;
   
    public VideoProvider(Context context) {
        this.context = context;
    }
   
    @Override
    public List<Video> getList() {
        List<Video> list = null;
        if (context != null) {
            Cursor cursor = context.getContentResolver().query(
                    MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null,
                    null, null);
            if (cursor != null) {
                list = new ArrayList<Video>();
                while (cursor.moveToNext()) {
                    int id = cursor.getInt(cursor
                            .getColumnIndexOrThrow(MediaStore.Video.Media._ID));
                    String title = cursor
                            .getString(cursor
                                    .getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
                    String album = cursor
                            .getString(cursor
                                    .getColumnIndexOrThrow(MediaStore.Video.Media.ALBUM));
                    String artist = cursor
                            .getString(cursor
                                    .getColumnIndexOrThrow(MediaStore.Video.Media.ARTIST));
                    String displayName = cursor
                            .getString(cursor
                                    .getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME));
                    String mimeType = cursor
                            .getString(cursor
                                    .getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE));
                    String path = cursor
                            .getString(cursor
                                    .getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
                    long duration = cursor
                            .getInt(cursor
                                    .getColumnIndexOrThrow(MediaStore.Video.Media.DURATION));
                    long size = cursor
                            .getLong(cursor
                                    .getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
                    Video video = new Video(id, title, album, artist, displayName, mimeType, path, size, duration);
                    list.add(video);
                }
                cursor.close();
            }
        }
        return list;
    }

}

最后在主类中使用如下代码来获取最终得到的视频相关信息集合

AbstructProvider provider = new VideoProvider(this);
List<Video>  listVideos = provider.getList();

在上面的listVideos包含了本地所有的视频的相关信息,下一章将会用到listVideos数据。

linux
【内容导航】
第1页:搜索本地视频(1) 第2页:搜索本地视频(2)
第3页:NDK编译FFmpeg 第4页:ffmpeg解码视频文件中的音频(1)
第5页:ffmpeg解码视频文件中的音频(2) 第6页:SDL编译
本文评论   查看全部评论 (1)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 小火种会员 发表于 2015/4/30 14:48:51
小白表示好难