我正在开发媒体播放器,它应该能够播放来自互联网的音频。正如我所注意到的,MediaPlayer
播放远程内容时标准非常不稳定:它经常会无缘无故地摔倒或停止播放。另一方面,我想实现媒体缓存。但是我还没有找到任何方法来获取缓冲内容MediaPlayer
以将其保存在设备上的某个位置。
所以,我想为自己实现缓冲并MediaPlayer
只播放本地媒体。我看到的第一种方法是将足够的媒体下载到文件中,开始播放此文件MediaPlayer
并继续下载其余媒体(当没有足够的媒体下载时暂停并处理类似的其他事件)。
问题是:可以同时播放文件并附加它吗?现在我只有IllegalStateExceptions
在打电话时MediaPlayer
setDataSource
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);
}
}
可能还有其他对这种情况有用的流类型吗?