Как вставить собственное миниатюрное изображение для видео в Android? - PullRequest
0 голосов
/ 31 октября 2019

Предположим, у меня есть File для моего локального видео, File для моего эскиза, сгенерированного из моего локального видео. Мне удалось вставить видео в базу данных моего альбома, кроме того, я хочу вставить миниатюру, используя мою, а не ту, которая была сгенерирована из системы Android.

После некоторого поиска многие разработчики используют MediaStore.Video.Thumbnails.getThumbnail для извлечения миниатюры из системы, но не для ее настройки. Так как же я могу вставить свое миниатюру в базу данных Thumbnails?

Я попробовал код ниже, но не смог:

public static void saveVideo2SystemMedia(Context context, File videoFile, File videoThumbFile) {
    ContentValues values = new ContentValues(3);
    values.put(MediaStore.Video.Media.TITLE, videoFile.getPath());
    values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");
    values.put(MediaStore.Video.Media.DATA, videoFile.getAbsolutePath());
    Uri rst = context.getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);

    if (rst != null) {
        long id = ContentUris.parseId(rst);
        ContentValues cv = new ContentValues();
        cv.put(MediaStore.Video.Thumbnails.DATA, videoThumbFile.getAbsolutePath());
        cv.put(MediaStore.Video.Thumbnails.VIDEO_ID, id);
        BitmapFactory.Options opts = new BitmapFactory.Options();
        opts.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(videoThumbFile.getAbsolutePath(), opts);
        cv.put(MediaStore.Video.Thumbnails.WIDTH, opts.outWidth);
        cv.put(MediaStore.Video.Thumbnails.HEIGHT, opts.outHeight);
        cv.put(MediaStore.Video.Thumbnails.KIND, MediaStore.Video.Thumbnails.MICRO_KIND);
        Uri thumbRst = context.getContentResolver()
            .insert(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, values); 
        // thumbRst is always null
    }
}

Используя код выше, я могу видеть мое видео в системной галерее, но не покрываю сгенерированным эскизом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...