我尝试按照here所述创建视频缩略图。 我还阅读了参考文献here。
在我的应用中,我首先让用户选择一个视频:
startActivityForResult(new Intent(Intent.ACTION_GET_CONTENT).setType("video/*"), ACTIVITY_PICKVIDEO);
然后我用以下内容确定视频ID:
fileID = Integer.parseInt(contentUri.getLastPathSegment());
因此,视频content://media/external/video/media/5
的ID为5。
然后我尝试用缩略图位图:
ContentResolver crThumb = getContentResolver();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, fileID, MediaStore.Video.Thumbnails.MICRO_KIND, options);
没有抛出异常,但位图的宽度和高度为-1。
我不确定getThubnail()
中所需的ID是否实际上是我上面确定的ID。
如果您有内容Uri,有没有人知道如何获取缩略图位图的工作示例?
有趣的是(可能是这样)当我尝试使用MediaStore.Video.Thumbnails.MINI_KIND
作为缩略图尺寸时,我会为空,当我尝试使用IllegalArgumentException ("Unsupported kind: 2")
时,我会FULL_SCREEN_KIND
。
我正在使用Android 2.1的摩托罗拉里程碑。
修改 我也尝试通过查询BaseColumns._ID来获取ID,但结果与Uri相同(在给定的示例中,_ID为5)。
答案 0 :(得分:10)
获取视频ID尝试此
String[] proj = {
MediaStore.Video.Media._ID,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.DATA
};
Cursor cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
proj, MediaStore.Video.Media.DISPLAY_NAME+"=?",new String[] {"name.mp4"}, null);
cursor.moveToFirst()
fileid = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media._ID));
获取缩略图:
ContentResolver crThumb = getContentResolver();
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb,fileid, MediaStore.Video.Thumbnails.MICRO_KIND, options);
iv2.setImageBitmap(curThumb);
这里iv2是imageview,name.mp4将代表你的文件名