【问题标题】:How does one load .gif images from the Android Mediastore如何从 Android Mediastore 加载 .gif 图像
【发布时间】:2016-08-29 17:38:46
【问题描述】:

我需要将几个 gif 加载到自定义画廊视图中。 使用 mediastore 只为我提供 png/jpg 图像类型。 经过几个小时的谷歌搜索,我仍然找不到答案..

我用来从媒体存储加载图像的代码是:

    final String sortOrder = mPreferences.getSortMode();

    final Uri uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

    String[] projection = { MediaStore.MediaColumns.DATA,
            MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.DISPLAY_NAME };

    final Cursor cursor = mContext.getContentResolver().query(uri, projection, null,
            null, sortOrder);

谢谢!

【问题讨论】:

    标签: android image gif mediastore


    【解决方案1】:

    Try This, It may help you.

    使用String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("gif");

    实例

    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
    

    来自这个答案。

    【讨论】:

    • 这有帮助,谢谢!
    【解决方案2】:

    这给出了完美的结果。

    private static final String[] COLUMNS_OF_INTEREST = new String[]
    {
            MediaStore.Video.Media._ID,
            MediaStore.Video.Media.DATA,
            MediaStore.Video.Media.DISPLAY_NAME,
            MediaStore.Video.Media.SIZE,
            MediaStore.Video.Media.WIDTH,
            MediaStore.Video.Media.HEIGHT,
            MediaStore.Video.Media.DATE_ADDED
    };
    
    public void printGifUri(Context context)
    {
        ContentResolver cr = context.getContentResolver();
    
        String selection = MediaStore.Images.Media.MIME_TYPE + "=?";
        String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("gif");
        String[] selectionArgsPdf = new String[]{ mimeType };
    
        Cursor gifCursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, COLUMNS_OF_INTEREST, selection,selectionArgsPdf,
                MediaStore.Images.Media.DATE_ADDED + " DESC");
    
        gifCursor.moveToFirst();
        int columnIndexUri = gifCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
        for (int i = 0; i < gifCursor.getCount(); i++)
            Log.d("gif file uri -> ", gifCursor.getString(columnIndexUri));
    }
    

    我更喜欢使用 Android LoaderManager.LoaderCallbacks,因为这会在后台加载光标,完成后我们会得到结果。

    public class GifListManagerImpl implements LoaderManager.LoaderCallbacks<Cursor> {
    
    Context mContext;
    
    private static final String[] COLUMNS_OF_INTEREST = new String[]
    {
            MediaStore.Video.Media._ID,
            MediaStore.Video.Media.DATA,
            MediaStore.Video.Media.DISPLAY_NAME,
            MediaStore.Video.Media.SIZE,
            MediaStore.Video.Media.WIDTH,
            MediaStore.Video.Media.HEIGHT,
            MediaStore.Video.Media.DATE_ADDED
    };
    
    public  GifListManagerImpl(Context context)
    {
        mContext = context;
    }
    
    @Override
    public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
    
        String selection = MediaStore.Images.Media.MIME_TYPE + "=?";
        String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("gif");
        String[] selectionArgsPdf = new String[]{ mimeType };
        return new CursorLoader(mContext, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, COLUMNS_OF_INTEREST, selection,selectionArgsPdf,
                MediaStore.Images.Media.DATE_ADDED + " DESC");
    }
    
    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
        cursor.moveToFirst();
        int columnIndexUri = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
        for (int i = 0; i < cursor.getCount(); i++)
            Log.d("gif file uri -> ", cursor.getString(columnIndexUri));
    
    }
    
    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
    
    }
    

    【讨论】:

      【解决方案3】:

      确保包含您的 gif 文件的目录已被媒体存储扫描,以便通过内容提供商检索其内容。

      查看此链接了解更多信息: http://www.grokkingandroid.com/adding-files-to-androids-media-library-using-the-mediascanner/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-24
        • 1970-01-01
        • 2015-06-26
        相关资源
        最近更新 更多