您的位置:首页 > 移动开发 > Android开发

android系统媒体库开发之视频

2016-01-26 13:54 267 查看
Android系统为我们建立起多媒体数据库之后,便把多媒体常用的信息,比如歌曲名、文件大小、播放时长、专辑、歌手等常用信息保存在了数据库里,那我们可以直接用多媒体库中的数据,完成这个需求。虽然我们需要用多媒体库,但是我们不能直接操作。Android为这些常用的需要共享的数据(多媒体和联系人等),创建了ContentProvider,因此,如果我们想获取到这些信息,我们就需要用ContentProvider。

bean:

public class Video extends FtpBaseBean 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 locPath;
private String size;
private String duration;
private Bitmap image;
public boolean isChecked = false;//是否被选中
private String remotePath = "/video/";

public boolean isChecked() {
return isChecked;
}

public void setIsChecked(boolean isChecked) {
this.isChecked = isChecked;
}

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

/**
* @param id
* @param title
* @param album
* @param artist
* @param displayName
* @param mimeType
* @param size
* @param duration
*/
public Video(int id, String title, String album, String artist,
String displayName, String mimeType, String locPath, String size,
String duration) {
super();
this.id = id;
this.title = title;
this.album = album;
this.artist = artist;
this.displayName = displayName;
this.mimeType = mimeType;
this.locPath = locPath;
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 getSize() {
return size;
}

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

public String getDuration() {
return duration;
}

public void setDuration(String duration) {
this.duration = duration;
}

public Bitmap getImage(){
return image;
}

public void setImage(Bitmap image){
this.image = image;
}

@Override
public String toString() {
return "Video{" +
"id=" + id +
", title='" + title + '\'' +
", album='" + album + '\'' +
", artist='" + artist + '\'' +
", displayName='" + displayName + '\'' +
", mimeType='" + mimeType + '\'' +
", path='" + locPath + '\'' +
", size=" + size +
", duration=" + duration +
", image=" + image +
'}';
}

public String getFileName() {
return fileName;
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public String getRemotePath() {
return remotePath;
}

public void setRemotePath(String remotePath) {
this.remotePath = remotePath;
}

public String getLocPath() {
return locPath;
}

public void setLocPath(String locPath) {
this.locPath = locPath;
}

public int getState() {
return state;
}

public void setState(int state) {
this.state = state;
}

public long getProgress() {
return progress;
}

public void setProgress(long progress) {
this.progress = progress;
}

public long getMax() {
return max;
}

public void setMax(long max) {
this.max = max;
}
}
util:

public class VideoUtils {
private Context context;

public VideoUtils(Context context) {
this.context = context;
}

public static ArrayList<Video> getVideos() {
ArrayList<Video> datas = null;
Cursor cursor = UIUtils.getContext().getContentResolver().query(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null,
null, null);
if (cursor != null) {
datas = new ArrayList<Video>();
int i = 0;
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));//显示的名字    架子鼓cobus01.flv
String mimeType = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE));//    video/flv   、   video/mp4
String path = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));//路径   /storage/emulated/0/新建文件夹/架子鼓cobus01.flv
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, getMusicSize(size), getMusicTime(duration));
datas.add(video);
i++;
}
cursor.close();
}
return datas;
}

/**
* 获取视频播放时长,需要转换
*
* @return
*/
private static String getMusicTime(long duration) {
if (duration == 0) {
return "00:00";
} else {
int musicTime = (int) (duration / 1000);
return musicTime / 60 + ":" + musicTime % 60;
}
}

/**
* 获取视频播放大小,需要转换
*
* @return
*/
private static String getMusicSize(long size) {
if (size == 0) {
return "0.00M";
}else{
return (size / 1024f / 1024f + "").substring(0, 4) + "M";
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: