Android本地音乐播放器的设计与实现
- 格式:pdf
- 大小:858.92 KB
- 文档页数:3
第37
卷第3
期
2021
年3
月福建电脑
Journal of Fujian ComputerVol. 37 No.3
Mar. 2021
Android本地音乐播放器的设计与实现
邓俊豪
(广东石油化工学院广东茂名525000 )
摘要当前手机应用市场上有许多音乐播放器,功能庞大但显得臃肿,还有开屏广告等降低用户体验的设计。针对目前市
场上音乐播放器应用的这种情况,本文剖析了基于Android
的移动端音乐播放器的需求功能,给出了一个基础的音乐播放器
的详细设计思路,以及应用的各个功能系统的实现流程。采用Andorid
开源的系统技术,使用Java
语言及Android studio
可
视化开发工具来实现一个本地音乐播放器应用,并留下后续更新优化以及新增功能的方向。
关键词Android
;音乐播放器;Java
中图法分类号 TP311.1 D0I:10.16707/j.cnki.fjpc.2021.03.028
Design and Implementation of Android-based Local Music Player
DENG Junhao
(Guangdong University of Petrochemical Technology, Maoming, China, 525000)
1引言
随着科技的发展,手机己成为男女老少手上的
一台闲时娱乐的终端。音乐在娱乐中占有重要的地
位。用手机来享受音乐成为一件理所当然的事情[1]
。
当前市场上岀现了许多音乐播放器,如网易云音
乐、QQ
音乐、酷狗音乐等[2]
。不同的手机厂家都
自带音乐播放器,但是手机音乐播放器应用虽功能
集合庞大,在线曲库音乐多,且各种开屏广告、付
费会员等应接不暇,令应用略显臃肿。虽然是开发
者在商业模式中做岀的利益与初心的平衡的选择,
但是对大部分用户来说,很多功能基本都是用不上
的,过多的广告亦是影响到用户的使用体验[3]
。对
于以上情况,本文设计实现本地音乐播放器拥有播
放本地音乐这一最基础的功能,同时为时常伴着音
乐入睡的用户设计定时暂停功能。虽功能简单但能
最简易地享受到音乐的乐趣。
2设计方案
2.1
开发环境在 Win10 64
位操作系统下,使用Android
Studio3.4
版本,创建Android
工程项目,进行相关
配置(API
, SDK
等设置)后,使用Java
语言进行
程序开发,使用xml
进行页面布局设计。
2.2
设计思路
图1
系统功能结构图
实现一个播放器的功能,首先要实现最基础的
获取音乐文件的功能。这就要求在用户打开应用时
向手机系统获取一定的权限用来读取手机设备中
的文件,不是首次打开就不需要获取权限。音乐播
放器首先要搜索本地存储器中所有的音乐文件[4]
。
邓俊豪,男,1999年生,本科,主要研究领域为计算机软件开发。E-mail: ***************
。90
邓俊豪:Android
本地音乐播放器的设计与实现第3
期
获取音乐文件的格式选择比较流行的MP3
、WAV
、
AAC
等格式。获取到音乐文件后以列表形式展示在
应用中,方便用户选择。同时实现停止、暂停、播
放以及音乐切换等各种形式的控制[5]
o开始播放音
乐后要给予用户反馈,显示当前播放的音乐的名
字、时间,通过拖动时间条选择播放的时间点。在
基础的功能上还要增加对音乐列表的控制,如顺序
播放、列表循环、单曲循环、随机播放这四个功能,
最后加入定时暂停功能。系统的功能结构图如图1
所示。
3功能实现
3.1
权限申请
实现GetPower
类,在打开应用时,对手机的
系统版本进行判断。当手机系统api
大于23
时,
才有必要去判断权限是否获取,然后检查该权限是
否己经获取,如果没有被授予该权限,则通过弹岀
框提示用户请求获取权限。如果用户选择否并点击
了不再提醒,则不能再使用该应用。因此增加申请
权限的回调方法,提示用户到手机系统的应用设置
界面手动开启授予权限,并跳转到该界面。
3.2
音乐列表
获取读取手机设备中的文件的权限后,通过
ContentResolver
(内容接收者)获得本地音乐列表,
获得ContentResolver
的对象,查询音乐并返回至
cursor
保存。循环读取所有可读取的音乐文件格式
的音乐,获取音乐文件的歌名、文件路径等信息,
将查询的信息保存到音乐实体类中,然后将每一首
歌都保存到音乐集合List
中。该类中定义三个方法。
getMusicData():
该方法扫描系统里的歌曲的相
关信息,并将其放在list
集合中,该方法会返回一
个有音乐信息的list
集合。
formatTime(int time)
:调用该方法用来格式化
获取到的时间duration
。由于取得的时间duration
是以毫秒为单位的,需要进行转换。
getAlbum(String mediaUri)
:该方法需要一个 uri
地址,也就是音乐的存放地址path
,将path
地址传
入后可根据音乐地址获得信息,并返回给调用方。
3.3
播放服务
音乐的播放暂停功能基于Service
开发,创建
MusicService
类并在此类中动态注册广播接收者,
用于实现活动和服务的通信,以便在活动中控制音
乐的播放状态。重写onCreate()
方法用于在第一次 服务创建的时候获取到正在活动中的音乐的歌名
与状态。重写onReceive()
方法作为服务的广播接收
者,点击播放/
暂停按钮后,如果是正在播放,则暂
停音乐,反之则播放音乐,同时发送服务中正在播
放 的 音 乐 的 歌 名 与 状 态 到 界 面 上 。 重 写
onStartCommand()
方法用通知将服务变成一个前台
服务,通过广播的方式实现自定义通知里的按键功
能实现控制音乐的播放状态,在方法中注册广播接
收器用于接收通知按键发岀的广播。定义
updateNotification()
方法用于改变通知的界面显示。
每当音乐信息发生变化时就调用该方法对通知界
面进行更新。最后重写onDestroy()
方法在服务销毁
时,释放相关资源。
3.4
适配器
创建适配器MusicAdapter
类,有参构造方法
MusicAdapter(List oList)
用于音乐文件的
相关数据传入。重写getltem()
、getCount()
、
getltemld()
三个方法为各自的子项设置相应的数
据。定义内部类 ViewHolder
继承RecyclerView.
ViewHolder
,用于获取到子项布局的各部件实例。
3.5
播放功能
在MainActivity
中调用MusicService
开启并绑
定服务,用于控制音乐播放,同时调用MusicUtils
工具类的getMusicData()
获取本地音乐信息,并用
List
数组进行接收。然后foreach
遍历List
数组并将
数据添加到MusicList
中。重写onDestroy()
方法在
活动销毁时对服务进行解绑和停止线程。
实例化四个播放模式的按钮控件,为四个播放
模式添加对MusicList
的控制方法,通过switch()
方
法判断选择播放模式。退岀按钮控件,设计为按一
次提示“再按一次退岀应用”的二次确认退岀,以
防误触。播放/
暂停按钮控件以及上一首下一首按钮
控件,把播放/
暂停两个按钮合并为一个,为目前音
乐服务所处的状态做适配,正在播放则显示为暂停
式样,正在暂停则显示为播放式样。时间点/
总时长
显示框控件,搭配使用SeekBar
(拖动条)控件可
以直观地展现音乐播放的进度。
接着为各个控件添加点击事件,如四个播放模
式的点击后在界面上给予显示提醒、播放/
暂停、上
一首下一首按钮调用对应的方法等。定义play()
方
法,点击按钮后,默认选中列表中的第一首音乐进
行播放,通过ifelse
判断把暂停也整合到此方法下。
上一首下一首按钮则通过get()
方法得到List
中的上
2021
年福 建 电 脑91
一项下一项,当前播放的音乐为第一首音乐的时候
点击上一首,则跳转到播放列表的最后一首并进行
播放。为SeekBar
控件添加拖动、点按事件,根据
用户拖动的进度,把进度发给Service
(服务),告
诉服务将播放的音乐按照拖动条的进度比例进行
同步播放。
定义 ServiceConnection
变量并重写
onServiceConnected
和 onServiceDisconnected
两个
方法实现活动与服务的绑定状态进行相应的操作。
定义一个线程用于帮助Handler
实时更新UI
,让线
程每过500
毫秒就更新一次,取得服务正在播放的
音乐的position
参数发送给Handler
。使用Handler
接收线程发岀的消息即position
,根据position
判断
歌曲信息是否发生改变,通知是否要进行数据更
新。若需要更新,则调用initMediaPlayer()
方法对播
放界面的UI
进行设置。
4应用优化
图2
音乐播放器应用的主界面拉菜单栏,把退岀按钮的控件,定时暂停的按钮控
件放到侧拉栏中,又增添一批点击事件为空的按钮
控件,为后续更新优化留下一定的空间。
4.2
功能优化
定 时 暂 停 功 能 通 过 new Thread(new
Runnable())
创建子线程并重写run()
方法。通过
Thread.sleep()
方法,对用户输入的时间进行获取,
待倒计时完成后执行play()
方法,因为当前是播放
状态,执行后则变成暂停状态。
完成后的音乐播放器应用的主界面如图2
所
示。
5结束语
本文剖析了基于Android
的移动端音乐播放器
的需求功能,给岀了应用的详细设计思路,以及应
用的各个功能系统的实现的流程,为后续优化留下
空间,留待进一步加深学习后的功能更新,比如界
面的进一步美化、歌词显示、音乐专辑图片的获取
展示、连接在线音乐库进行在线播放、使用音乐推
荐算法根据用户音乐喜好进行个性化推荐等⑹。
万事开头难。实现一个基础的音乐播放器应
用,对一个应用实现的过程中遇到的各种问题和解
决方法进行详细地分析,获取实践经验。这对以后
的程序设计与项目开发很有帮助。
参考文献
[1] 黑马程序员.Android移动开发基础案列教程•北京:人民邮电出版社,
2017
[2] 余安乾,陈伯亨•基于MFC的音乐播放器的实现.电脑知识与技
术,2020,16(30):80-81
[3] 卓星辰.APP开屏广告隐喻性对广告受众态度的影响研究[硕士学位
论文]•哈尔滨工业大学,哈尔滨,2020
[4] 张晓琴,张庚.基于Android平台的音乐播放器设计与实现.软件,
2018,39(9):113-116
[5] 来学伟.基于移动端的音乐播放器的设计与开发.电脑编程技巧与维
护,2019(11):59-60
[6] 金蕾.个性化音乐推荐算法的研究与实现[硕士学位论文].山东大学,
济南,2017
4.1
界面优化
考虑到后续想增添定时暂停功能而发觉一开
始设计时选用的是 Android Studio
自带的Basic
Activity
模板,但是整个界面己经填满,
故添加侧