基于Android的音乐播放器设计与实现

2017-12-28 23:21张琦
电子技术与软件工程 2017年14期
关键词:播放器队列按钮

文/张琦

基于Android的音乐播放器设计与实现

文/张琦

本研究课题属于移动互联网平台软件开发领域,开发基于Android平台的手机音乐播放器应用软件。该应用软件页面友好,功能完善,支持MP3、WMA等多种格式的音频文件,主要实现文件扫描、暂停、歌词同步、上一首、下一首、音量调节、后台播放等功能,经过多轮测试,能够在安卓手机上稳定运行。

Android 音乐播放器 软件开发

1 需求分析

1.1 功能需求分析

作为一款运行在手机上的音乐播放器,必须具备良好的用户界面,且界面须简单明朗易于操作。因此音乐播放器的需求可以从音乐播放器的界面来划分。一般来讲,音乐播放器的需求主要分为主界面需求、播放界面需求。

1.1.1 主界面需求

本地列表按钮:可打开本地播放列表。应用程序从主界面切换到本地播放列表界面,可对列表中的音乐进行操作。

退出按钮:可退出音乐播放器。

1.1.2 播放界面需求

上一曲/暂停/播放/下一曲按钮:用户点击上一曲或下一曲按钮,音乐播放器切换到上一曲或下一曲,并播放新的歌曲,用户点击播放或暂停按钮,音乐播放器播放或暂停。

歌词显示:播放音乐的同时可同步显示歌词。

1.2 性能需求分析

一款优秀的手机软件需要做到良好的用户体验,主要体现在以下两点:

1.2.1 界面友好,易于操作

主界面和播放界面要做到界面设计友好,操作简单,设计合理,UI设计要能让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。

1.2.2 响应迅速

能够迅速且准确的处理用户的各种请求,各项功能切换要做到不延迟、不卡顿,处理业务逻辑较为复杂或响应时间较长的功能时,需要给出提示,让用户知道程序还在运行。

2 系统设计与实现

2.1 系统功能设计

通过对音乐播放器各项功能的需求分析,主要包含以下功能:

2.1.1 播放列表模块

首次运行软件时,软件将自动访问扩展卡中的音乐文件和LRC文件,然后将音乐文件的信息填充到播放列表中。当用户点击音乐时,音乐会自动播放,同时显示LRC歌词,用户也可以进行各种操作,比如上一曲、删除音乐等。

2.1.2 歌词显示模块

播放音乐时,可以同步显示歌词,拖拽进度条,歌词可做到实时跟随。

2.1.3 功能菜单模块

实现歌曲列表的选择,可以选择音乐列表,以及扫描内存、退出等功能。

2.2 系统编码与实现

根据需求分析,音乐播放器的功能由播放列表模块、歌词显示模块、功能菜单模块组成。

2.2.1 播放列表模块

首次运行软件时,进入音乐播放列表界面,该界面使用了ListView列表控件、SeekBar音轨控件、ToggleButton按钮控件、TextView文本显示控件。

(1)本地列表的实现。此功能需要调用setCurrentList(int which)方法,当用户点击音乐列表上的音乐文件时,音乐自动播放。点击时需要调用OnclickListener方法,并在Oncreate()中注册此方法。

(2)上一曲/暂停/播放/下一曲功能。新建PlayerActivity类,在该类中对选中的MP3文件进行播放、暂停和停止操 作。 在LocalMP3ListActivity类 中 覆 写onListItemClick()方法,利用intent对象来传递得到的MP3文件(即MP3Info对象)到PlayerActivity类中。

2.2.2 歌词显示模块

在GeCiView中通过intent传递选中的按钮,启动PlayerService,实现在Service中执行播放、暂停和停止。然后编写对LRC文件进行处理的类LrcProcesser,将时间和歌词分别读取到一条单独的队列(Queue)中,再将两条队列放入List中。在DownloadServive的run()函数中实现对LRC文件的下载,同 时 在 WriteSdcard里 对 MP3Info中 的 getLocalMP3Info()方法中对lrcName和lrcSize进行相应设置。最后在PlayerActivity中,通过Handler控制run函数反复执行不断比较已经播放的时间与通过LrcProcesser处理后的时间队列中的时间,在合适的时间取出时间队列和歌词队列中对应的队列元素,将歌词队列显示在lrcText中,从而实现歌词的显示。

2.2.3 功能菜单模块

(1) 扫 描 功 能。 新 建 GetMusic类, 首 先 定 义array并 将 其 实 例 化,接 着 调 用 ArrayList中 的getLocalMusicArray()方法,然后再实例化Cursor。Cursor是每行的集合,然后Cursor调用moveToFirst()方法,使用moveToFirst()可以定位第一行,再建立while循环,判断游标是否指向最后一行的位置,如果不是,那么Cursor将遍历扩展卡里的所有内容,直到到达最后一行停止。

(2)退出功能。用户点击退出按键后可以退出音乐播放器。该模块在Activity中重写onKeyDown方法,可以监听到退出键,也可直接调用OnBackpress方法实现对退出键的监听。

3 结语

本文操使用的是Android基于Windows的操作系统;支持Android2.2以上版本;开发环境是Eclipse 4.3.2和ADT 22.3。该播放器由由播放列表模块、歌词显示模块、功能菜单模块组成,能实现基本的上一曲/暂停/播放/下一曲功能,以及扫描、歌词显示功能,系统界面设计友好,操作简单,设计合理,符合音乐播放器的基本需求。

[1]毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,2010:34-45.

[2]陈璟,陈平华,李文亮.Android内核分析[J].广东:广东工业大学计算机学院,2012:112-115.

[3]高昂.支持动态语言的Android平台[M].北京:人民邮电出版社,2011:12-23.

作者单位 武汉华夏理工学院 湖北省武汉市 430223

张琦(1989-),男,硕士学位。研究方向为软件工程、数据库技术。

猜你喜欢
播放器队列按钮
队列里的小秘密
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
基于STM32的MP3播放器设计
Moon ACE播放器/放大器一体机
在队列里
丰田加速驶入自动驾驶队列
播放器背板注塑模具设计