获取MP3的标题会引发" java.lang.IllegalArgumentException"

时间:2016-08-01 14:42:50

标签: java android mp3 media-player mediametadataretriever

为什么此代码会抛出IllegalArgumentException? 我想要显示一个位于" raw"的MP3文件的标题。夹

mediaPlayer = MediaPlayer.create(getActivity(), R.raw.willy_william_ego);
            MediaMetadataRetriever mmr = new MediaMetadataRetriever();
            Uri uri = (Uri) Uri.fromFile(new File("android.resource://com.hthl.kellergassen_app/raw/willy_william_ego"));
            mmr.setDataSource(getActivity(), uri);
            String title = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);

1 个答案:

答案 0 :(得分:1)

假设您在setDataSource中遇到问题,那将是因为您传入的URI由于某种原因无效 - 很可能是因为无法找到该文件。你确定它与该名称一起出现并且没有文件扩展名吗?

来自Javadoc ......

void setDataSource(Context context,Uri uri)

将数据源设置为内容Uri。在此类的其余方法之前调用此方法。这种方法可能很耗时。

参数 context Context:解析Uri时使用的Context uri Uri:您要播放的数据的内容URI

<强>抛出 如果Uri无效,则为IllegalArgumentException SecurityException如果由于缺少权限而无法使用Uri。

更新 - 看过您的代码后,您似乎正在使用硬编码的字符串com.hthl.kellergassen_app作为包名称,但这是不对的。根据stacktrace它是com.htlhl.kellergassen_app - 注意“htlhl”中的额外“l”(这是用于创建URI的String)。