巧克力播放器之歌词篇

前些日子完成的巧克力播放器,

被同学称之为 “没有歌词显示,鬼才会用你的啊!”,

感触很深啊,所以刚才就努了点力给把歌词功能给完成了,

对于歌词的功能,事实上还是蛮简单的,就一个读文件的操作,

然后尽量做到播放器和歌词页的同步就 OK 了,

不过在对读 .lrc 文件上还是需要注意很多地方的,

首先,对于歌词的组成还是要熟悉一下,

歌词文件每一行一般都是 [03:30.45] 之类的开头,

例如

1

所以要读取一份歌词只需要一行一行的读取,

using (StreamReader myReader = new StreamReader(lrcPath,

                                  System.Text.Encoding.GetEncoding("gb2312")))
{
    while (myReader.Read() != -1)
    {
        string myLine = myReader.ReadLine();
    }
}

然后将这些读取到得每一行存储在一个泛型集合 List<string> 中就完成了读取歌词了,

但是读取进去的都是如上面截图所示,无法区分开来时间和歌词,

只有在区分了时间和歌词才能在特定的时间里显示特定的歌词,

即歌词同步 MediaPlayer 的播放,

所以还必须对上面得到的泛型集合进行解析,以解析出歌词和时间,

解析的话,则主要是依靠遍历泛型集合中的每一项,然后再对每一项进行解析,

将时间和文字区分开来,并且将对应的时间和对应的文字存入再新建的 List<string> 泛型集合,

并且让对应的时间和对应的文字在各自的泛型集合中的索引下表相同,

这样就可以方便的根据当前播放的时间得到与这个时间最接近的存储在泛型集合中的时间的下标,

这样再根据这个下标就可以获取存储了文字泛型集合中的对应的时间了,

这样就可以达到播放和歌词的同步了。

看看效果吧

3 

2 

5

控制歌词显示的一个按钮

4

如果有想要播放器或者源码的均可以留邮箱给我,

必回复,还有就是这个例子的代码写的有点乱,

得小心看。

posted @ 2010-01-06 21:42  小宝马的爸爸  阅读(1125)  评论(24编辑  收藏  举报