叶桂锐
(广州航海学院,广东广州510725)
基于Android平台的音乐播放系统歌词匹配功能的设计与实现
叶桂锐
(广州航海学院,广东广州510725)
论文对一款基于Android平台的音乐播放系统歌词匹配功能的设计与实现进行讨论。主要介绍了这款音乐播放器的工作模式,采用了Java语言和Eclipse编辑工具对播放器进行开发编写。将在研究开发的过程中所遇到的如歌词匹配、歌词同步、音乐之间的切换等问题,如何解决这些问题的方法进行详细的介绍说明。音乐播放系统可以良好的支持目前常见的音乐格式(MP3、WMA),便捷的功能和快速的歌词同步匹配功能等,足以满足人们对音乐播放系统的需求。
音乐播放;音乐搜索;播放列表;歌词同步
目前市场上主流的音乐文件的格式还是以mp3为主,同时还有无损压缩的wav和ape等多种音乐格式。本文主要是要针对这些主流的音乐文件格式来做设计,让它拥有文件的播放功能、音乐切换功能、音量调节功能之外,还需要拥有一个人性化控制等。
目前市场上主要有iOS和Android两大阵营,本文以An⁃droid手机为切入点,介绍一款Android手机的多媒体音乐播放系统的歌词匹配功能设计与实现。
下面详细介绍一下歌词匹配过程,说明歌词匹配功能是如何设计的,如图1歌词匹配流程图所示。
1)音乐开始播放的时候,系统需要判断用户是否开启了歌词显示的功能,如果没开启,那么就不显示歌词。这里主要讨论的时开启了歌词显示的时候,系统会做什么。如果用户开启了歌词显示功能,那么系统首先先对手机里的歌词文件夹进行检索查找,看能否找到相应的歌词文件。如果在歌词文件夹中能找到相应的歌词文件,那么就直接将歌词显示到手机屏幕上。如果在手机的歌词文件夹中找不到当前歌曲的歌词文件,那么进入下一步骤2。
2)如果歌词在本地文件夹搜索不出来,那么系统会检查手机的网络状态。首先系统先检查手机有没有接入WIFI网络。如果手机没有接入WIFI网络,系统接下来就检查手机的2G/ 3G/4G网络的数据无线网络是否启用。如果此时,手机的无线网络数据网络没有连接,那么系统就提示无网络连接,无法匹配歌词。
3)如果用户的手机是连上了WIFI或2G/3G/4G的数据无线网络,那么系统会询问用户是否通过互联网搜索歌词(用户可以关闭该询问,让系统下次搜索的时候无需询问)。用户选择是的时候,手机接入互联网,在歌词网站上进行歌词搜索,当歌词搜索出来后,会出现列表让用户选择下载或不下载。用户选定歌词后,系统将歌词下载到手机当中,将歌曲文件的命名相同进行保存。然后显示歌词到手机屏幕当中,下一次再播放同一首歌时就无需上互联网下载了。
设计好了功能后,还需要一个好的数据库存储相应的数据,为这些功能模块输送优质的“血液”。数据库设计方面分两个部分进行论述介绍,分别是数据库的结构设计和数据表设计。
图1 歌词匹配流程
图2 系统数据库E-R图
2.1 系统数据库结构设计
在音乐播放系统中主要是存储和记录手机中的音乐歌曲文件的位置和它的基本信息,以方便用户在系统中浏览和播放。另外用户可以根据个人的喜好来对音乐进行设定不同的播放列表,以便用户可以根据需要播放。而在音乐播放的时候是需要显示音乐的歌词,那么歌词的信息也是需要存储的。因此在系统数据库设计主要有3个实体,分别是歌曲(音乐)、歌词和歌曲列表。系统数据库的关系图如图2系统数据库E-R图所示。
1)首先介绍一下歌曲和播放列表之间的关系。在系统当中,歌曲的属性有很多,有编号、所属专辑、艺术家(演唱者)、专辑当中的曲目编号、歌曲名称、发行年份等等,这些都是歌曲的基本属性。而播放列表这个实体的属性就比较简单,这个播放列表的编号和它的名称。
歌曲和播放列表两个实体之间的关系是多对多(M:N)的关系。因为在系统当中是可以创建多个播放列表的,每个播放列表当中可以添加多首歌曲;而歌曲方面,它可以存放在不同的列表当中。例如歌曲《阴天》,它可以存放在名为喜爱的播放列表当中,也可以存放在演唱者的播放列表当中,又或者存放在其他列表当中,这些列表都是同时存在的。因此歌曲和播放列表之间是多对多关系。由于它们是多对多关系,那么它们之间的组成关系也需要转化成一个关系模式,用一个数据表来表示。
2)歌曲和歌词之间的关系:歌曲和歌词之间则是一对一的关系,因为一首歌只有一份歌词,而一份歌词对能对应一首歌曲。如果一份歌词对应了不同歌曲,那么就会出现歌词和听到的歌曲是不相同,出现错误。
2.2 数据表设计
根据数据库的关系图,将关系图当中相关联的裸体设计成对应的数据表,从数据的低耦合出发,保证各个实体之间的独立性,会需要人为地去增加一些数据冗余。例如分析中提到的歌曲和播放列表之间是多对多的关系,则必须人为地将它们之间的关系设计成一个数据表,这个数据表则是人为地增加了数据冗余,目的就是为了保证歌曲数据表和播放列表数据表之间的独立性。
音乐播放系统的数据库设计主要设计了歌曲信息存储的数据表、播放列表数据表和系统设置数据表等,具体如表1数据表设计表所示。
表1 数据表设计表
1)music_file歌曲文件信息数据表
music_file主要是用来保存歌曲的名称、歌曲的类型和歌曲在手机当中具体的存储路径。具体如表2 music_file数据表所示。
表2 music_file数据表
其中Id是歌曲的编号,为music_file表的主键;fName为歌曲名称;fPath为歌曲在手机当中的存储路径;fStyle为歌曲的类型。
2)music_desc歌曲媒体信息数据表
music_desc数据表主要用来存储歌曲的详细信息,如表3 music_desc数据表所示。
表3 music_desc数据表
其中Id为歌曲的编号,它不仅是music_desc数据表的主键,同时它还是外键,引用了music_file数据表的主键;Title是存放歌曲的标题;Artist是存放歌曲的演唱者的名字;Album是用来存放歌曲所属的专辑名称;Size用来存储该歌曲文件的大小。
3)music_list歌曲列表数据表
music_list主要是用来保存系统中歌曲列表的数据信息的。具体如表4 music_list数据表所示。
表4 music_list数据表
其中Id为列表的编号,是music_list数据表的主键;list⁃Name字段是用来存放歌曲列表的名称。
歌词显示的实现使用了自定义的LrcDisplay类,在类中定义歌词文件的存储路径静态变量LrcPath,歌词显示的lrcShow()方法、歌词搜索的lrcSearch()方法。
1)实现歌词滚动
为了能让歌曲的歌词可以在播放的时候同时显示滚动歌词,必须要将歌曲文件和歌词文件保存在同一个文件夹内。在歌曲播放的时候,歌词的显示以线程的形式运行,当音乐开始播放的时候,此时就需要通过播放的时间进度和歌词文件的显示进度要同步在一起才可以准确显示歌词。如上面提到的,在MusicPlay类的Play()方法,会不断的通过MusicService的Han⁃ dler消息机制广播告诉系统音乐的播放时间点,而lrcShow()方法则通过系统的广播消息,获取音乐的播放时间点和音乐播放的歌曲名称,然后搜索SDCard的歌词文件,搜到和音乐播放文件同名文件时,将LRC歌词文件写入内存当中。然后依据广播消息获得的音乐时间点来搜索歌词的索引,将歌曲同步到索引点,再通过重写OnDraw方法来绘制显示歌词在手机屏幕中。
2)搜索歌词
歌词搜索主要是当音乐播放的时候,音乐播放器启动歌词显示进程,调用lrcShow()方法来显示歌词。而在显示歌词的时候,lrcShow()需要搜索歌曲相应的歌词文件,如果此时lrcShow()方法无法在SD Card卡的音乐目录中搜索到相应的音乐歌词文件,此时lrcShow()方法会调用lrcSearch()方法。
LrcSearch()方法先弹出对话框,将当前正在播放的音乐文件的必要信息如:歌手名和歌曲名显示在搜索对话框的输入控件中,如果用户发现系统自动获取的信息不匹配是地,可以手动修改,然后点击确定。此时音乐播放器的lrcSearch()方法则会通过百度等搜索引擎检索歌词,检索到相应的歌词后自动下载到SD Card中,下载完毕再调用lrcShow()方法来显示歌词。
Android音乐播放器歌词匹配功能的实现,最重要的是单元模块化设计,要对整个播放器进行解剖划分出各个模块,理清各模块间关系和如何实现。音乐播放系统相对较为成熟,主要是程序播放界面的设计、播放音乐列表、歌曲添加、歌词搜索、歌词同步显示几个核心部分。而音乐播放系统的其它的功能模块,大多数都是以这几个功能模块为依据补充添加上去的,所以这些功能模块的确都是必不可少的构件,不然的话这软件就不能算是音乐播放器了。
[1]刘博.Android平台上针对UI控件的测试工具的设计与实现[D].哈尔滨:哈尔滨工业大学,2013:41-54.
[2]钟海斌.基于Android平台应用系统的GUI生成技术研究[D].昆明:云南大学,2012:148-161.
[3] Thomas Blasing,LeonidBatyuk,Aubrey-DerrickSehmidt,et. AnAndroid APPlication Sandbox System for SusPieious Soft⁃ware Deteetion[C].The 2010 International Confereneeon Malie⁃iousand Unwanted Software,2010(11):148-161.
[4]黄亚玲.基于Android的移动终端SMMI自检系统的研究与设计[D].淮南:安徽理工大学,2016:88-98.
Design and Implementation of Lyrics Matching Function of a Music Play System Based on Android
YE Gui-rui
(Guangzhou Maritime College,Guangzhou 510725,China)
The design and implementation of a music play system Based on Android platform will be discussed in this paper.This paper mainly introduces the work mode of the music play system,using the Java language and Eclipse editing tools for the devel⁃opment of the player.Will be in the process of research and development in the face of such as the lyrics match,lyrics synchroni⁃zation,the music between the switch and other issues,how to solve the problems of the method to carry out a detailed descrip⁃tion of the.Music play system can support the current popular music format(MP3,WMA),convenient features and fast lyrics syn⁃chronous matching function,enough to meet the needs of people on the music play system.
Music play;Music search;Play list;Lyrics synchronization
TP311
A
1009-3044(2017)21-0068-03
2017-06-25
叶桂锐(1983—),男,广东人,广州航海学院,计算机应用实验师,软件工程硕士,研究方向为平面设计、三维动画、计算机应用。