Android本地视频播放器开发--搜索本地视频(1)

来源:互联网 发布:怎么知道打印机的端口 编辑:程序博客网 时间:2024/05/17 06:24

   这一章的主要内容是搜索手机本地视频,添加到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;
       }        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数据。

	
				
		
原创粉丝点击