如何使用SetDataSource从名称中包含空格的MP3文件中获取专辑封面

时间:2018-05-22 11:28:32

标签: java android android-mediaplayer albumart mediametadataretriever

每当我运行代码时,它对于一个没有空格的歌曲

就可以正常工作

检查以下代码行:metaRetriver.setDataSource("/storage/emulated/0/song.mp3");这里是一个没有空格的MP3文件(song.mp3)

但每当我更改名称中包含空格的歌曲时,它会在此行IllegalArgumentException

上抛出metaRetriver.setDataSource("/storage/emulated/0/Bom Diggy Diggy.mp3");

Ofcource我无法重命名每个文件以删除其中的空格。

这是我的代码,

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);

    }
}`

任何人都可以帮助我解决这个问题

1 个答案:

答案 0 :(得分:0)

您可以使用Glide库从音频文件中获取专辑封面。通过创建AudioModule。