2012-07-31 133 views
2

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

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

请发布完整的logcat。 – Sam 2012-07-31 21:46:44

回答

6

你试图从哪里读取文件?这有可能是你正在寻找在/ SD卡/地区,以及您的应用程序不必read_external_storage

如果是这样的情况下,只要确保你添加以下行的能力您的清单

<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."); 
+0

路径是“/storage/sdcard0/Music/song.mp3”。这是内存,虽然它似乎被标记为SD卡。我将其添加到清单中,但仍然没有运气。 – gmaster 2012-07-31 21:58:33

+0

查看更新的答案 – RyanInBinary 2012-07-31 22:03:55

+0

FileInputStream的工作,非常感谢。 – gmaster 2012-08-01 14:12:31