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

发布时间:2019-04-13 21:25:53

在如今这个生活节奏越来越快的社会,科技也随之发展的越来越智能化。而手机的智能化就是其中体现的一个方面,现在市场上比较主流的手机系统就是Android,苹果和w8Android是一个开源的系统,它底层是基于Linux的操作系统。

本毕业设计的音乐播放器采用了Android开源系统技术,利用Java语言和EclipseJDK编辑工具对音乐播放器进行编写。同时也给出了比较详细的系统设计过程、部分界面图及主要功能运行流程图,本设计还对一些架构的和界面的高度过程中遇到的问题和解决方法进行了详细的讨论,还有一些开发过程中遇到的错误问题进行了举例。该音乐播放器集播放、暂停、停止、上一首、下一首、歌词显示等功能于一体,有良好的性能,炫酷的播放界面。能在Android手机系统中能独立运行。该播放器还拥有对手机文件浏览器的访问功能、歌曲播放模式(单曲循环,单曲循环,顺序循环,顺序播放,随机播放)、以及歌词开闭状态等比较人性化的设置.该音乐播放器的名称是:“旋风播放器“,名字就和它的风格一样。

关键词Linux操作系统;Android;流程图;音乐播放器;开源系统


Abstract

In this increasingly fast pace of life society, science and technology also will be the development of more and more intelligent. The intelligent phone which reflects one aspect of the market is now more mainstream phone system is Android, Apple and W8. Android is an open source system, it is the underlying Linux-based operating system.

The music player of the graduate design uses the Android open source technology, the use the Java language and EclipseJDK of editing tools to write the music player. But also gives a more detailed system design process, part of the interface map and main functions of a flowchart of the operation, the design of a high degree of process architecture and interface problems encountered and solutions are discussed in detail, as well as some development process errors encountered examples. The music player is set to play, pause, stop, previous one, the next song, lyrics display and other functions in one, good performance, cool player interface. Android mobile phone system can run independently. The player also has access to the phone file browser function, song playback mode (single cycle, single cycle, order cycle, the order of play, random play), as well as the opening and closing lyrics state humane set the music the name of the player: "whirlwind player", the name and its style.

Key words: Linux operating system; Android; flowchart; music player; open source system


毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

名:       日  期:       

指导教师签名:        日  期:       

使用授权说明

本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:        日  期:       


学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。

作者签名: 日期:

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名: 日期:

导师签名: 日期:


1.设计(论文)的内容包括:

1)封面(按教务处制定的标准封面格式制作)

2)原创性声明

3)中文摘要(300字左右)、关键词

4)外文摘要、关键词

5)目次页(附件不统一编入)

6)论文主体部分:引言(或绪论)、正文、结论

7)参考文献

8)致谢

9)附录(对论文支持必要时)

2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:

1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写

2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画

3)毕业论文须用A4单面打印,论文50页以上的双面打印

4)图表应绘制于无格子的页面上

5)软件工程类课题应有程序清单,并提供电子文档

5.装订顺序

1)设计(论文)

2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订

3)其它


随着科技的进步,手机的功能也不断的得到丰富,从最早的“大哥大”到现在的商务PDA手机,智能手机,音乐手机等等,功能也从单纯的打电话发展到了发短信,听歌,上网,玩游戏....手机和我们生活的联系越来越紧密,手机的功能也是很多人们关注的焦点。

目前手机的音乐播放功能已经是大家比较关注的一个部分了,不少在人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也都不输于传统音乐播放器,而且还具有网上听音乐功能,所以开发一款受欢迎的手机音乐播放软件是具有良好的市场和应用前景的。

一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放软件,通过软件可以对音乐欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以网上就出现了各种各样的手机音乐播放软件,来满足不同用户的不同要求。不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是googleandroid手机平台,所以本课题就致力于开发出一款基于android手机平台的音乐播放器,来满足用户的使用需求。


第一章 系统需求分析

1.1 功能需求(用例图分析)

根据项目所要达到的目标,从而我们可获得项目系统的基本需求,以下是从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求

以下分别描述:

111 播放器的基本控制需求

1.1 播放器基本控制图

112 播放友好性需求

word/media/image2_1.png

1.2 播放器设定

113 功能需求(时序图)分析

音乐播放器的时序图分析如()

1.2 系统结构图和流程图

(1)音乐播放器的系统流程图(图1.2.1

1.2.1 流程图

2)播放器功能表

1.2.2 系统功能结构图

1.3播放器系统界面需求

播放器界面要求合理布局,颜色炫丽,控制按钮都比较友好,为了该音乐播放器的炫丽,图片素材多数为自己从网上找的(图2.6

1.3.1 界面图

1.4 系统性能需求

根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求:

(1)当要求歌曲播放时,程序响应时间最长不能超过5

(2)当要求歌曲暂停时,程序响应时间最长不能超过5

(3)当要求歌曲停止时,程序响应时间最长不能超过5

(4)当要求歌曲上/下一首时,程序响应时间最长不能超过5

5)当要求进行歌曲列表时,程序响应时间最长不能超过5

1.5 运行环境需求

(1)操作系统:Android手机基于Linux操作系统

(2)支持环境:Android 2.3 - 2.3.3版本

(3)开发环境:Eclipse 3.6.2 ADT 16

第二章 Android数据库设计

数据结构组织和数据库文件设计要根据不同用途,使用要求等,来决定数据的整体组织形式等一系列问题。

数据库,顾名思义,是存放数据的仓库。只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。数据库中的数据按一定数据模型组织、描述和存储,具有较小的重复度、较高的数据独立性和易扩展性,并且可以被在一定范围内的各种用户共享。在涉及数据库的软件开发中,需要根据有待解决的问题性质、规模,以及所采用的前端程序创建工具等,做出合适的数据库类型选择。

2..1 数据库及字段属性设计

2.1.1 字段设计(表、图)

file_table 主要是保存歌曲id、歌曲名字、歌曲大小、作者。

字段说明:music_id 歌曲id号, music_name 歌曲名字, music_size歌曲大小,music_singer歌曲作者(表2.1、图2.1.1

Android自带一个MediaStore封闭类 专门来存储媒体信息

通过Uri EXTERNAL_CONTENT_URI 来访问SDcard中的歌曲详细信息。

存放媒体信息如NAME(标题)SINGER(歌曲作者)、SIZE(大小 )(表2.2、图2.1.2

2.1

2.2

2.1.1 歌曲列表

2.1.2 歌曲详细

2.1.2 音乐播放器E-R

音乐播放器 E-R(实体-联系:entity-relation图)图(3.1.3)

3.1.3 E-R

2.2 数据库连接

这里将介绍如何进行Android数据库连接,Android中自带SQLite数据库,这是一个十分小型的数据库,这样正适合Android这种移动平台使用。

Android数据库存储的位置在data/data/<项目文件夹>/databases/目录下 Android是利用ContentProvider作为内容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。通过Context.getContentResolver()方法直接对数据库进行操作。程序中数据库类为DBHelper extends SQLiteOpenHelper(继承关系),内容提供类DBProvider extends ContentProvider(继承关系)

2.2.1 创建数据库

Android 提供了标准的数据库创建方式。继承SQLiteOpenHelper ,实现onCreate onUpgrade 两个方法,有个好处就是便于数据库版本的升级,连接数据库的算法如下:

public class DBHelper extends SQLiteOpenHelper {

public DBHelper(Context context) {

super(context,Constant.DATABASENAME, null, Constant.VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

String sql="create table "+Constant.TB_MUSIC+"(music_id integer primary key autoincrement,music_name text,music_length text,music_singer text)";

db.execSQL(sql);

db.execSQL("insert into "+Constant.TB_MUSIC+" values(null,'in spring','03:36','汪峰')");

db.execSQL("insert into "+Constant.TB_MUSIC+" values(null,'not so simply','03:36','黄小琥')");

db.execSQL("insert into "+Constant.TB_MUSIC+" values(null,'dont cry','03:36','Guns and Roses')");

db.execSQL("insert into "+Constant.TB_MUSIC+" values(null,'cry on my shoulder','03:46','欧美群星')");

db.execSQL("insert into "+Constant.TB_MUSIC+" values(null,'Lenka-Trouble Is A Friend','04:56','Lenka')");

db.execSQL("insert into "+Constant.TB_MUSIC+" values(null,'love is simple','03:56','陶喆')");

db.execSQL("insert into "+Constant.TB_MUSIC+" values(null,'as long as you love me','03:43','后街男孩')");

db.execSQL("insert into "+Constant.TB_MUSIC+" values(null,'my love','04:24','西城男孩')");

db.execSQL("insert into "+Constant.TB_MUSIC+"

values(null,'sunshine','03:33','周杰伦')");

db.execSQL("insert into "+Constant.TB_MUSIC+" values(null,'the world','03:35','王菲')");

}

@Override

public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

}

数据库如果创建不成功则抛出FIleNotFoundException异常

2.2.2 操作数据库

Android对数据库的操作主要有插入、删除、更新、查询操作,在进行任何操作时都必须指定一个Uri,才能对相应的表进行数据操作。

//数据库删除操作

@Override

public int delete(Uri arg0, String arg1, String[] arg2) {

SQLiteDatabase db = dbOpenHelper.getWritableDatabase();

try {

Db.delete(FileColumn.TABLE, arg1, arg2);

} catch (Exception ex) {

ex.printStackTrace();

}return 1;

}

@Override//数据库插入操作

public Uri insert(Uri uri, ContentValues values) {

SQLiteDatabase db = dbOpenHelper.getWritableDatabase();

long count = 0;

try { count = db.insert(FileColumn.TABLE, null, values);

} catch (Exception ex)

{ ex.printStackTrace(); }

if (count > 0) return uri;

else return null;

}

// 数据库更新操作

@Override

public int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {

SQLiteDatabase db = dbOpenHelper.getWritableDatabase();

int i = 0;

try {

i = db.update(FileColumn.TABLE, values, selection, null);return i;

} catch (Exception ex) {}

return 0;

}

2.2.3 数据显示

程序是利用Cursor游标类指向数据表中的某一项,然后进行查询数据,用Log日志显示出来

@Override//数据库查询操作

public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {

SQLiteDatabase db = dbOpenHelper.getWritableDatabase();

// 依次参数为:表名,查询字段,where语句,替换,group by(分组)having(分组条件),order by(排序)

Cursor cur = db.query(FileColumn.TABLE, projection, selection,selectionArgs, null, null, sortOrder);return cur;}

第三章 Android项目介绍

3.1在我们理解Android是什么?

3.1.1 Android简介

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用安卓安致Android操作系统最初由Andy Rubin开发,主要支持手机。20058月由Google收购注资。200711月,Google84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随GoogleApache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于200810月。Android逐渐扩展到平板电脑及其他领域上,如电视数码相机游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 201211月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%

3.1.2 Android Features特性

Android系统有如下的几大特性:

2010127凌晨的时候,谷歌在发布旗下Android2.3 Gingerbread(姜饼)系统正式亮相。相比2.2版本来说,新版的Android系统在多个方面都进行了有效的提升,下面我们一起来看看到底有哪些改进。

1.用户界面更美观

2.提升游戏体验 

3.提升多媒体能力

4.增加官方进程管理 

5.改善电源管理

6.NFC进场通信

7.全局下载管理 

8.改进的虚拟键盘

9.原生支持前置摄像头 

10.SIP网络电话

3.1.3 Android基本框架(Android Architecture

(1)Applications

Application Android会同一个核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的,应用的声明。这个元素包含了子元素,这些子元素声明了应用的组件,元素的属性将会影响应用下的所有组件。很多属性为组件设置了默认值。有些属性设置了全局值并且不能被组件修改。

(2)Application FrameWork

Application Framework是一个完整的程序模型,具备标准应用软件所需的一切基本功能,像是文件存取、打印预视、资料交换...,以及这些功能的使用接口(工具栏、状态列、菜单、对话框)。如果更以术语来说, 就是由一整组合作无间的「对象」架构起来的大模型。喔不不,当它还没有与你的程序产生火花的时候,它还只是有形无体,应该说是一组合作无间的「类别」架构起来的大模型。

这带来什么好处呢?程序员只要带个购物袋到「类别超级市场」采买,随你要买MDI OLE ODBC Printing Preview,回家后就可以轻易拼凑出一个色香味俱全的大餐「类别超级市场」就是C++ 类别库,以产品而言,在Microsoft MFC,在BorlandOWL,在IBM 则是OpenClass。这个类别库不只是类别库而已,传统的函数库(C

Runtime Windows API)乃至于一般类别库提供的是生鲜超市中的一条鱼一支葱一颗大白菜,彼此之间没有什么关联,主掌中馈的你必须自己选材自己调理。能够称得上

Application Framework 者,提供的是火锅拼盘(就是那种带回家通通丢下锅就好的那种),依你要的是白菜火锅鱼头火锅或是麻辣火锅,菜色带调理包都给你配好。当然这

样的火锅拼盘是不能够就地吃的,你得给它加点能量。放把火烧它吧,这火就是所谓的application object(在MFC 程序中就是衍生自CWinApp 的一个全域性对象)。

(3) Libraries

Android 包括一个被 Android 系统中各种不同组件所使用的 C/C++ 库集。该库通过 Android 应用程序框架为开发者提供服务。以下是一些主要的核心库:
  系统 C - 一个从 BSD 继承来的标准 C 系统函数库( libc ),专门为基于 embedded linux 的设备定制。 媒体库- 基于 PacketVideo OpenCORE;该库支持录放,并且可以录制许多流行的音频格式,还有静态印像文件包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG Surface Manager - 对显示子系统的管理,并且为多个应用程序提供2D3D图层的无缝融合。 LibWebCore - 一个最新的web浏览器引擎用来支持Android浏览器和一个可嵌入的web视图。 SGL - 一个内置的2D图形引擎 3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。 FreeType - 位图(bitmap)和向量(vector)字体显示。 SQLite 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

(4)Android Runtime

Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对于同时高效地运行多个VMs来实现的。Dalvik虚拟机执行.dexDalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。
  Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。

5Linux内核

Linux内核使用三种不同的版本编号方式。
  第一种方式用于1.0版本之前(包括1.0)。第一个版本是0.01.紧接着是0.02,0.03,0.10,0.11,0.12,0.95.096,0.97,0.98,0.99和之后的1.0.
  第二种方式用于1.0之后到2.6,数字由三部分A.B.C”,A代表主版本号,B代表次主版本号,C代表较小的末版本号。只有在内核发生很大变化时(历史上只发生过两次,1994年的1.0,1996年的2.0),A才变化。可以通过数字B来判断Linux是否稳定,偶数的B代表稳定版,奇数的B代表开发版。C代表一些bug修复,安全更新,新特性和驱动的次数。以版本2.4.0为例,2代表主版本号,4代表次版本号,0代表改动较小的末版本号。在版本号中,序号的第二位为偶数的版本表明这是一个可以使用的稳定版本,如2.2.5,而序号的第二位为奇数的版本一般有一些新的东西加入,是个不一定很稳定的测试版本,如2.3.1。这样稳定版本来源于上一个测试版升级版本号,而一个稳定版本发展到完全成熟后就不再发展。

第三种方式从20042.6.0版本开始,使用一种time-based”的方式。3.0版本之前,是一种A.B.C.D”的格式。七年里,前两个数字A.B2.6”保持不变,C随着新版本的发布而增加,D代表一些bug修复,安全更新,添加新特性和驱动的次数。3.0版本之后是A.B.C”格式,B随着新版本的发布而增加,C代表一些bug修复,安全更新,新特性和驱动的次数。第三种方式中不使用偶数代表稳定版,奇数代表开发版这样的命名方式。举个例子:3.7.0代表的不是开发版,而是稳定版!

但其最震撼人心之处在于Android手机系统的开放性和服务免费。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;同时与Windows MobileSymbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成成本。 Android项目目前正在从手机运营商、手机厂商、开发者和消费者那里获得大力支持。谷歌移动平台主管安迪·鲁宾(Andy Rubin)表示,与软件开发合作伙伴的密切接触正在进行中。从去年11月开始,谷歌开始向服务提供商、芯片厂商和手机销售商提供Android平台,并组建“开放手机联盟”,其成员超过30家。市场前景 Google手机于081022正式上市,与运营商捆绑的合约价为179美元(约合人民币1200),现有的T-Mobile用户可以通过网络订购。在1022发布当天,将有22个国家和地区可以买到谷歌手机。在11月,将增至27个国家和地区。 

谷歌手机将只能在T-Mobile网络内使用,将会有SIM卡锁定限制。T-Mobile USA提供了两种流量和短信近曝光的moto sholes(也有人称之为moto tao)将搭载最新的android2.0操作系统包月计划。第一档为25美元,包括不限制的网络流量,以及一定数量的短信;第二档为35美元,包括不限制的网络流量和不限数量的短信。G1支持各种谷歌的服务,包括GmailGoogle MapsYouTubeGoogle日历和Google Talk,内置Chrome Lite浏览器。使用这款手机也需要Gmail账号。 “我爱死我

G1了!”谷歌联合创始人拉里·佩奇(Larry Page)憧憬:“对于我来说,谷歌手机最激动人心的一点就是它的未来。它的功能很强,正如几年前的电脑一样。你可以上网,安装软件。” T-Mobile USA为德国电信旗下移动子公司,运营GSM/HSPA网络,拥有用户近3000万。此次发布的谷歌手机采用高通MSM7201A处理器,支持7.2Mbps下载速率,美国运营商3G网络设定的套餐速率一般可达1Mbps以上。MSM7201A为单芯片、双核,整合硬件加速多媒体功能、支持3D图形,300万像素的摄像功能可以扫描条形码,并且有GPS功能。 在美国四大移动运营商中,T-Mobile USA处于相对弱势的地位,不过T-Mobile在欧洲有更为强势的是CDMA EV-DO网络,而T-Mobile USA和苹果iPhone的独家运营商AT&TGSM/HSPA网络,后者在200512月就推出了全球第一个HSDPA商用服务。T-Mobile USA今年5月方才在纽约推出3G服务,目前已经在奥斯汀、巴尔的摩、波士顿、达拉斯、休斯敦、拉斯维加斯、迈阿密、明尼阿波利斯、凤凰城、波特兰、圣安东尼奥和圣地亚哥等12个城市增加了3G覆盖,公司计划年底前将3G覆盖的城市从目前的13个增加到27个,能够为其超过2/3的用户提供3G服务。

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

相关推荐