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

当我录制我的audio从MIC和存储文件在/ data / data / …..为什么MediaPlayer无法播放此文件? 如果我改变目的地/ SD卡/ ….. – 所有的作品很好。 我做错了什么? 我没有发现MediaPlayer的限制。 设备 – 三星T959(Galaxy S)谢谢,我希望有人知道解决scheme….

Solutions Collecting From Web of "MediaPlayer无法播放程序数据文件夹中的audio文件?"

我有同样的问题…每当我用文件pathsetDataSource,它不会工作; 不断收到IOException。

改变我的代码使用setDataSource(FileDescriptor)确实工作…与此我不必将文件复制到SDCard或类似的东西。

因此,使用一个简单的File对象,创build一个新的FileInputStream并将实际的文件描述符作为数据源传递,如下所示:

setDataSource((new FileInputStream(myFileInstance)).getFD()); 

创buildinputstream将文件数据拉入内存,从而解决/数据/数据访问冲突。

更好的做法是closuresstream,如下所示:

 FileInputStream stream = new FileInputStream(path); mediaPlayer.setDataSource(stream.getFD()); stream.close(); 

在该方法的文档中注意到:

android.media.MediaPlayer.setDataSource(FileDescriptor fd)

设置要使用的数据源( FileDescriptor )。 closures文件描述符是调用者的责任。 这个电话一回来 ,这样做是安全的。

使用MediaPlayer.setDataSource(FileDescriptor fd)

尝试设置ContentValues并存储一些标准的元数据属性。 然后使用ContentResolver将元数据和Uri设置为文件。

请参阅: http : //developer.android.com/guide/topics/media/index.html

“示例:audio捕捉设置和开始”,然后尝试更改Uri base到您的/数据/数据/文件名。

由于Android安全模式,MediaPlayer没有足够的权限。 它可以访问SD卡,但不能访问其他没有权限的地方。

因此,setDataSource(…)可以抛出SecurityException,我认为这是发生。

你可以用下面的方法播放这个文件:

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