`

android播放器(music player)源码分析5(在线播放功能)

 
阅读更多

根据上一篇文章中对百度MP3页面的解析,生成如下格式的xml文档。

Xml代码
  1. <?xmlversion="1.0"encoding="UTF-8"standalone="no"?>
  2. -<Result>
  3. -<CatagorycID="0">
  4. 歌手排行
  5. <SubCatagoryRank="1"Rex="<td><span>(.*?)//.</span><ahref=/"(.*?)/".*?>(.*?)</a></td>"Url="http://list.mp3.baidu.com/top/top200.html"cID="0"cName="歌手排行"cValue="歌手TOP200"/>
  6. <SubCatagoryRank="2"Rex="<td><span>(.*?)//.</span><ahref=/"(.*?)/".*?>(.*?)</a></td>"Url="http://list.mp3.baidu.com/top/rihangeshou.html"cID="0"cName="歌手排行"cValue="日韩歌手"/>
  7. <SubCatagoryRank="3"Rex="<td><span>(.*?)//.</span><ahref=/"(.*?)/".*?>(.*?)</a></td>"Url="http://list.mp3.baidu.com/top/oumeigeshou.html"cID="0"cName="歌手排行"cValue="欧美歌手"/>
  8. </Catagory>
  9. -<CatagorycID="1">
  10. 歌曲排行
  11. <SubCatagoryRank="2"Rex="<tdclass="tdc">.*?title='(.*?)'>.*?<tdclass="tdd">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/top100.html"cID="1"cName="歌曲排行"cValue="新歌TOP100"/>
  12. <SubCatagoryRank="3"Rex="<tdclass="tdc">.*?>(.*?)</.*?<tdclass="tdd">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/top500.html"cID="1"cName="歌曲排行"cValue="歌曲TOP500"/>
  13. <SubCatagoryRank="4"Rex="<tdclass=/"tdb/">.*?>(.*?)</a.*?<tdclass=/"tdc/"><.*?>(.*?)</"Url="http://list.mp3.baidu.com/top/bangping.html"cID="1"cName="歌曲排行"cValue="中文金曲榜"/>
  14. <SubCatagoryRank="5"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/rihan.html"cID="1"cName="歌曲排行"cValue="日韩流行风"/>
  15. <SubCatagoryRank="6"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/oumei.html"cID="1"cName="歌曲排行"cValue="欧美金曲"/>
  16. <SubCatagoryRank="7"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/movie.html"cID="1"cName="歌曲排行"cValue="影视金曲"/>
  17. <SubCatagoryRank="8"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/duichang.html"cID="1"cName="歌曲排行"cValue="热门对唱"/>
  18. <SubCatagoryRank="9"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/yaogun.html"cID="1"cName="歌曲排行"cValue="摇滚歌曲榜"/>
  19. <SubCatagoryRank="10"Rex="<ahref=/".*?>(.{1,5})-(.{1,10})</a></td>"Url="http://list.mp3.baidu.com/top/minyue.html"cID="1"cName="歌曲排行"cValue="中国民乐"/>
  20. <SubCatagoryRank="11"Rex="<tdclass=/"tdc/">.*?title='(.*?)'>.*?<tdclass=/"tdd/">.*?title='(.*?)'>"Url="http://list.mp3.baidu.com/top/junlvminge.html"cID="1"cName="歌曲排行"cValue="流金岁月"/>
  21. </Catagory>
  22. -<CatagorycID="2">
  23. 音乐分类
  24. <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="经典老歌"/>
  25. <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="网络歌曲"/>
  26. <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舞曲"/>
  27. <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="轻音乐"/>
  28. <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="伤感"/>
  29. <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="寂寞"/>
  30. <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="想哭"/>
  31. <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="非主流"/>
  32. <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后"/>
  33. <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后"/>
  34. <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="校园民谣"/>
  35. <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="民歌"/>
  36. <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="相声"/>
  37. <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="儿歌"/>
  38. </Catagory>
  39. -<CatagorycID="3">
  40. //.......................略

这里需要重载MediaStore类,加入以下几个属性

Java代码
  1. publicstaticfinalclassOnLine{
  2. publicstaticfinalStringID="_id";
  3. publicstaticfinalStringURL="Url";
  4. publicstaticfinalStringNAME="Name";
  5. publicstaticfinalStringALBUM="album";
  6. publicstaticfinalStringARTIST="artist";
  7. publicstaticfinalStringCATAGORY_ID="cID";
  8. publicstaticfinalStringCATAGORY_NAME="cName";
  9. publicstaticfinalStringCATAGORY_VALUE="cValue";
  10. publicstaticfinalStringRANK="Rank";
  11. publicstaticfinalStringREX="Rex";
  12. }

这样将在线的MP3资源和播放器源码在数据结构上实现了一一对应,这里的url是每个分类的页面,通过该类中的正则表达式对该页面进行解析得到所有的音乐资源,然后在一个activity中显示出来并实现点击后在线播放。

现在为止从整体上已经实现了在线播放,还存在以下问题需要解决

  1. 在线播放会出现中断问题
  2. 歌词同步
  3. 接下来UI的实现,例如歌词滚动
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics