Android课程设计基于Android系统的音乐播放器设计与实现.docx
- 文档编号:4681923
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:18
- 大小:1.30MB
Android课程设计基于Android系统的音乐播放器设计与实现.docx
《Android课程设计基于Android系统的音乐播放器设计与实现.docx》由会员分享,可在线阅读,更多相关《Android课程设计基于Android系统的音乐播放器设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。
Android课程设计基于Android系统的音乐播放器设计与实现
课程设计报告书
课程名称:
操作系统原理
题目:
基于Android系统的音乐播放器设计与实现
2012年7月5日
课程设计任务书
设计题目:
基于Android系统的音乐播放器设计与实现
初始条件:
Linux操作系统,Android开发环境,Java编译环境,SQLite数据库
要求完成的主要任务:
主要任务:
现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器的播放功能模块,要求音乐播放器能够播放Mp3,Wav多种格式的音乐文件,能够控制播放,暂停,停止,上一曲,下一曲,能够调节音量,能播放RMVB格式的视频文件,此外,还能支持中文、英文等语言界面。
要求视觉外观美观,操作简单。
本项目是一款基于Android手机平台的音乐播放器的子模块,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。
使人们的生活更加多样化。
也使设计者更加熟练Android的技术和其它在市场上的特点
设计报告撰写格式要求:
1设计题目与要求2设计思想
3系统结构4数据结构的说明和模块的算法流程图
5使用说明书(即用户手册):
内容包含如何登录、退出、读、写等操作说明
6运行结果和结果分析(其中包括实验的检查结果、程序的运行情况)
7自我评价与总结8附录:
程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加注释;
时间安排
7月1日布置课程设计任务;分配题目后,查阅资料、准备程序;
7月2~7月4日上机调试程序、书写课程设计报告;
7月5日提交课程设计报告及相关文档。
基于Android平台的音乐播放器的播放控制功能设计
摘要Android简介:
Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。
目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
Android操作系统最初由AndyRubin开发,最初主要支持手机。
2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。
Android平台五大优势特色:
1、开放性
2、挣脱运营商的束缚
3、丰富的硬件选择
4、不受任何限制的开发商
5、无缝结合的Google应用
图Android软件体系结构图
Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。
根据Android的软件框图,其软件层次结构自下而上分为以下几个层次:
第一、操作系统层(OS)
第二、各种库(Libraries)和Android运行环境(RunTime)
第三、应用程序框架(ApplicationFramework)
第四、应用程序(Application)
1、设计题目与要求
题目:
基于Android平台的音乐播放器的播放控制功能设计
要求:
现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器的播放功能模块,要求音乐播放器能够播放Mp3,Wav多种格式的音乐文件,能够控制播放,暂停,停止,上一曲,下一曲,能够调节音量,能播放RMVB格式的视频文件,此外,还能支持中文、英文等语言界面。
要求视觉外观美观,操作简单。
本项目是一款基于Android手机平台的音乐播放器的子模块,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。
使人们的生活更加多样化。
也使设计者更加熟练Android的技术和其它在市场上的特点。
2、设计思想
要实现这个音乐播放器。
首先应该考虑到的就是他的功能,要有后台播放功能以及显示正在播放的文件和把手机中的音乐文件以列表的形式显示在手机上,这就要使用到listview类。
另外在本地歌曲列表和正在播放的歌曲之间要进行动态菜单的跳转故而想到用tabhost这个容器进行布局。
后台播放创建一个类继承service方法,在该类中使其具有播放暂停下一首上一首的功能的方法,从而是它在各个Activity之间进行跳转的时候为其他的类提供相应的方法。
创建一个新建文件类和过滤文件信息的类,用以存贮特定的文件信息和当用户改变文件夹终不改的内容的时候同步更新播放列表。
于接打电话这个问题,创建一个类进行监听,当电话进来或出去的时候调用service方法停止音乐播放并记下播放点。
对于刚接触Android开发的我们,在很多的知识点上还是不是很理解,鉴于此在制作的过程难免会遇到各种问题,解决的办法就是通过XX,goolge各种搜索引擎。
首先在开始动手构思音乐播放器界面的时候就遇到了难题,要实现动态菜单(本地音乐、正在播放的歌曲);
1、如何实现后台播放;
2、如何进行多页面之间的跳转;
3、如何进行电话监听;
4、如何将sd卡中的MP3音乐文件过滤读取到播放列表中;
5、如何自动添加更新播放列表;
3、系统结构
图3-1系统功能结构图
图3-2播放器基本控制图
在播放器运行时,主界面是服务器的歌曲列表,可以点击刷新列表,也可以点击歌曲名,开始下载歌曲,然后点击本地歌曲列表可以显示出本地的歌曲文件,点击文件名则跳转到播放界面,在播放界面可以控制歌曲的播放、暂停、停止以及返回本地歌曲列表。
4、数据结构的说明和模块的算法流程图
图4-1音乐播放器系统流程图
5、音乐播放器的详细设计与实现
5.1播放器界面设计
首先是创建一个主界面MainActivity,它使用TabHost布局,这里面的TabWidget控件控制着两个Activity的互相切换:
一个是Mp3PlayerListActivity(图5-1),这个Activity是一打开程序就显示的服务器歌曲列表。
图5-1Mp3PlayerListActivity
另一个是LocalActivity(图5-2),这个Activity是点击TabWidget控件中的“本地”按钮才会显示的本地歌曲列表界面。
图5-2LocalActivity
在LocalActivity中点击列表中的歌曲名就会调出PlayerActivity(图5-3),这个Activity就是播放音乐时的界面,其中有一些对播放器进行控制的控件。
图5-3PlayerActivity
详细设计代码见附录。
以上就是整个Android音乐播放器设计中比较重要的功能以及实现方法。
6、运行结果和结果分析(其中包括实验的检查结果、程序的运行情况)
Android的每一个可视化界面,都有其的唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取。
这样就可以形成不同的可视化界面和炫丽的效果。
播放器主界面是一个Activity,Android工程在每个activity启动的时候会首先执行Oncreate()方法,如下代码:
主界面:
6.1播放界面音轨的实现
图6-1播放器音轨SeekBar
图6-2Android系统自带SeekBar
配置文件中三个Item项依次决定了SeekBar的三层背景,从最下层的灰色到最上层的蓝色。
通过各种属性设置了SeekBar的倾斜度,两端圆半径,角度,中心位置,起始,中心和结束的颜色,游标的起始位置。
通过这些属性设置,就自定义一个如上图一的SeekBar音轨.
播放器最重要的一部分就是音轨与歌曲进度同步的实现。
音轨设置了两个TextView用来显示当前歌曲播放的进度时间和歌曲的长度(图5.3)
图6-3音轨
音轨对象SeekBar在歌曲刚开始播放的时候调用方法SeekBar.setMax(),参数传入歌曲的长度。
SeekBar.setProgress
(1)设置游标的起始进度为1。
然后程序运行如下代码:
privateRunnablethread_One=newRunnable(){//线程
publicvoidrun(){
intcurrently_Progress=seekBar.getProgress()+1000;seekBar.setProgress(currently_Progress);
currently_Time.setText(getFileTime(mplayer.getCurrentPosition()));showLrcTwo(lrc_time,lrc_word);handler.postDelayed(thread_One,1000);}};
Android的线程的开始是通过Handler类来进行的,Handler类是线程与线程之间通信的桥梁,实现Runnable接口会实现里面的run方法,当线程开始的时候,Runnable中的run方法会向Handler发一个Message消息,这样,Handler类就可以接收到run方法发送过来的不同的消息进行不同的代码处理。
这样就达到了各线程之间的通信。
要启动一个线程调用Handler的方法postDelayed(Runnable,1000)表示线程睡眠时间是1000ms。
以上代码意思是让播放歌曲的线程每隔1000ms,即每1秒对音轨的TextView重新设置时间且让进度条前进1秒的进度。
对音轨进行刷新。
这样就实现了歌词同步功能SeekBar有一个监听器,该监听器的作用是一直保持着对进度条的监听,当我们用鼠标向SeekBar的各位置进行点击时,它会自动监听其位置,进行相应的位置显示。
这也是进度条上的游标会不停的移动和歌词时间会不停的变动的原因。
6.2播放器播放、暂停、停止等功能
图6-4播放、暂停、停止功能
6.3播放列表功能
播放列表界面(如图5.5)
图6-5歌曲列表
6.4MP3歌曲添加导入
图6-6导入图
6.5数据存储方式
在播放器正常运行时,由于各界面存在相互跳转,为了避免数据在界面跳转的过程中丢失,我们需要将一些数据进行临时存储或者永久存储。
Android作为一种手机操作系统,提供了如下几种存取数据的方式:
Preference(配置)、File(文件)、SQLite数据和网络。
另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。
为了实现数据的共享,Android提供了ContentProvider组件来实现应用程序之间数据的共享
6.5.1SharedPreferences
PreferencePreference提供了一种轻量级的数据存取方法,一般数据比较少,一些简单的配置信息。
它以“键-值”(是一个Map)对的方式,将数据保存在一个XML配置文件中
使用到的接口(详细内容见文档)
android.content.SharedPreferences提供了保存数据的方法
android.content.SharedPreferences.Editor提供了获得数据的方法
以播放器中的播放模式存取为例:
(1).xml配置文件的读取
我们仍以播放模式读取为例:
当需要用到播放模式的确定时,我们将读取.Xml文件,同样用共享文件类SharedPreferences通过用方法getSharedPreferences("SET_MSG",MODE_WORLD_READABLE),并且是只读方式获得.Xml的文件内容。
SharedPreferences的对象调用方法getString("sigle_Play",null),方法返回一个String类型的值,即是我们以前存储进去的String值。
此方法当该标记不存在时会默认返回一个null值。
获得成功后我们就可以运用当前的值再对程序进行操作了。
(2).xml配置文件的存储
类SharedPreferences。
它有一个方法getSharedPreferences(参数1,参数2),参数1为写进时的标记,便于在从其中读取出来时的标记,参数2为读取模式,有只写模式(MODE_WORLD_WRITEABLE)和只读模式(MODE_WORLD_READABLE),在写之前将其置入编辑状态,用静态方法SharedPreferences.Editoreditor=sp.edit();然后对象editor可以存入一个HashMap
当写入成功时,android系统会自动在目录data/data/工程包名/shared_prefs/目录下生成一个配置文件
7、自我评价与总结
(1)通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。
开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。
而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。
(2)音乐播放器系统实现了播放器的基本功能:
播放,暂停、停止、上/下一首、音量调节、歌词显示、播放模式、歌曲搜索、文件浏览器、播放列表查询等功能。
运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。
是以Java语言编写+SQLite数据库支持+SharePreference配置文件的组合方式进行数据管理。
实现了音乐播放器的系统编程。
(3)本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是Eclipse3.5+Java语言的支持,AndroidDevelopmentTool的插件,和AndroidSDK2.1版本的全面结合,才使整个音乐播放器系统得以实现。
(4)总之,经过几个月的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,这对我以后的Android项目开发有很大的帮助。
在此论文抒写过程中,我还要感谢我的软件工程的老师给我的支持和建议。
让我能顺利的完成本次论文。
8、附录:
程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加注释;
主界面MainActivity布局文件代码:
android=" android: id="@android: id/tabhost" android: layout_width="fill_parent" android: layout_height="fill_parent" android: background="@drawable/bg1"> android: orientation="vertical" android: layout_width="fill_parent" android: layout_height="fill_parent" android: padding="5dp"> android: id="@android: id/tabs" android: layout_width="fill_parent" android: layout_height="wrap_content"/> android: id="@android: id/tabcontent" android: layout_width="fill_parent" android: layout_height="fill_parent" android: padding="5dp"/> 服务器列表界面Mp3PlayerListActivity布局文件代码: xmlversion="1.0"encoding="utf-8"? > android=" android: layout_width="fill_parent" android: layout_height="fill_parent" android: orientation="vertical"> android: id="@+id/listLinearLayout" android: layout_width="fill_parent" android: layout_height="wrap_content" android: orientation="vertical"> android: id="@id/android: list" android: layout_width="fill_parent" android: layout_height="wrap_content" android: drawSelectorOnTop="false" android: scrollbars="vertical"/> 本地歌曲列表界面LocalActivity布局文件代码: xmlversion="1.0"encoding="utf-8"? > android=" android: layout_width="fill_parent" android: layout_height="fill_parent" android: orientation="vertical"> android: id="@+id/listLinearLayout" android: layout_width="fill_parent" android: layout_height="wrap_content" android: orientation="vertical"> android: id="@id/android: list" android: layout_width="fill_parent" android: layout_height="wrap_content" android: drawSelectorOnTop="false" android: scrollbars="vertical"/> 播放界面PlayerActivity布局文件代码: xmlversion="1.0"encoding="utf-8"? > android=" android: id="@+id/playerActivity" android: layout_width="fill_parent" android: layout_height="fill_parent" android: background="@drawable/bg1"> android: id="@+id/pause" android: layout_width="wrap_content" android: layout_height="wrap_content" android: layout_x="139dp" android: layout_y="100dp" android: src="@drawable/pause"/> android: id="@+id/begin" android: layout_width="wrap_content" android: layout_height="wrap_content" android: layout_x="55dp" android: layout_y="100dp" android: src="@drawable/begin"/> android: id="@+id/nameText" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_x="0dp" android: layout_y="25dp" android: gravity="center" android: textColor="@drawable/white" android: textSize="20dip"/> android: id="@+id/stop" android: layout_width="wrap_content" android: layout_height="wrap_content" android: layout_x="227dp" android: layout_y="100dp" android: src="@drawable/stop"/> 9、参考文献 [1]张孝祥著.java就业培训教程[M].北京: 清华大学出版社,2007. [2]余志龙编著.GoogleAndroidSDK开发范例大全[M].北京: 人民邮电出版社,2009-7-1. [3]E2ECloud工作室著.深入浅出GoogleAndroid[M].北京: 人民邮电出版社,2009-08-1. [4]靳岩姚尚朗著.GoogleAndroid开发入门与实战[M].北京: 清华大学出版社,2009-07-01. [5]高昂著.支持动态语言的Android平台[M].北京: 人民邮电出版社,2009-05-07. [6]eoe.Android开发社区.2010-04-10. [7]JavaEye论坛.2010-04-15. [8]AndroidAPI文档.2010-04-10. [9]高焕堂编.Android应用框架原理与程式设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 课程设计 基于 系统 音乐 播放 设计 实现