为了节省流量,安卓移动设备有需求:实现边播放边缓存.对于音乐重复播放的几率很大.有必要缓存下来.
现状是:MediaPlayer类只实现播放,和临时缓存数据的进度通知,但没有实现本地保存.
考虑了一下应该有几种方案;
if(path.startsWith("http")){
path=proxy.getProxyUrl(path);
}
mediaPlayer.setDataSource(path);
目前来看,对MediaPlayer侵入最少的.还是PROXY的方式. 本来打算自己实现的.发现网上已经有几个实现的方案了
其中金山云Android HTTPCache SDK 提供的方案使用非常简单省事.
https://segmentfault.com/a/1190000007273843
https://github.com/ksvc/ksyhttpcache_android/releases
使用前,项目加载其提供的jar,可以在Application启动时初始化
private void initHttpProxy(){
proxy=new KSYProxyService(getApplicationContext()) ;
proxy.setCacheRoot(getExternalCacheDir());
proxy.setMaxCacheSize(2048*1024*1024l);
proxy.registerLogEventListener(new OnLogEventListener() {
@Override
public void onLogEvent(String var1) {
MyLog.d(TAG, var1);
}
});
proxy.startServer();
}
金山云提供封装更全的播放器,也可以考虑直接使用:KSYMediaPlayer
https://gitee.com/ksvc/KSYMediaPlayer_Android