当我从MIC录制我的音频并将文件存储在/data/data/.....为什么MediaPlayer不能播放此文件?如果我将目标更改为/ sdcard/..... -一切正常。我做错了什么吗?我没有发现MediaPlayer的限制。设备-三星T959(Galaxy S)谢谢,我希望任何人知道解决方案...
72qzrwbm1#
我也有同样的问题......每当我使用setDataSource和文件路径时,它就不起作用;不断收到IOException。更改我的代码以使用setDataSource(FileDescriptor)确实有效...并且使用此方法,我不必将文件复制到SDCard或类似的东西。因此,使用一个简单的File对象,创建一个新的FileInputStream,并将实际的文件描述符作为数据源传递,如下所示:
setDataSource((new FileInputStream(myFileInstance)).getFD());
创建输入流将文件数据拉入存储器,从而解决/数据/数据访问违规。
lx0bsm1f2#
更好的做法是关闭流,如下所示:
FileInputStream stream = new FileInputStream(path); mediaPlayer.setDataSource(stream.getFD()); stream.close();
Kotlin的话更妙:
mediaPlayer.setDataSource( FileInputStream(path).use { it.fd } )
在方法文件中注明:android.media.MediaPlayer.setDataSource(FileDescriptor fd)设置要使用的数据源(FileDescriptor)。关闭文件描述符是调用方的责任。一旦此调用返回,就可以安全地执行此操作。
android.media.MediaPlayer.setDataSource(FileDescriptor fd)
FileDescriptor
crcmnpdw3#
使用媒体播放器.setDataSource(文件描述符fd)
ttcibm8c4#
尝试设置ContentValues并存储一些标准的元数据属性,然后使用ContentResolver设置元数据和文件的URI。参见:http://developer.android.com/guide/topics/media/index.html"示例:音频捕获设置和启动",然后尝试将Uri base更改为您的/data/data/- filename。
Uri base
zf2sa74q5#
由于Android的安全模式,MediaPlayer没有足够的权限。它可以访问SD卡,但不能访问其他地方没有权限。因此,setDataSource(...)可以抛出SecurityException,我认为它正在发生。
5条答案
按热度按时间72qzrwbm1#
我也有同样的问题......每当我使用setDataSource和文件路径时,它就不起作用;不断收到IOException。
更改我的代码以使用setDataSource(FileDescriptor)确实有效...并且使用此方法,我不必将文件复制到SDCard或类似的东西。
因此,使用一个简单的File对象,创建一个新的FileInputStream,并将实际的文件描述符作为数据源传递,如下所示:
创建输入流将文件数据拉入存储器,从而解决/数据/数据访问违规。
lx0bsm1f2#
更好的做法是关闭流,如下所示:
Kotlin的话更妙:
在方法文件中注明:
android.media.MediaPlayer.setDataSource(FileDescriptor fd)
设置要使用的数据源(
FileDescriptor
)。关闭文件描述符是调用方的责任。一旦此调用返回,就可以安全地执行此操作。crcmnpdw3#
使用媒体播放器.setDataSource(文件描述符fd)
ttcibm8c4#
尝试设置ContentValues并存储一些标准的元数据属性,然后使用ContentResolver设置元数据和文件的URI。
参见:http://developer.android.com/guide/topics/media/index.html
"示例:音频捕获设置和启动",然后尝试将
Uri base
更改为您的/data/data/- filename。zf2sa74q5#
由于Android的安全模式,MediaPlayer没有足够的权限。它可以访问SD卡,但不能访问其他地方没有权限。
因此,setDataSource(...)可以抛出SecurityException,我认为它正在发生。
您可以通过以下方式播放此文件: