【发布时间】:2013-05-16 15:54:42
【问题描述】:
我正在开发媒体播放器,它应该能够播放来自互联网的音频。正如我所注意到的,标准的MediaPlayer 在播放远程内容时非常不稳定:它经常无缘无故地摔倒或停止播放。
另一方面,我想实现媒体缓存。但我还没有找到任何方法从MediaPlayer 获取缓冲内容以将其保存在设备上的某个位置。
所以,我想为自己实现缓冲并让MediaPlayer 只播放本地媒体。我看到的第一种方法是将足够的媒体下载到文件中,通过MediaPlayer 开始播放该文件并继续下载其余媒体(当没有足够的媒体下载时暂停并处理类似的其他事件)。
问题是:可以同时播放文件和追加文件吗?现在我在调用MediaPlayer的setDataSource时只有IllegalStateExceptions
UPD
IllegalStateException 是由无效逻辑引起的。 MediaPlayer 正在播放。
但是出现了另一个问题。
所以,首先下载 5% 的曲目,MediaPlayer 开始播放,播放这 5% 然后停止。这是一种继续玩的方式吗?
开始播放很简单:
private void startPlayback(final File file) {
try {
FileInputStream fs = new FileInputStream(file);
mPlayer.setDataSource(fs.getFD());
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
Log.e(e);
}
}
可能有其他流类型对这种情况有用吗?
【问题讨论】:
-
你是在 setDataSource 方法之前释放 mediaplayer .... 由于文件处于下载模式,它可能已被更改..这就是你得到 IllegalstateException 的原因
-
谢谢!这是应用程序逻辑问题。不是发布,但类似。现在还有一个问题
标签: android android-mediaplayer