-
目前在公司做一个音乐播放器,要求实现边下边播 ,目前可以缓冲(使用mediaplayer方法),但是缓冲完,下次点击还是要缓冲。
-
在网络上找了半天,都没有自己想要的,索性自己改写了下:
-
首先,设置歌曲的流媒体地址,大小 K,时长S:
-
audioStreamer .startStreaming("http://dl.stream.qqmusic.qq.com/C60000481cWs2JgWe0.m4a?vkey=6CBF20C303484A0B85E934E8FDD3BB71728C0330361EDDC47AB5DE469CED96498AE0F49AA1A1F3C140C3025777B0A9797C06D3DBE49AF878&guid=ffffffff8afc2b3d93639dff5d33dfdf&continfo=3FCB7A958190A574743899483D552CF4722273BAD86777AD&uin=4611687117939015688&fromtag=100", 5164, 240);
-
再根据地址进行下载10s的缓存文件进行播放,大于初始值10s,就开始播放:
-
if ((totalKbRead * 1024) >= initByte) {
try {
startMediaPlayer();
} catch (Exception e) {
Log.e(getClass().getName(), "Error copying buffered conent.", e);
}
} -
播放完成的缓存少于1s时候,重新设置缓存,这样就可以实现连续播放:
float pos = ((float) (initByte)) / (float) (rate); -
else if (mediaPlayer.getDuration() - mediaPlayer.getCurrentPosition() <= 1000) {
Log.d(getClass().getName(),
mediaPlayer.getDuration() + "=getDuration==" + mediaPlayer.getCurrentPosition());
transferBufferToMediaPlayer();
} else if ((pos - mediaPlayer.getCurrentPosition()) <= 1000) {
Log.d(getClass().getName(), pos + "=initByte==" + mediaPlayer.getCurrentPosition());
transferBufferToMediaPlayer();
} -
具体下载地址:
-
http://download.csdn.net/download/a2081282/10042613
相关文章
- Ionic4.x、Cordova Android 检测应用版本号、服务器下载文件以及实现App自动升级、安装
- 2句代码轻松实现WPF最大化不遮挡任务栏并且具有边框调节效果
- 纯CSS实现tooltip提示框,CSS箭头及形状之续篇--给整个tooltip提示框加个边框
- 如何设置Android Studio左边项目栏的字体大小?
- geotools实现多边形的合并&缓冲区
- 纯CSS3实现自定义涂鸦风格的边框
- qt 画多边形(实现鼠标拖动节点)
- android自定义Dialog实现文件下载和下载进度
- 自动解决Android构建错误:帧像素必须是固态或透明的(不是中间的alphas)。-在顶部边缘的第4像素处找到
- Android架构设计之边界概念