gpt4 book ai didi

android - MediaPlayer setDataSource,最好用path还是FileDescriptor?

转载 作者:IT王子 更新时间:2023-10-28 23:29:43 27 4
gpt4 key购买 nike

假设我有一个文件的完整路径。将该文件加载到 MediaPlayer 中的更好方法是什么?

String filePath = "somepath/somefile.mp3";
mediaPlayer.setDataSource(filePath);

String filePath = "somepath/somefile.mp3";
File file = new File(filePath);
FileInputStream inputStream = new FileInputStream(file);
mediaPlayer.setDataSource(inputStream.getFD());
inputStream.close();

这有关系吗?简单地使用路径似乎更容易,但是否有理由做额外的工作来使用 FileDescriptor?

最佳答案

其实在某些情况下还是有区别的。

mediaPlayer.setDataSource(String path)调用 mediaPlayer.prepare() 时会失败, 如果您尝试从 getApplicationContext().getFilesDir() 加载文件,取决于文件的保存方式。例如,如果我使用 new RandomAccessFile(filePath, "rw") 编写文件,如果您使用 mediaPlayer.setDataSource(String path),则媒体播放器实际上无法读取该文件. prepare()将立即触发error(1, -2147483648)来自媒体播放器;本质上是文件权限错误。 SDK 9 引入 file.setReadable (boolean readable, boolean ownerOnly)这可能允许您通过设置 ownerOnly 来解决此问题为 false...但如果您需要支持较旧的 SDK,这对您没有帮助。

然而,mediaPlayer.setDataSource(FileDescriptor fd)没有这个问题,媒体播放器将成功地准备相同的文件而没有权限问题。

关于android - MediaPlayer setDataSource,最好用path还是FileDescriptor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625680/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com