为什么此代码会抛出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);
答案 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)。