开发落网电台windows phone 8应用的计划(5)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了开发落网电台windows phone 8应用的计划(5),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6584字,纯文字阅读大概需要10分钟。
内容图文
这两天把网络的事情搞了一下,由于并没有api可以使用,所以我是选择下载了网站的html代码用正则表达式找出资源链接。
但是到现在也不知道是不是出于网络的原因,后台的OpenReadAsyncComplete事件一直没有响应。
我用的是webClient类,代码如下:
问题代码出现在最后一部分。。
1 using System; 2 using System.Diagnostics; 3 using System.Windows; 4 using Microsoft.Phone.BackgroundAudio; 5 using System.Collections.Generic; 6 using System.Text.RegularExpressions; 7 using System.Threading; 8 using System.Net; 9 using System.IO; 10 namespace LuooAudioPlayerAgent 11 { 12 public class AudioPlayer : AudioPlayerAgent 13 { 14 #region 字段 15 16staticint currentTrackNumber=0; 17staticint maxAlbumNumber=-1; 18staticint currentAlbumNumber=-1; 19staticbool isFinished=false; 20privatestatic List<AudioTrack> playList=new List<AudioTrack>(); 21//{ 22// new AudioTrack(new Uri("http://luoo.800edu.net/low/luoo/radio589/01.mp3",UriKind.Absolute),null,null,null,null) 23//}; 24 25#endregion 26 27static AudioPlayer() 28 { 29 GetMaxAlbumNumber(); 30while(!isFinished) { } 31 GetList(); 32 Deployment.Current.Dispatcher.BeginInvoke(delegate 33 { 34 Application.Current.UnhandledException += UnhandledException; 35 }); 36 } 37 38#region 出现未处理的异常时执行的代码 39privatestaticvoid UnhandledException( object sender , ApplicationUnhandledExceptionEventArgs e ) 40 { 41if(Debugger.IsAttached) 42 { 43// 出现未处理的异常;强行进入调试器 44 Debugger.Break(); 45 } 46 } 47#endregion 48 49protectedoverridevoid OnPlayStateChanged( BackgroundAudioPlayer player , AudioTrack track , PlayState playState ) 50 { 51switch(playState) 52 { 53case PlayState.TrackEnded: 54 PlayNextTrack(player); 55break; 56case PlayState.TrackReady: 57 player.Play(); 58break; 59 60 } 61 NotifyComplete(); 62 } 63 64protectedoverridevoid OnUserAction( BackgroundAudioPlayer player , AudioTrack track , UserAction action , object param ) 65 { 66switch(action) 67 { 68case UserAction.Play: 69if(player.Track==null) player.Track=playList[currentTrackNumber]; 70 player.Play(); 71break; 72 73case UserAction.Pause: 74 player.Pause(); 75break; 76 77case UserAction.SkipNext: 78 PlayNextTrack(player); 79break; 80 81case UserAction.SkipPrevious: 82 PlayPreviousTrack(player); 83break; 84case UserAction.FastForward: 85if(currentAlbumNumber<maxAlbumNumber) 86 { 87 ++currentAlbumNumber; 88 GetList(); 89 player.Track=playList[currentTrackNumber]; 90 } 91break; 92case UserAction.Rewind: 93 --currentAlbumNumber; 94 GetList(); 95 player.Track=playList[currentTrackNumber]; 96break; 97default: 98break; 99 } 100 NotifyComplete(); 101 } 102103#region control 104105privatevoid PlayNextTrack( BackgroundAudioPlayer player ) 106 { 107try108 { 109if(++currentTrackNumber >=playList.Count) 110 { 111 currentTrackNumber = 0; 112 } 113 player.Track=playList[currentTrackNumber]; 114 } 115catch(Exception e) 116 { 117//todo118 } 119120 } 121122privatevoid PlayPreviousTrack( BackgroundAudioPlayer player ) 123 { 124try125 { 126if(--currentTrackNumber < 0) 127 { 128 currentTrackNumber = playList.Count - 1; 129 } 130 player.Track=playList[currentTrackNumber]; 131 } 132catch(Exception e) 133 { 134//todo135 } 136 } 137138139140#endregion141142143protectedoverridevoid OnError( BackgroundAudioPlayer player , AudioTrack track , Exception error , bool isFatal ) 144 { 145if(isFatal) 146 { 147 Abort(); 148 } 149else150 { 151 NotifyComplete(); 152 } 153154 } 155156protectedoverridevoid OnCancel() 157 { 158159 } 160161publicstaticvoid GetList() 162 { 163//isFinished 164//clear playlist165 playList.Clear(); 166//get Html 167//WebClient playListWebClient=new WebClient(); 168//playListWebClient.DownloadStringAsync(new Uri("http://www.luoo.net/music/"+currentAlbumNumber,UriKind.Absolute)); 169//playListWebClient.DownloadStringCompleted+=playListWebClient_DownloadStringCompleted; 170171//for(int i=0;i<10;i++) 172//{ 173// var t=new AudioTrack(); 174// t.Source=new Uri("http://luoo.800edu.net/low/luoo/radio"+currentAlbumNumber+"/"+i+".mp3"); 175// playList.Add(t); 176//}177178 } 179180staticvoid playListWebClient_DownloadStringCompleted( object sender , DownloadStringCompletedEventArgs e ) 181 { 182int playListCount; 183string pattern; 184 MatchCollection matches; 185 AudioTrack t; 186//getAlbumAndArtist187 pattern=@"track-album.>(.+)-(.+)</a>"; 188 matches=Regex.Matches(@e.Result , pattern); 189 playListCount=matches.Count; 190for(int i=0;i<playListCount;i++) 191 { 192 t=new AudioTrack(); 193 t.Album=matches[i].Groups[1].ToString(); 194 t.Artist=matches[i].Groups[2].ToString(); 195if(i<10) 196 t.Source=new Uri("http://luoo.800edu.net/low/luoo/radio"+currentAlbumNumber+"/0"+i+".mp3"); 197else198 t.Source=new Uri("http://luoo.800edu.net/low/luoo/radio"+currentAlbumNumber+"/"+i+".mp3"); 199 playList.Add(t); 200 } 201//getMusicTitleAndMusicCover202 pattern=@"img alt=.(.+). src=.(http://img.luoo.net/\S+60x60.jpg)"; 203 matches=Regex.Matches(@e.Result , pattern); 204for(int i=0 ; i<playListCount ; i++) 205 { 206 playList[i].Title=matches[i].Groups[1].ToString(); 207 playList[i].Tag=matches[i].Groups[2].ToString(); 208 } 209//getAlbumCover210 pattern=@"http://img.luoo.net/\S+640x452.jpg"; 211 matches=Regex.Matches(@e.Result , pattern); 212 Uri cover=new Uri(matches[0].ToString() , UriKind.Absolute); 213for(int i=0 ; i<playListCount ; i++) 214 playList[i].AlbumArt=cover; 215//getAlbumTitle216 pattern=@"<title>(\S+)</title>"; 217 matches=Regex.Matches(@e.Result , pattern); 218string temp="|"+matches[0].Groups[1].ToString(); 219for(int i=0 ; i<playListCount ; i++) 220 { 221 playList[i].Tag+=temp; 222 } 223// 224 currentTrackNumber=0; 225226 } 227228publicstaticvoid GetMaxAlbumNumber() 229 { 230//GetMaxAlbumNumber231 WebClient origionWebClient=new WebClient(); 232//origionWebClient.AllowReadStreamBuffering=false;233 origionWebClient.OpenReadAsync(new Uri("http://www.luoo.net" , UriKind.Absolute)); 234 origionWebClient.OpenReadCompleted+=origionWebClient_OpenReadCompleted; //。。。。这是事件 235//set currentAlbumNumber236 } 237238staticvoid origionWebClient_OpenReadCompleted( object sender , OpenReadCompletedEventArgs e ) //这里就是没有消息。。 239 { 240 StreamReader sR=new StreamReader(e.Result); 241string html=sR.ReadToEnd(); 242//GetMaxAlbumNumber243string pattern=@"vol. [0-9]+"; 244 MatchCollection matches=Regex.Matches(@html , pattern); 245string temp=matches[0].ToString().Split(‘‘)[1]; 246 maxAlbumNumber=int.Parse(temp); 247//set currentAlbumNumber248 currentAlbumNumber=maxAlbumNumber; 249//set isFinished250 isFinished=true; 251 } 252 } 253 }
如果园友看了之后有知道其中原因的,欢迎指教。。。。
mail:tian_feng_bo@live.com
原文:http://www.cnblogs.com/au-xiaotian/p/3606346.html
内容总结
以上是互联网集市为您收集整理的开发落网电台windows phone 8应用的计划(5)全部内容,希望文章能够帮你解决开发落网电台windows phone 8应用的计划(5)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。