java - 获取 MP3 的标题会抛出 "java.lang.IllegalArgumentException"

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

最佳答案

假设您在 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/

相关文章:

java - 禁用编辑文本时 OnClickListener 不工作

java - 用逗号和 "and"在 Java 中加入 List<String>

java - 如何在android上的服务中显示对话框

android wifi状态随广播接收器改变

c++ - MP3 帧头检测 FFF/FFE 同步问题

java - 如何使用 selenium webdriver 获取标签字段的颜色?

java - Java 和 PHP 应用程序的 GC 和内存行为?

java - Android:切换到 fragment 内的新 fragment ?

Java启动、停止和恢复线程

tags - eyed3 和 eyeD3 有什么区别,我如何使用 python 编辑 mp3 标签