Не удается получить миниатюру видео в Android 2.0+ - PullRequest
0 голосов
/ 18 июля 2010

Я попытался создать миниатюру видео, как описано здесь . Я также прочитал ссылку здесь .

В моем приложении я сначала позволил пользователю выбрать видео с:

startActivityForResult(new Intent(Intent.ACTION_GET_CONTENT).setType("video/*"), ACTIVITY_PICKVIDEO);

Затем я определяю идентификатор видео с помощью:

fileID = Integer.parseInt(contentUri.getLastPathSegment());

Итак, видео content://media/external/video/media/5 будет иметь идентификатор 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(), является идентификатором, который я определил выше.

Кто-нибудь знает рабочий пример, как получить растровое изображение, если у вас есть содержимое Uri?

Интересно (может быть и так) Я получаю нулевое значение при попытке использовать MediaStore.Video.Thumbnails.MINI_KIND в качестве размера миниатюры и IllegalArgumentException ("Unsupported kind: 2") при попытке FULL_SCREEN_KIND.

Я использую Motorola Milestone с Android 2.1.

EDIT: Я также попытался получить идентификатор с помощью запроса BaseColumns._ID, но он оказался таким же, как в Uri (в данном примере _ID равен 5).

1 Ответ

10 голосов
/ 25 февраля 2011

для получения идентификатора видео попробуйте

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 будет представлять имя вашего файла

...