嵌入式基于Android的音乐播放器设计与实现毕业设计论文Word下载.docx
- 文档编号:19924341
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:26
- 大小:740.43KB
嵌入式基于Android的音乐播放器设计与实现毕业设计论文Word下载.docx
《嵌入式基于Android的音乐播放器设计与实现毕业设计论文Word下载.docx》由会员分享,可在线阅读,更多相关《嵌入式基于Android的音乐播放器设计与实现毕业设计论文Word下载.docx(26页珍藏版)》请在冰豆网上搜索。
本设计的实现的这主要功能是播放MP3等音乐文件,并且能够控制播放器播放、暂停、停止、上一曲、下一曲。
界面简单,操作简单。
本项目是一款基于Android手机,平台的音乐播放器,使Android手机拥有个性的播放器,让手机主人随时随地处于音乐的旋律中。
使人们的生活更加多样化。
也使设计者更加熟练Android的技术和其它在市场上的特点。
1.2编写目的
现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放MP3文件格式的播放器,并且可以从服务器下载歌曲,控制播放,暂停,停止,音量调节,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。
本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更加生动灵活化,与人们更为接近,让手机主人随时随地处于音乐旋律之中。
使人们的生活更加多样化,也使设计者更加熟悉基于Android平台的应用布局及开发模式的特点,为以后实现更复杂的应用打好基础。
第二章Android应用软件开发基础
2.1Android的基本介绍
Android一词的本义指“机器人”同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称。
该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
Android是基于Linux内核的软件平台和操作系统。
早期由Google开发,在华注册商标名为“安致”,后由开放手机联盟(OpenHandsetAlliance)开发。
它采用了软件堆层(softwarestack,又名以软件叠层)的架构。
主要分为三部分。
低层以Linux内核工作为基础,只提供基本功能,其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。
另外,为了推广此技术,Google和其他几十个手机公司建立开发手机联盟。
Android在未公开之前常被传闻为Google电话或gPhone。
大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。
到了2010年1月,Google开始发表自家品牌手机电话的NexusOne。
2.2Android应用开发语言
Java是Android上的主流开发语言,各种支持也最完善。
Android发布的API和SDK也都主要是面向Java开发人员的。
我们的播放器实例也是用Java开发的。
2.3Android应用程序组件
Android应用程序最大的一个特点就是每个应用都由若干组件构成。
而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限)。
例如假设我们需要编写一个内嵌有网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的ChromeLite浏览器组件。
又如假设我们编写了两个应用程序,其中一个程序中有列表显示图片的组件,那么我们在另外一个应用程序中就可以使用该组件,而不需要再编写该功能。
也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动。
这就要依靠组件来实现。
Android应用程序的组件有以下四种:
1.Activity
一个activity实际上表现出来的就是一个程序的界面。
这个界面可能有许多种不同的形式,比如有列表形式,有文字形式,有图像格子等形式。
一个应用程序也可能有不止一个activity。
比如一个短消息的程序,需要有列表显示所有消息的activity,还至少需要一个编辑短消息的activity(界面),还可能需要设置、菜单等界面。
每个activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其它窗口之上(如Android中的Toast信息)。
Activity中显示出来的内容其实是由view堆叠形成的,view是由View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的activity。
我们可以用Activity.setContentView()方法来设置一个activity中所要显示的view。
2.Service
service是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的“服务”一样,Android上的service也是运行在后台的,运行时间可以从系统启动到系统关闭为止。
对于许多应用程序来说,service组件是至关重要的。
以下载管理器为例,用户肯定希望能够在切换到其它程序时仍然在后台进行下载,这就需要用到service完成下载工作。
而显示下载进度、已下载文件等信息则由activity完成,同时我们还希望能控制下载过程,如停止、继续等,这就需要activity与service之间进行通信。
Android允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制后台service的行为。
3.Broadcastreceiver
Broadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载完毕等。
Broadcastreceiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其它组件去处理广播消息。
它可以启动一个activity来同用户交互,也可以使用NotificationManager向用户发出通知。
NitificationManager的通知形式有许多种,比如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息。
4.Contentprovider
contentprovider是一种为其它应用程序提供数据的组件。
这些数据可以保存在文件中,也可以保存在SQLite数据库中,还可以以其它任何有效的方式保存。
ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。
其它应用程序在需要使用这些数据时,可以用ContentResolver对象,使用其中的方法。
ContentResolver可以与任何contentprovider交互,获取其中的数据。
只要需要某个组件,Android就会尽力保证它的可用:
如果该组件还没启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。
2.4AndroidManifest.xml文件
AndroidManifest.xml是每一个应用都需要的文件,位于应用根目录下,它描述了程序包的全局变量,包括暴露的应用组件(activities,services等等)和为每个组件的实现类,什么样的数据可以操作,以及在什么地方运行。
AndroidManifest.xml文件是一个结构化的XML文件,它除了包含有各个组件的信息,还包括许多其它的信息,它的基本样式如下所示:
<
?
xmlversion="
1.0"
encoding="
utf-8"
>
<
manifest...>
application...>
activityandroid:
name="
com.example.project.FreneticActivity"
android:
icon="
@drawable/small_pic.png"
label="
@string/freneticLabel"
...>
/activity>
...
/application>
/manifest>
不难看出,name,icon,lable这些属性就分别指activity的名称、图标、标识。
我们通过manifest描述程序的信息,Android系统就能读取出来并产生相应的行为。
第三章搭建Android开发环境
3.1安装JDK
由于Android开发是基于Java的基础上的,所以我们必须得安装JDK(JDK下载地址:
1.右击计算机---属性---高级系统设置---高级---环境变量,新建“系统变量”,设置变量名:
“java_home”。
变量值:
“C:
\ProgramFiles\Java\jdk1.7.0_02”(视个人安装路径而定)。
2.找到变量名为path的项,双击,在变量值后面添加:
“;
%JAVA_HOME%\bin;
”,
3.新建“系统变量”变量名:
“classpath”,变量值:
“.;
%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\tools.jar;
”配置完成后,重启可以在cmd下输入java或者javac测试。
3.2安装Eclipse
Eclipse是我们以后在Android开发时使用的开发平台,它集成了很多功能以及插件,在开发的过程中便于我们使用,在官网(http:
//www.eclipse.org/downloads/)可以下载到对应系统以及功能的安装包,在安装提示安装完成后并且完成了JDK的安装后即可正常使用。
3.3安装SDK
SDK(SoftwareDevelopmentKit)初始包中有开发Android程序所要用到的工具,它包括了从编译到运行Android应用程序所需要的各种工具。
安装时可以根据自己的需求选择安装相应的版本。
3.4安装ADT
按照2.3.4安装完SDK初始包后,就可以开始开发Android应用程序了,但是为了更高效地进行开发,Android团队推出了AndroidDevelopmentTools(ADT)。
ADT是目前开发Android应用最有效的工具,它是一个Eclipse插件,支持Eclipse3.4及3.4以上的版本。
以Eclipse3.5(Galileo)为例,安装过程如下:
1.打开Eclipse,选择Help>
InstallNewSoftare。
2.在AvailableSoftware对话框中,点击Add...。
3.在弹出的AddSite对话框中,任意填写一个名字到Name一栏。
在Location一栏,则填入这一URL:
“https:
//dl-
4.返回到AvailableSoftware窗口后,就能看到列表中出现了"
DeveloperTools"
,选中它前面的复选框,再点击“Next”,就会开始下载安装ADT的各种组件了。
5.安装完毕后将弹出窗口显示ADT相关的各种信息以及许可协议,点击“Finish“即可完成安装。
6.重新启动:
Eclipse。
3.5创建AVD
在安装好JDK,Eclipse,SDK,ADK之后我们就可以进行Android项目开发了,但是在开发的过程中我们经常需要运行、调试我们所开发的软件,这就需要用到AVD(AndroidVirtualDevice),也就是Android虚拟机。
1.打开Eclipse。
2.点击OpenstheAndroidVirtualDeviceManager图标按钮。
3.在弹出的窗口中点击New新建一个Android虚拟机。
4.在弹出的新建虚拟机窗口中Name一栏填上虚拟机的名称(一般与虚拟机的版本号相同,便于区分)。
5.在Target一栏选择一个Android虚拟机版本(如Android2.2或Android2.1)。
6.在SDCard下的Size一栏填上我们要设定的SD卡容量大小。
7.点击CreateAVD,这样我们的一个Android虚拟机就创建好了。
第四章系统的总体设计
软件功能设计是使整个软件能基本实现音乐的播放、上一首、下一首、暂停等功能能让用户通过本软件欣赏音乐。
在线音乐浏览和下载背景皮肤的切换等功能更好的增强用户体验。
4.1设计思想
(1)将系统分成几个相对独立的模块。
(2)分层的模块化程序设计思想,整个系统采用模块化结构设计。
作为应用程序有较强的可操作性和扩展性。
(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。
4.2系统功能结构图
根据上述需求分析,本Android版音乐播放器可分为一下几个模块:
图4.2.1播放器基本功能
图4.2.2播放清单列表
图4.2.3系统流程图
功能类别
子功能
播放列表
播放列表菜单
退出播放
从扩展卡寻找歌曲
歌曲菜单
播放->
进入播放界面
删除->
数据库同步更新
重命名->
向上、下移动->
播放界面
播放
播放歌曲->
线程启动->
时间更新
暂停
暂停歌曲->
线程暂停->
时间暂停
停止
停止歌曲->
线程停止->
时间停止
上一首
播放列表索引变化->
寻找上一ID歌曲
下一首
寻找下一ID歌曲
播放界面菜单
返回到播放列表
返回到主菜单
退出播放器
隐藏播放界面
主菜单
退出程序
程序退出
进入播放列表
显示播放列表
表4.2.1系统功能表
图4.2.4音乐播放器E-R图
图4.2.5音乐播放器菜单结构图
第五章音乐播放器的详细设计
5.1项目UI篇
1.先实现播放页面的UI设计(包括控制按钮和专辑图片)布局代码main.xml
2.播放列表的实现布局代码playlist.xml
基本效果如下图:
其中播放按钮采用xml文件,在按下和得到焦点的时候会做相应的改变
selector
xmlns:
android="
itemandroid:
state_focused="
true"
drawable="
@drawable/desktop_next_pressed"
/>
state_selected="
state_pressed="
@drawable/desktop_next"
/selector>
5.2开机动画页面的设计
5.2.1设计步骤
1.准备2个动画xml文件log.xmllog_two.xml
2.当动画结束时启动另外一个activity
3.动画特效是两个imageView同时采用淡入,旋转和,缩放的特效
调用动画的方法代码
Animationanimation=AnimationUtils.loadAnimation(Logo.this,R.anim.logo);
5.2.2效果图
5.3基本代码的编写
5.3.1在Service里定义一系列关于播放状态的常量
publicstaticfinalintCMD_DEFAULT=-1;
//默认
publicstaticfinalintCMD_START=0;
//开始
publicstaticfinalintCMD_PAUSE=1;
//暂停
publicstaticfinalintCMD_RESUME=3;
//继续播放
publicstaticfinalintCMD_NEXT=4;
//下一首
publicstaticfinalintCMD_PREV=5;
//前一首
publicstaticfinalintCMD_SEEK=6;
//移动到某一播放位置
publicstaticfinalintCMD_JUMP=7;
//选择列表歌曲播放
publicstaticfinalintSTATUS_PLAYING=0;
//播放状态
publicstaticfinalintSTATUS_PAUSED=1;
//暂停状态
publicstaticfinalintSTATUS_STOPPED=2;
//停止状态
5.3.2注册广播接收以及定义广播的action
publicstaticfinalStringMUSIC_CONTROL="
MiniPlayer.ACTION_CONTROL"
;
publicstaticfinalStringUPDATE_STATUS="
MiniPlayer.ACTION_UPDATE_STATUS"
publicstaticfinalStringUPDATE_TIME="
MiniPlayer.ACTION_UPDATE_TIME"
publicstaticfinalStringUPDATE_INFO="
MiniPlayer.ACTION_UPDATE_INFO"
在onCreant里注册广播
//注册Receiver--可以XML注册,也可以代码注册。
代码注册,当程序退出,相关广播也就无效了
doCommand=newCommandReceiver();
IntentFilterfilter=newIntentFilter();
filter.addAction(MUSIC_CONTROL);
registerReceiver(doCommand,filter);
注意:
在结束时解除广播的注册
publicvoidonDestroy(){
unregisterReceiver(doCommand);
super.onDestroy();
saveStatus();
}
5.3.3写发送广播(前歌曲的信息及状态)的一些方法
//发送更新的播放状态
privatevoidupdateStatus(){…}
//发送更新的歌曲信息
privatevoidupdateInfo(){…}
//发送跟新的播放时间
privatevoidupdateTime(){…}
5.3.4播放控制代码的编写
Init()方法主要是初始话音乐数据
其次就是在广播里面调用相应的方法
Play()pause()previce()next()
最后注意:
在manifest中注册service
serviceandroid:
.service.MusicService"
/service>
5.4主页面的代码实现
5.4.1初始化页面的一些基本控件
写3个广播接收的BroadcastReceiver
分别接收当前歌曲的信息状态以及播放时间
privateStatusUpdateReceiverdoStatusUpdate;
privateTimeUpdateReceiverdoTimeUpdate;
privateInfoUpdateReceiverdoInfoUpdate;
在oncreat
这些BroadcastReceiver用于更新页面歌曲当前信息
接下来是各个按钮的点击事件
publicvoidbtclick(){…}
5.4.2Seekbar的更新与监听
首先在service里写更新进度条的方法
updateprogress(){…}
方法主要就是开辟一个线程每隔一秒钟更新一次当前时间
并且在方法中实现MediaPlayer的监听
当一首音乐播放完成时,去播放下一首
然后就是在activity里对SeekBar的监听拖拽到某一位置播放
核心代码
seekbar.setOnSeekBarChangeListener(newOnSeekBarChangeListener()
if(isEnable==false&
&
Math.abs(prog-progress)>
=5){
progress=prog;
Intent
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 基于 Android 音乐 播放 设计 实现 毕业设计 论文