【问题标题】:How to use MediaMetadataRetriever SetDataSource for file in external storage如何将 MediaMetadataRetriever SetDataSource 用于外部存储中的文件
【发布时间】:2018-10-31 01:30:22
【问题描述】:

我正在尝试从 MP3 文件中提取专辑封面但我无法提供歌曲的正确位置,我可以将其提供给 SetDataSource 方法。我尝试了一切,但仍然给我错误IllegalArgumentException

这一切都发生在metaRetriver.setDataSource(MainActivity.this, Uri.parse("/sdcard/song.mp3"));这一行被执行时

我的代码。

public class MainActivity extends AppCompatActivity {

MediaMetadataRetriever metaRetriver;
byte[] art;
ImageView album_art;

Bitmap songImage;

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

    getInit();

    metaRetriver = new MediaMetadataRetriever();
    metaRetriver.setDataSource(MainActivity.this, Uri.parse("/sdcard/song.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);

}
}

谁能解决这个问题。

【问题讨论】:

    标签: java android android-mediaplayer albumart mediametadataretriever


    【解决方案1】:

    来自Android Documentation

    如果 Uri 无效,则抛出 IllegalArgumentException

    仔细检查 song.mp3 文件是否在正确的位置,并且该应用有权查看它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 2020-06-05
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 2015-03-10
      相关资源
      最近更新 更多