MediaPlayer无法播放程序数据文件夹中的音频文件?

时间:2010-09-22 20:17:26

标签: android

当我从MIC录制音频并将文件存储在/ data / data /中时为什么 MediaPlayer无法播放此文件?如果我将目的地改为/ sdcard / ..... - 一切都很棒。我做错了什么?我没找到 MediaPlayer的限制。设备 - 三星T959(Galaxy S) 谢谢,我希望有人知道解决方案......

5 个答案:

答案 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,我认为它正在发生。

您可以通过以下方式播放此文件:

  • 将其复制到临时目录并播放;
  • 将其复制到临时目录并播放;
  • 将其复制到SD卡;
  • 完全阅读内存并尝试通过流播放。