Java 如何使用SetDataSource从名称中有空格的MP3文件中获取唱片集艺术

Java 如何使用SetDataSource从名称中有空格的MP3文件中获取唱片集艺术,java,android,android-mediaplayer,albumart,mediametadataretriever,Java,Android,Android Mediaplayer,Albumart,Mediametadataretriever,每当我运行代码时,它对一首名字中没有空格的歌曲都很好 检查这行代码:metaRetriver.setDataSource(“/storage/emulated/0/song.mp3”)这是一个没有空间的MP3文件(song.MP3) 但每当我更改名称中有空格的歌曲时,它就会在这一行上抛出IllegalArgumentExceptionmetaRetriver.setDataSource(“/storage/emulated/0/Bom Diggy Diggy.mp3”) 当然,我不能重命名每个文

每当我运行代码时,它对一首名字中没有空格的歌曲都很好

检查这行代码:
metaRetriver.setDataSource(“/storage/emulated/0/song.mp3”)这是一个没有空间的MP3文件(song.MP3)

但每当我更改名称中有空格的歌曲时,它就会在这一行上抛出
IllegalArgumentException
metaRetriver.setDataSource(“/storage/emulated/0/Bom Diggy Diggy.mp3”)

当然,我不能重命名每个文件来删除其中的空格

这是我的密码

public class MainActivity extends AppCompatActivity {

MediaMetadataRetriever metaRetriver;
byte[] art;
ImageView album_art;

Bitmap songImage;

String thePath;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getInit();

    metaRetriver = new MediaMetadataRetriever();
    metaRetriver.setDataSource("/storage/emulated/0/"+ URLEncoder.encode("Bom Diggy Diggy.mp3"));


    art = metaRetriver.getEmbeddedPicture();

    if (art != null) {
        songImage = BitmapFactory
                .decodeByteArray(art, 0, art.length);
        album_art.setImageBitmap(songImage);
    } else {
        String error = "art is null";
        Log.i("lolol", error);
    }

    }

    public void getInit () {

        album_art = (ImageView) findViewById(R.id.album_art);

    }
}`

有人能帮我解决这个问题吗

你可以使用Glide library从音频文件中获取唱片集艺术。通过创建AudioModule。

我不想使用Glide-有没有其他方法可以解决这个问题?@yosana你试过
mediaMetadataRetriever.setDataSource(context,uri)?我尝试过这个,但它对我不起作用。您能告诉我如何获取uri和上下文吗?使用此链接使用glide加载位图您是否尝试过像这样转义空格:
metaRetriver.setDataSource(“/storage/emulated/0/Bom\\Diggy\\Diggy.mp3”)