Android 我怎样才能从图库中获取视频文件的缩略图

标签 android video uri thumbnails android-gallery

我需要在我的 ListView 中显示从图库中选择的视频文件。 我已成功获取视频文件的 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;
    }

关于Android 我怎样才能从图库中获取视频文件的缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32044061/

相关文章:

video - 不使用 DirectShow 作为 Windows 的 CUDA 视频处理管道的基础是不是很愚蠢?

android - Angularjs 抛出 "Unexpected strict mode reserved word"导致应用程序崩溃

android - 安卓kill一个app,一个功能能不能中途停止?

android - Cordova 应用程序未在 Android 上调用 API - net::ERR_CONNECTION_REFUSED

video - 如何使用 Android 应用程序的意图上传 WhatsApp 状态?

python - 什么是处理视频文件帧的好 Python 库?

RESTful 重置密码和确认电子邮件

android - 从安卓手机获取所有短信

android - 如何在安卓上通过 ssl (https) 下载文件

Java URLDecoder 特殊字符和 UTF-8