我正在开发媒体播放器,它应该能够播放来自Internet的音频。正如我注意到的,在播放远程内容时,标准MediaPlayer
是相当不稳定的:它经常掉落或停止播放,没有任何理由。另一方面,我想实现媒体缓存。但我还没有找到任何方法从MediaPlayer
获取缓冲内容以将其保存在设备的某个位置。播放媒体文件并在同一时间追加
所以,我想为自己实施缓冲并使MediaPlayer
只播放本地媒体。我看到的第一种方式是将足够多的媒体下载到文件中,通过MediaPlayer
开始播放此文件,并继续下载其余媒体(当没有足够的媒体下载并处理其他事件时暂停)。
问题是:可以播放文件并在同一时间追加它?现在我只叫MediaPlayer
的setDataSource
UPD
IllegalStateException
被无效逻辑时引起有IllegalStateExceptions
。 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 – 2013-04-29 08:35:09
谢谢!这是应用程序逻辑问题。没有发布,但类似。现在还有另一个问题 – darja 2013-04-29 09:53:49