一.项目介绍
1.本歌词播放器 支持在线查找歌词,自动下载歌词同步显示。
2.初次下载的歌词讲存储在手机独立存储空间。
二.引用代码
1.本项目中引用了部分网上的代码,在此表示感谢。如将其商业化,请联系截取代码原作者,本案例因为Windows Phone 7的编程特殊性,引用的代码进行了大量的修改,
以适应手机平台
2.引用代码出处
2.1歌词同步显示:
出自博客园-菩提树下的杨过-
注:这个例子来自[FL车在臣](在blueidea上又名“寂寞火山”)翻译的“Animation in ActionScript3.0”一书
http://www.cnblogs.com/yjmyzz/archive/2010/04/14/1711725.html
2.2HTML解析(Windows Phone 7本身不支持GB2312)
http://www.cnblogs.com/qingci/archive/2011/11/25/2263124.html
2.3C#歌词在线下载
http://hi.baidu.com/yyq745201/blog/item/bd7dffdf272bef52cdbf1a4d.html
版权声明:以上出处因为转载过多,真实性不可考,要抓请抓原作者。嘿嘿
二.搭建运行框架
1.因为我们调用的歌曲文件为手机媒体库中的歌曲库,并且要实现播放功能,因此需在silverlight架构中加入XNA框架。
View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Microsoft.Xna.Framework.Media;
using System.Windows.Threading;
using Microsoft.Xna.Framework;
using System.IO.IsolatedStorage;
using System.Text.RegularExpressions;
using System.Diagnostics;
using System.Windows.Media.Imaging;
using System.Windows.Resources;
// 构造函数
public MainPage()
{
InitializeComponent();
//模拟XNA架构
DispatcherTimer dt = new DispatcherTimer();
dt.Interval = TimeSpan.FromMilliseconds(33);
dt.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };
dt.Start();
}
2.播放器播放SongCollection歌曲集合。按顺序播放
View Code
SongCollection songs;
// 构造函数
public MainPage()
{
InitializeComponent();
//模拟XNA架构
DispatcherTimer dt = new DispatcherTimer();
dt.Interval = TimeSpan.FromMilliseconds(33);
dt.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };
dt.Start();
}
//媒体库
MediaLibrary libary = new MediaLibrary();
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
//如果歌曲库不为空
if (libary.Songs != null)
{
get();
}
}
void get()
{
//装载歌曲集合
songs = libary.Songs;
//根据艺术家分组排序给LISTBOX
var music = from s in songs
group s by s.Artist into newmusic
select new Group<Song>(newmusic.Key.ToString(),newmusic);
//绑定数据
SongList.ItemsSource = music;
}