Android 访问用于创建自定义库的图像和视频缩略图

Android 访问用于创建自定义库的图像和视频缩略图,android,android-cursorloader,android-loadermanager,video-thumbnails,Android,Android Cursorloader,Android Loadermanager,Video Thumbnails,我想创建一个像Instagram中使用的自定义图库。我需要获取所有图像和视频,并在回收视图中显示它们。如果用户单击图像缩略图,该图像将显示在页面顶部,如果用户单击视频缩略图,该视频将在页面顶部播放。我在片段中使用LoaderManager,用一个光标获取所有图像和视频,如前所述 下面是我的片段代码 @NonNull @Override public Loader<Cursor> onCreateLoader(int id, @Nullable Bundle args) {

我想创建一个像Instagram中使用的自定义图库。我需要获取所有图像和视频,并在回收视图中显示它们。如果用户单击图像缩略图,该图像将显示在页面顶部,如果用户单击视频缩略图,该视频将在页面顶部播放。我在片段中使用LoaderManager,用一个光标获取所有图像和视频,如前所述

下面是我的片段代码

   @NonNull
@Override
public Loader<Cursor> onCreateLoader(int id, @Nullable Bundle args) {
    String[] projection = {
            MediaStore.Files.FileColumns._ID,
            MediaStore.Files.FileColumns.DATA,
            MediaStore.Files.FileColumns.DATE_ADDED,
            MediaStore.Files.FileColumns.MEDIA_TYPE,
            MediaStore.Files.FileColumns.MIME_TYPE,
            MediaStore.Files.FileColumns.TITLE
    };

    String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
            + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE
            + " OR "
            + MediaStore.Files.FileColumns.MEDIA_TYPE + "="
            + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO;

    Uri queryUri = MediaStore.Files.getContentUri("external");

    CursorLoader cursorLoader = new CursorLoader(
            getContext(),
            queryUri,
            projection,
            selection,
            null, // Selection args (none).
            MediaStore.Files.FileColumns.DATE_ADDED + " DESC" // Sort order.
    );


    return cursorLoader;
}

@Override
public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor data) {

    recyclerView.setAdapter(new GalleryAdapter(getContext(), data, this));
}
@NonNull
@凌驾
公共加载器onCreateLoader(int-id,@Nullable Bundle args){
字符串[]投影={
MediaStore.Files.FileColumns.\u ID,
MediaStore.Files.FileColumns.DATA,
添加了MediaStore.Files.FileColumns.DATE\u,
MediaStore.Files.FileColumns.MEDIA\u类型,
MediaStore.Files.FileColumns.MIME_类型,
MediaStore.Files.FileColumns.TITLE
};
字符串选择=MediaStore.Files.FileColumns.MEDIA\u TYPE+“=”
+MediaStore.Files.FileColumns.MEDIA\u类型\u图像
+“或”
+MediaStore.Files.FileColumns.MEDIA_TYPE+“=”
+MediaStore.Files.FileColumns.MEDIA\u TYPE\u视频;
Uri queryUri=MediaStore.Files.getContentUri(“外部”);
游标装入器游标装入器=新游标装入器(
getContext(),
奎鲁里,
投影,
选择,
null,//选择参数(无)。
MediaStore.Files.FileColumns.DATE\添加了+“DESC”//排序顺序。
);
返回游标装入器;
}
@凌驾
public void onLoadFinished(@NonNull Loader,游标数据){
setAdapter(新的GalleryAdapter(getContext(),data,this));
}

我的问题是,我需要的是图像和视频的缩略图,而不是原始的缩略图。我如何才能做到这一点?

您可以获取这样的视频缩略图

Bitmap bitmap = ThumbnailUtils.createVideoThumbnail("file_path",
                MediaStore.Video.Thumbnails.MINI_KIND);