MediaStore.Video.Thumbnails.getThumbnail获取本地视频缩略图
来源:互联网 发布:无效的json字符串 编辑:程序博客网 时间:2024/05/09 01:18
原理:通过 CursorLoader读取本地媒体数据库
一 解决录制视频后 读取媒体 数据库时,没有最新录制数据的问题
办法:通知媒体数据库更新:
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri contentUri = Uri.fromFile(file); mediaScanIntent.setData(contentUri); context.sendBroadcast(mediaScanIntent);
注意:当文件夹里含有 .nomedia 文件是 自带文件管理器是读不到媒体数据的
二 利用CursorLoader读取媒体数据库private static final Uri QUERY_URI = MediaStore.Files.getContentUri("external"); private static final String ORDER_BY = MediaStore.Files.FileColumns._ID + " DESC";
读取数据库的字段:
// 媒体文件数据库字段 private static final String[] PROJECTION = { MediaStore.Files.FileColumns._ID, MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.MIME_TYPE, MediaStore.MediaColumns.WIDTH, MediaStore.MediaColumns.HEIGHT, DURATION};// 只获取视频 String video_condition = getSelectionArgsForSingleMediaCondition(getDurationCondition(0, 0)); String[] MEDIA_TYPE_VIDEO = getSelectionArgsForSingleMediaType( MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO); cursorLoader = new CursorLoader( activity, QUERY_URI, PROJECTION, video_condition, MEDIA_TYPE_VIDEO, ORDER_BY);读完数据库后 拿到 cursor
获取媒体库的id
int media_id = data.getInt(data.getColumnIndexOrThrow(PROJECTION[0]));通过id 可以获取对应的视频缩略图Bitmap bitmap = MediaStore.Video.Thumbnails.getThumbnail(context.getContentResolver(), media_id, MediaStore.Video.Thumbnails.MINI_KIND, null);这是个耗时操作 ,,如果在recycle里展示 切记在viewholder里开异步加载流畅MediaStore.Video.Thumbnails.MINI_KIND 清晰度高于MediaStore.Video.Thumbnails.MICRO_KIND三recycler里展示本地视频时,,通过读取媒体库缩略图展示
解决滑动的时候viewholder复用 滑动出去一异步还加载的问题:
重写 view回收方法 获取回收的viewHolder 回收时 停止异步任务
@Override public void onViewRecycled(RecyclerView.ViewHolder holder) { super.onViewRecycled(holder); ViewHolder contentHolder = (ViewHolder) holder; ImageAsyncTask asyncTask = (ImageAsyncTask) contentHolder.contentView.getTag(); if (null != asyncTask) { asyncTask.cancel(true); } }
四源码
阅读全文
0 0
- MediaStore.Video.Thumbnails.getThumbnail获取本地视频缩略图
- 获取图片和视频缩略图Thumbnails ThumbnailUtils
- 获取本地视频缩略图
- android获取手机上的图片和视频缩略图thumbnails
- ios获取本地视频缩略图
- [iOS] 获取本地视频缩略图
- 获取本地视频缩略图方法
- android 视频缩略图之 MediaStore
- android 视频缩略图之 MediaStore
- android 视频缩略图之 MediaStore
- android 视频缩略图之 MediaStore
- Android之获取手机上的图片和视频缩略图thumbnails
- video thumbnails
- 缩略图Thumbnails
- 缩略图Thumbnails
- iOS 获取本地视频的缩略图
- iOS 获取本地视频的缩略图
- Android获取本地图片、视频缩略图
- ACM括号配对问题
- Excel在统计分析中的应用—第八章—假设检验-总体方差未知且为大样本下的检验
- javawebday25(编码方式 获取资源路径)
- 图形学扫描线填充算法
- Winform异步等待控件简单实现
- MediaStore.Video.Thumbnails.getThumbnail获取本地视频缩略图
- 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
- SVN| SVN常用命令
- 递归函数+python中的汉诺塔递归算法
- hduoj 6000 && 2016CCPC-final B. Wash(贪心)
- python 文件读写时用open还是codecs.open
- ACM街区最短路径问题
- 现代操作系统之进程与线程(下)
- PAT继续(3n+1)猜想