Android 实现边下载边播放歌曲

时间:2022-06-12 12:01:54

目前在公司做一个音乐播放器,要求实现边下边播 ,目前可以缓冲(使用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