【问题标题】:Android Album Art from MediaStore (and Picasso)来自 MediaStore(和毕加索)的 Android 专辑封面
【发布时间】:2015-02-06 01:50:33
【问题描述】:

尝试为 MediaStore 中的每个专辑检索专辑封面的路径。我正在像这样检索我的光标:

String[] projection = new String[] {MediaStore.Audio.Albums._ID,
                                    MediaStore.Audio.Albums.ALBUM_ART,
                                    MediaStore.Audio.Albums.ALBUM,
                                    MediaStore.Audio.Albums.ARTIST};

// Returns a new CursorLoader
return new CursorLoader(getActivity(),
                        MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                        projection,
                        null,
                        null,
                        MediaStore.Audio.Albums.ALBUM + " ASC");

返回一个有效的光标,其中包含所有唯一专辑及其各自的艺术家、专辑名称、ID 和专辑艺术路径。但是,我不知道如何使用专辑封面路径。这是我从ALBUM_ART 列获得的路径示例:

/storage/emulated/0/Android/data/com.android.providers.media/albumthumbs/1420524553603

我正在尝试将此传递给毕加索,但它会引发错误。以下是我的做法:

Picasso.with(mContext).load(Uri.parseUri(albumArtPath)).into(imageView);

albumArtPath 是我从光标处得到的路径(见上文)。我最终得到一个空白的 ImageView,所以基本上什么都没有加载。如何让 Picasso 使用 Mediastore 专辑封面路径?

【问题讨论】:

    标签: android android-contentprovider picasso mediastore albumart


    【解决方案1】:

    这是一个文件路径,而不是一个 URI。

    以下任何一种都可以:

    Picasso.with(mContext).load(new File(albumArtPath)).into(imageView);
    Picasso.with(mContext).load(Uri.parse("file://" + albumArtPath)).into(imageView);
    Picasso.with(mContext).load(Uri.fromFile(new File(albumArtPath))).into(imageView);
    

    【讨论】:

    • 您能否在您的帖子中添加一些解释,说明为什么这应该解决 OP 的问题?谢谢!
    • 呃,因为那是文件路径,而不是 URI。我什至不确定Uri.parseUri 是什么。这显然不是 Uri 类的任何标准实现。另一种解决方案是:Picasso.with(this).load(Uri.parse("file://" + albumArtPath)).into(imageView);
    • 完美,谢谢! :) 介意edit你的答案吗?
    • 完美。添加new File(albumArtPath) 为我修复了它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多