我正在编写一个程序,我需要在其中播放存储中的歌曲。我为此设置了一个 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/