android系统媒体库开发之视频
2016-01-26 13:54
267 查看
Android系统为我们建立起多媒体数据库之后,便把多媒体常用的信息,比如歌曲名、文件大小、播放时长、专辑、歌手等常用信息保存在了数据库里,那我们可以直接用多媒体库中的数据,完成这个需求。虽然我们需要用多媒体库,但是我们不能直接操作。Android为这些常用的需要共享的数据(多媒体和联系人等),创建了ContentProvider,因此,如果我们想获取到这些信息,我们就需要用ContentProvider。
bean:
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"; } } }
相关文章推荐
- Android方法数
- android 获取全局上下文
- Android 4.4 根据uri获取路径的方法
- android 几个进程概念
- android系统媒体库开发之图片
- Android 从相册中选择照片
- Android 调用摄像头拍照
- android将文字复制到剪贴板
- root技术背后android手机内核提取及逆向分析
- 关于Android Studio里的Gradle,你所需要知道的都在这里了
- Android常用加密代码实现
- Android AIDL SERVICE 双向通信 详解
- Android中 overridePendTransition函数的使用方法
- 王学岗Viewpager(一)
- 快速简单的定制一个时间轴布局(LinearLayout)
- android怪招之开机自启动
- Android-Cannot merge new index 66195 into a non-jumbo instruction的解决办法
- Android应用自动更新功能的代码实现
- Android中使用抖动动画吸引来用户注意
- Android应用安全开发之源码安全