当我从MIC录制音频并将文件存储在/ data / data /中时为什么 MediaPlayer无法播放此文件?如果我将目的地改为/ sdcard / ..... - 一切都很棒。我做错了什么?我没找到 MediaPlayer的限制。设备 - 三星T959(Galaxy S) 谢谢,我希望有人知道解决方案......
答案 0 :(得分:8)
我有同样的问题......每当我使用带有文件路径的setDataSource时,它都行不通;不断获得IOException。
更改我的代码以使用setDataSource(FileDescriptor)确实有效...而且我不必将文件复制到SDCard或类似的东西。
因此,使用简单的File对象,创建一个新的FileInputStream并将实际的文件描述符作为数据源传递,如下所示:
setDataSource((new FileInputStream(myFileInstance)).getFD());
创建输入流将文件数据拉入内存,从而解决/数据/数据访问冲突。
答案 1 :(得分:3)
更好的做法是关闭流,如下所示:
FileInputStream stream = new FileInputStream(path);
mediaPlayer.setDataSource(stream.getFD());
stream.close();
在该方法的文件中注明:
android.media.MediaPlayer.setDataSource(FileDescriptor fd)
设置要使用的数据源(
FileDescriptor
)。这是来电者 负责关闭文件描述符。这样做是安全的 as 一旦此调用返回。
答案 2 :(得分:1)
使用MediaPlayer.setDataSource(FileDescriptor fd)
答案 3 :(得分:0)
尝试设置ContentValues并存储一些标准的元数据属性。然后使用ContentResolver将元数据和Uri设置为文件。
请参阅:http://developer.android.com/guide/topics/media/index.html
“示例:音频捕获设置和启动”,然后尝试将Uri base
更改为/ data / data / -filename。
答案 4 :(得分:0)
由于Android安全模型,MediaPlayer没有足够的权限。它可以访问SD卡,但无法访问其他没有权限的地方。
因此,setDataSource(...)可以抛出SecurityException,我认为它正在发生。