为什么这段代码会抛出 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);
最佳答案
假设您在 setDataSource 中遇到问题,这是因为您传入的 URI 由于某种原因无效 - 很可能是因为找不到该文件。您确定它以该名称存在并且没有文件扩展名吗?
来自 Javadoc...
void setDataSource(上下文上下文,Uri uri)
将数据源设置为内容 Uri。在此类中的其余方法之前调用此方法。此方法可能比较耗时。
参数 context Context:解析 Uri 时使用的上下文 uri Uri:要播放的数据的Content URI
抛出 如果 Uri 无效,则出现 IllegalArgumentException 如果由于缺乏权限而无法使用 Uri,则会出现 SecurityException。
更新 - 查看您的代码后,您似乎正在使用硬编码字符串 com.hthl.kellergassen_app
作为包名称,但这是不正确的。根据堆栈跟踪,它是 com.htlhl.kellergassen_app
- 请注意“htlhl”中的额外“l”(位于您用于创建 URI 的字符串中)。
关于java - 获取 MP3 的标题会抛出 "java.lang.IllegalArgumentException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38701740/