无法在Android 2.0+中获得视频缩略图

时间:2010-07-18 19:34:51

标签: android video bitmap thumbnails

我尝试按照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)。

1 个答案:

答案 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将代表你的文件名