android播放器(music player)源码分析5(在线播放功能)
16lz
2021-01-25
根据上一篇文章中对百度MP3页面的解析,生成如下格式的xml文档。
Xml代码- <?xmlversion="1.0"encoding="UTF-8"standalone="no"?>
- -<Result>
- -<CatagorycID="0">
- 歌手排行
- <SubCatagoryRank="1"Rex="<td><span>(.*?)//.</span><ahref=/"(.*?)/".*?>(.*?)</a></td>"Url="http://list.mp3.baidu.com/top/top200.html"cID="0"cName="歌手排行"cValue="歌手TOP200"/>
- <SubCatagoryRank="2"Rex="<td><span>(.*?)//.</span><ahref=/"(.*?)/".*?>(.*?)</a></td>"Url="http://list.mp3.baidu.com/top/rihangeshou.html"cID="0"cName="歌手排行"cValue="日韩歌手"/>
- <SubCatagoryRank="3"Rex="<td><span>(.*?)//.</span><ahref=/"(.*?)/".*?>(.*?)</a></td>"Url="http://list.mp3.baidu.com/top/oumeigeshou.html"cID="0"cName="歌手排行"cValue="欧美歌手"/>
- </Catagory>
- -<CatagorycID="1">
- 歌曲排行
- <SubCatagoryRank="2"Rex="<tdclass="tdc">.*?title='(.*?)'>.*?<tdclass="tdd">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/top100.html"cID="1"cName="歌曲排行"cValue="新歌TOP100"/>
- <SubCatagoryRank="3"Rex="<tdclass="tdc">.*?>(.*?)</.*?<tdclass="tdd">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/top500.html"cID="1"cName="歌曲排行"cValue="歌曲TOP500"/>
- <SubCatagoryRank="4"Rex="<tdclass=/"tdb/">.*?>(.*?)</a.*?<tdclass=/"tdc/"><.*?>(.*?)</"Url="http://list.mp3.baidu.com/top/bangping.html"cID="1"cName="歌曲排行"cValue="中文金曲榜"/>
- <SubCatagoryRank="5"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/rihan.html"cID="1"cName="歌曲排行"cValue="日韩流行风"/>
- <SubCatagoryRank="6"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/oumei.html"cID="1"cName="歌曲排行"cValue="欧美金曲"/>
- <SubCatagoryRank="7"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/movie.html"cID="1"cName="歌曲排行"cValue="影视金曲"/>
- <SubCatagoryRank="8"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/duichang.html"cID="1"cName="歌曲排行"cValue="热门对唱"/>
- <SubCatagoryRank="9"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/yaogun.html"cID="1"cName="歌曲排行"cValue="摇滚歌曲榜"/>
- <SubCatagoryRank="10"Rex="<ahref=/".*?>(.{1,5})-(.{1,10})</a></td>"Url="http://list.mp3.baidu.com/top/minyue.html"cID="1"cName="歌曲排行"cValue="中国民乐"/>
- <SubCatagoryRank="11"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/junlvminge.html"cID="1"cName="歌曲排行"cValue="流金岁月"/>
- </Catagory>
- -<CatagorycID="2">
- 音乐分类
- <SubCatagoryRank="3"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&rf=idx&tn=baidump3&ct=134217728&lf=&rn=&word=%BE%AD%B5%E4%C0%CF%B8%E8&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="经典老歌"/>
- <SubCatagoryRank="4"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&rf=idx&tn=baidump3&ct=134217728&lf=&rn=&word=%CD%F8%C2%E7%B8%E8%C7%FA&lm=-1rf=bangdang"cID="2"cName="音乐分类"cValue="网络歌曲"/>
- <SubCatagoryRank="5"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=dj%CE%E8%C7%FA&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="DJ舞曲"/>
- <SubCatagoryRank="6"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%C7%E1%D2%F4%C0%D6&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="轻音乐"/>
- <SubCatagoryRank="7"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%C9%CB%B8%D0&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="伤感"/>
- <SubCatagoryRank="8"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%BC%C5%C4%AF&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="寂寞"/>
- <SubCatagoryRank="9"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%CF%EB%BF%DE&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="想哭"/>
- <SubCatagoryRank="10"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%B7%C7%D6%F7%C1%F7&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="非主流"/>
- <SubCatagoryRank="11"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=90%BA%F3&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="90后"/>
- <SubCatagoryRank="12"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=80%BA%F3&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="80后"/>
- <SubCatagoryRank="13"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%D0%A3%D4%B0%C3%F1%D2%A5&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="校园民谣"/>
- <SubCatagoryRank="14"Rex=""Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%C3%F1%B8%E8&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="民歌"/>
- <SubCatagoryRank="15"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%CF%E0%C9%F9&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="相声"/>
- <SubCatagoryRank="16"Rex="t:/"(.*?)/",s:/"(.*?)/",a:/"(.*?)/","Url="http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word=%B6%F9%B8%E8&lm=-1&rf=bangdang"cID="2"cName="音乐分类"cValue="儿歌"/>
- </Catagory>
- -<CatagorycID="3">
- //.......................略
这里需要重载MediaStore类,加入以下几个属性
Java代码- publicstaticfinalclassOnLine{
- publicstaticfinalStringID="_id";
- publicstaticfinalStringURL="Url";
- publicstaticfinalStringNAME="Name";
- publicstaticfinalStringALBUM="album";
- publicstaticfinalStringARTIST="artist";
- publicstaticfinalStringCATAGORY_ID="cID";
- publicstaticfinalStringCATAGORY_NAME="cName";
- publicstaticfinalStringCATAGORY_VALUE="cValue";
- publicstaticfinalStringRANK="Rank";
- publicstaticfinalStringREX="Rex";
- }
这样将在线的MP3资源和播放器源码在数据结构上实现了一一对应,这里的url是每个分类的页面,通过该类中的正则表达式对该页面进行解析得到所有的音乐资源,然后在一个activity中显示出来并实现点击后在线播放。
现在为止从整体上已经实现了在线播放,还存在以下问题需要解决
- 在线播放会出现中断问题
- 歌词同步
- 接下来UI的实现,例如歌词滚动
更多相关文章
- Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)
- Android高手进阶教程(十八)之---列出Android设备中所有启动的服
- Android之MediaPlayer一个bug
- Android:使用MediaPlayer播放本地音乐
- Android(安卓)音乐播放器的实现(一)自定义按钮的实现
- Android音乐播放器【安卓进化二十】
- Android实现控制第三方音乐播放器暂停/播放
- 【Android】_音乐列表_仿网易云音乐播放器2(读取本地mp3)
- 多媒体之播放音乐——MediaPlayer