java - Android 媒体播放器 IOException

标签 java android android-mediaplayer

我正在编写一个程序,我需要在其中播放存储中的歌曲。我为此设置了一个 MediaPlayer(下面的代码 fragment ),但一直收到 java.io.IOException: Prepare failed.: status=0x1。一些网站表示可能会出现此错误,因为我尝试读取的文件不是世界可读的。如果这是真的,我怎么能改变程序的文件权限,绕过这个,或者其他一些解决方案。如果没有,请帮我弄清楚这有什么问题。提前致谢。

MediaPlayer player = new MediaPlayer();
player.reset();
player.setDataSource(selectedFilePath);
player.prepare();
player.start();

最佳答案

您试图从哪里读取文件?有可能您正在查看/sdcard/区域,而您的应用程序没有读取外部存储的能力

如果是这种情况,只需确保将以下行添加到您的 list

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

[编辑] 我不确定您要从哪里加载,但使用描述符而不是路径可能会有所帮助。看看这是否有帮助:

FileInputStream fis = new FileInputStream(locationOfFile);
mediaPlayer.setDataSource(fis.getFD());

如果这仍然没有帮助,我建议您尝试另一个文件名以确保您的媒体播放器设置正确。或者你可以做类似的事情

File thisFile = new File("/storage/sdcard0/Music/song.mp3");
if (thisFile.exists())
   Log.v("file", "Exists");
else
   Log.v("file", "Could not be located.");

关于java - Android 媒体播放器 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749437/

相关文章:

android - 在运行时更改 VideoView 的大小

java - Grails Spring 安全认证提供程序和自定义过滤器

java - 如何从 HttpServletRequest 获取客户端在 java 中的时区?

Java 随机 ListArray 上的冒泡排序

android - x 秒后启用警报对话框 "ok"按钮

java - 从 Java 调用 Kotlin(找不到符号)

java - 如何用对象手动填充数组?

android - 如何在与任何 PC 分开的手机上记录我的 Android 应用程序的 Activity ?

java - 如何使用 Android 动画播放 'Tick Tick' 声音(可能使用 `Android MediaPlayer/SoundPool` )?

android - Audiomanager.abandonAudioFocus 不恢复播放