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