Android 如何从图库中获取视频文件的缩略图

2024-07-01

我需要在列表视图中显示从图库中选择的视频文件。 我已成功获取视频文件的 uri,但无法获取视频文件的缩略图。这是我用来从 uri 获取视频文件图像的代码,但会导致应用程序崩溃。还有其他方法来获取视频文件的图像吗?如果可以通过其他方式实现,请帮助我......

public static String getFileMetaData(Context context,String uri){
        Uri queryUri = Uri.parse(uri);
        // Get relevant columns for use later.
        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
        };
// Return only video and image metadata.
        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;

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

        Cursor cursor = cursorLoader.loadInBackground();
        int columnIndex = cursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA);

        Log.d("MyTag","***************** : " + cursor.getString(columnIndex));

        cursor.close();
        return null;
    }

通过一些更改修复了此问题。实际上我的问题是我给出的文件路径是错误的。我一直给出从画廊获得的Uri, 现在我已经更改了从 Uri 获取真实路径的代码并且 然后将它们应用到 ThumbnailUtils 来创建缩略图。

Uri uri = Uri.parse(uri);
String mUri = AppUtils.getRealPathFromURI(mActivity,uri,"VIDEO");
mImageSend.setImageBitmap(ThumbnailUtils.createVideoThumbnail(
                            mUri, MediaStore.Video.Thumbnails.FULL_SCREEN_KIND));


public static String getRealPathFromURI(Context context,Uri contentURI,String type) {

        String result  = null;
        try {
            Cursor cursor = context.getContentResolver().query(contentURI, null, null, null, null);
            if (cursor == null) { // Source is Dropbox or other similar local file path
                result = contentURI.getPath();
                Log.d("TAG", "result******************" + result);
            } else {
                cursor.moveToFirst();
                int idx = 0;
                if(type.equalsIgnoreCase("IMAGE")){
                    idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
                }else if(type.equalsIgnoreCase("VIDEO")){
                    idx = cursor.getColumnIndex(MediaStore.Video.VideoColumns.DATA);
                }else if(type.equalsIgnoreCase("AUDIO")){
                    idx = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DATA);
                }
                result = cursor.getString(idx);
                Log.d("TAG", "result*************else*****" + result);
                cursor.close();
            }
        } catch (Exception e){
            Log.e("TAG", "Exception ",e);
        }
        return result;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 如何从图库中获取视频文件的缩略图 的相关文章

随机推荐