Android本地视频播放器开发-搜索本地视频1
目录
Android本地视频播放器开发–搜索本地视频(1)
这一章的主要内容是搜索手机本地视频,添加到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;
```java
}
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数据。