这一章的主要内容是搜索手机本地视频,添加到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来搜索视频的相关信息
- <pre class="java" name="code">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数据。