基于Android的音乐播放器设计与实现
更新时间:2024-06-20 22:41:01 阅读量: 综合文库 文档下载
摘 要
在如今这个生活节奏越来越快的社会,科技也随之发展的越来越智能化。而手机的智能化就是其中体现的一个方面,现在市场上比较主流的手机系统就是Android,苹果和w8。Android是一个开源的系统,它底层是基于Linux的操作系统。
本毕业设计的音乐播放器采用了Android开源系统技术,利用Java语言和EclipseJDK编辑工具对音乐播放器进行编写。同时也给出了比较详细的系统设计过程、部分界面图及主要功能运行流程图,本设计还对一些架构的和界面的高度过程中遇到的问题和解决方法进行了详细的讨论,还有一些开发过程中遇到的错误问题进行了举例。该音乐播放器集播放、暂停、停止、上一首、下一首、歌词显示等功能于一体,有良好的性能,炫酷的播放界面。能在Android手机系统中能独立运行。该播放器还拥有对手机文件浏览器的访问功能、歌曲播放模式(单曲循环,单曲循环,顺序循环,顺序播放,随机播放)、以及歌词开闭状态等比较人性化的设置.该音乐播放器的名称是:“旋风播放器“,名字就和它的风格一样。
关键词:Linux操作系统;Android;流程图;音乐播放器;开源系统
1
李发万:基于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: \
Key words: Linux operating system; Android; flowchart; music player; open source
system
目 录
摘 要 ........................................................... 1 Abstract ........................................................... 2 目 录 ........................................................... 3 引 言 ........................................................... 1 第一章 系统需求分析 ............................... 错误!未定义书签。 1.1 功能需求(用例图分析) ......................................................................................... 2 1.1.1 播放器的基本控制需求 ..................................................................................... 2 1.1.2 播放友好性需求 ...................................................................................................... 4 1.1.3 功能需求(时序图)分析 ..................................................................................... 4 1.2 系统结构图和流程图 .................................................................................................. 5 1.3播放器系统界面需求 .................................................................................................... 7 1.4 系统性能需求 ................................................................................................................ 8 1.5 运行环境需求 ................................................................................................................ 8 第二章 Android数据库设计 ........................................... 9 2.1 数据库及字段属性设计 .............................................................................................. 9 2.1.1 字段设计(表、图) .......................................................................................... 9 2.1.2 音乐播放器E-R图 ............................................................................................ 10 2.2 数据库连接 ................................................................................................................... 11 2.2.1 创建数据库 .......................................................................................................... 11 2.2.2 操作数据库 .......................................................................................................... 13 2.2.3 数据显示 ............................................................................................................... 14 第三章 Android项目介绍 ............................................ 14 3.1在我们理解Android是什么? ............................................................................... 14 3.1.1 Android简介 ....................................................................................................... 14 3.1.2 Android Features特性 .................................................................................. 15 3.1.3Android基本框架(Android Architecture) ......................................... 15 3.1.4Android系统的四大组件 .................................................................................. 19
3.2搭建Android开发环境 .................................................................................................. 20
第四章 播放器系统功能详细设计 ..................................... 22 4.1音乐播放器主界面功能实现 .................................................................................... 22 4.1.1 播放器主界面 ...................................................................................................... 22 4.1.2 播放界面音轨的实现 ........................................................................................ 29 4.1.3 播放器播放、暂停、停止等功能 ................................................................. 30 结 论 .......................................................... 32 参考文献 .......................................................... 33 附 录 .......................................................... 34 后 记 .......................................................... 35
3
李发万:基于Andriod的音乐播放器设计与实现
1.2 系统结构图和流程图
(1)音乐播放器的系统流程图(图1.2.1)
5
华东交通大学理工学院毕业设计
图1.2.1 流程图
(2)播放器功能表
李发万:基于Andriod的音乐播放器设计与实现
图1.2.2 系统功能结构图
1.3播放器系统界面需求
播放器界面要求合理布局,颜色炫丽,控制按钮都比较友好,为了该音乐播放器的炫丽,图片素材多数为自己从网上找的(图2.6)
7
华东交通大学理工学院毕业设计
图1.3.1 界面图
1.4 系统性能需求
根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求: (1)当要求歌曲播放时,程序响应时间最长不能超过5秒 (2)当要求歌曲暂停时,程序响应时间最长不能超过5秒 (3)当要求歌曲停止时,程序响应时间最长不能超过5秒 (4)当要求歌曲上/下一首时,程序响应时间最长不能超过5秒
(5)当要求进行歌曲列表时,程序响应时间最长不能超过5秒
1.5 运行环境需求
(1)操作系统:Android手机基于Linux操作系统
李发万:基于Andriod的音乐播放器设计与实现
(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)
属性 Music_id Music_name Music_size Music_singer
表2.1
数据类型 integer text text text 允许为空 Not null Not null Not null Nut null 主键 Primary key 属性 _ID NAME SINGER SIZE 数据类型 INTEGER TEXT TEXT LONG 允许空 Not null Not null 9
主键 Primary key
华东交通大学理工学院毕业设计
表2.2
图2.1.1 歌曲列表
图2.1.2 歌曲详细
2.1.2 音乐播放器E-R图
音乐播放器 E-R(实体-联系:entity-relation图)图(图3.1.3)
李发万:基于Andriod的音乐播放器设计与实现
图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);
11
华东交通大学理工学院毕业设计
}
@Override
public void onCreate(SQLiteDatabase db) { text)\
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { }
数据库如果创建不成功则抛出FIleNotFoundException异常
db.execSQL(sql);
db.execSQL(\TB_MUSIC+\db.execSQL(\TB_MUSIC+\db.execSQL(\TB_MUSIC+\db.execSQL(\TB_MUSIC+\db.execSQL(\TB_MUSIC+\
db.execSQL(\TB_MUSIC+\db.execSQL(\into \TB_MUSIC+\values(null,'as long as db.execSQL(\TB_MUSIC+\db.execSQL(\TB_MUSIC+\
db.execSQL(\TB_MUSIC+\String sql=\TB_MUSIC+\
primary key autoincrement,music_name text,music_length text,music_singer
spring','03:36','汪峰')\simply','03:36','黄小琥')\cry','03:36','Guns and Roses')\shoulder','03:46','欧美群星')\
values(null,'Lenka-Trouble Is A Friend','04:56','Lenka')\simple','03:56','陶喆')\
you love me','03:43','后街男孩')\love','04:24','西城男孩')\
values(null,'sunshine','03:33','周杰伦')\world','03:35','王菲')\
李发万:基于Andriod的音乐播放器设计与实现
2.2.2 操作数据库
Android对数据库的操作主要有插入、删除、更新、查询操作,在进行任何操作时都必须指定一个Uri,才能对相应的表进行数据操作。
//数据库删除操作 @Override
public int delete(Uri arg0, String arg1, String[] arg2) { }
@Override//数据库插入操作
public Uri insert(Uri uri, ContentValues values) { }
// 数据库更新操作 @Override
public int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {
}
13
SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); try {
} catch (Exception ex) {
ex.printStackTrace(); }return 1;
Db.delete(FileColumn.TABLE, arg1, arg2);
SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); long count = 0;
try { count = db.insert(FileColumn.TABLE, null, values); } catch (Exception ex) if (count > 0) return uri; else return null;
{ ex.printStackTrace(); }
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开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随
李发万:基于Andriod的音乐播放器设计与实现
后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。
3.1.2 Android Features特性
Android系统有如下的几大特性:
2010年12月7日凌晨的时候,谷歌在发布旗下Android2.3 Gingerbread(姜饼)系统正式亮相。相比2.2版本来说,新版的Android系统在多个方面都进行了有效的提升,下面我们一起来看看到底有哪些改进。
1.用户界面更美观 2.提升游戏体验 3.提升多媒体能力 4.增加官方进程管理 5.改善电源管理 6.NFC进场通信 7.全局下载管理 8.改进的虚拟键盘 9.原生支持前置摄像头 10.SIP网络电话
3.1.3 Android基本框架(Android Architecture)
15
华东交通大学理工学院毕业设计
(1)Applications
Application Android会同一个核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的,应用的声明。这个元素包含了子元素,这些子元素声明了应用的组件,元素的属性将会影响应用下的所有组件。很多属性为组件设置了默认值。有些属性设置了全局值并且不能被组件修改。
(2)Application FrameWork
Application Framework是一个完整的程序模型,具备标准应用软件所需的一切基本功能,像是文件存取、打印预视、资料交换...,以及这些功能的使用接口(工具栏、状态列、菜单、对话框)。如果更以术语来说, 就是由一整组合作无间的「对象」架构起来的大模型。喔不不,当它还没有与你的程序产生火花的时候,它还只是有形无体,应该说是一组合作无间的「类别」架构起来的大模型。
这带来什么好处呢?程序员只要带个购物袋到「类别超级市场」采买,随你要买MDI 或OLE 或ODBC 或Printing Preview,回家后就可以轻易拼凑出一个色香味俱全的大餐「类别超级市场」就是C++ 类别库,以产品而言,在Microsoft 是MFC,在Borland是OWL,在IBM 则是OpenClass。这个类别库不只是类别库而已,传统的函数库(C
李发万:基于Andriod的音乐播放器设计与实现
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 - 对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。 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虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成
.dex
格
式
由
虚
拟
机
执
行
。
Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。 (5)Linux内核
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代表改动较小的末
17
华东交通大学理工学院毕业设计
版本号。在版本号中,序号的第二位为偶数的版本表明这是一个可以使用的稳定版本,如2.2.5,而序号的第二位为奇数的版本一般有一些新的东西加入,是个不一定很稳定的测试版本,如2.3.1。这样稳定版本来源于上一个测试版升级版本号,而一个稳定版本发展到完全成熟后就不再发展。
第三种方式从2004年2.6.0版本开始,使用一种“time-based”的方式。3.0版本之前,是一种“A.B.C.D”的格式。七年里,前两个数字A.B即“2.6”保持不变,C随着新版本的发布而增加,D代表一些bug修复,安全更新,添加新特性和驱动的次数。3.0版本之后是“A.B.C”格式,B随着新版本的发布而增加,C代表一些bug修复,安全更新,新特性和驱动的次数。第三种方式中不使用偶数代表稳定版,奇数代表开发版这样的命名方式。举个例子:3.7.0代表的不是开发版,而是稳定版!
但其最震撼人心之处在于Android手机系统的开放性和服务免费。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;同时与Windows Mobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成成本。 Android项目目前正在从手机运营商、手机厂商、开发者和消费者那里获得大力支持。谷歌移动平台主管安迪·鲁宾(Andy Rubin)表示,与软件开发合作伙伴的密切接触正在进行中。从去年11月开始,谷歌开始向服务提供商、芯片厂商和手机销售商提供Android平台,并组建“开放手机联盟”,其成员超过30家。市场前景 Google手机于08年10月22日正式上市,与运营商捆绑的合约价为179美元(约合人民币1200元),现有的T-Mobile用户可以通过网络订购。在10月22日发布当天,将有22个国家和地区可以买到谷歌手机。在11月,将增至27个国家和地区。
谷歌手机将只能在T-Mobile网络内使用,将会有SIM卡锁定限制。T-Mobile USA提供了两种流量和短信近曝光的moto sholes(也有人称之为moto tao)将搭载最新的android2.0操作系统包月计划。第一档为25美元,包括不限制的网络流量,以及一定数量的短信;第二档为35美元,包括不限制的网络流量和不限数量的短信。G1支持各种谷歌的服务,包括Gmail、Google Maps、YouTube、Google日历和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&T为GSM/HSPA网络,后者在2005
李发万:基于Andriod的音乐播放器设计与实现
年12月就推出了全球第一个HSDPA商用服务。T-Mobile USA今年5月方才在纽约推出了3G服务,目前已经在奥斯汀、巴尔的摩、波士顿、达拉斯、休斯敦、拉斯维加斯、迈阿密、明尼阿波利斯、凤凰城、波特兰、圣安东尼奥和圣地亚哥等12个城市增加了3G覆盖,公司计划年底前将3G覆盖的城市从目前的13个增加到27个,能够为其超过2/3的用户提供3G服务。
3.1.4 Android系统的四大组件
AndroidActivity:
中称为四大组件的为别为:Activity/Service/BroadCast
provider
Recevicer/Content
activity是用户和应用程序交互的窗口,一个activity相当于我们实际中的一个网页,当打开一个屏幕时,之前的那一个屏幕会被置为暂停状态,并且压入历史堆栈中,用户可以通过回退操作返回到以前打开过的屏幕。activity的生命周期:即“产生、运行、销毁”,但是这其中会调用许多方法onCreate(创建) 、onStart(激活) 、onResume(恢复) 、onPause(暂停) 、onStop(停止) 、onDestroy(销毁) 、onRestart(重启Service:
Service是一种程序,它可以运行很长的时间,相当于后台的一个服务,通过startService(Intent service)可以启动一个Service,通过Context.bindService()可以
绑
定
一
个
Service
。
BroadCast Recevicer:
接受一种或者多种Intent作 触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型。可以使用 BroadcastReceiver来让应用对外一个外部的事件作出响应。Broadcast Receiver通过NotificationManager来通知用户这些事情发生了,BroadcastReceiver注册的有两种方式,一种是可 以在AndroidManifest.xml他们自己的
中注册,另一种可以在运行时的代码中使用
广播给其他的应用程序。
Context.registerReceiver()进行注册。用 户还可以通过Context.sendBroadcast()将
intent broadcasts
Content provider:
内容提供者,可通过它来共享自己的数据给外部调用,给第三方应用提供数据访问的接口。
)
。
19
华东交通大学理工学院毕业设计
3.2搭建Android开发环境
任何项目的运行都要有它的环境,Android也有自己的运行环境。 第一步:安装java虚拟机un-java6-jdk版本。 操作系统:win7旗舰版或linux 软件包:sdk,atd。
运行环境:eclipse-SDK-3.6.2集成Android开发工具版-win32
第二步:安装Eclipse3.5工具 官网http://www.eclipse.org/downloads/ 选择版本(图4.2):进行安装
图 3.2
第三步:安装Android SDK:首先要下载SDK,可以在这个网址下载Http://developer.android.com/sdk ,选择相应的系统进行安装
第四步:安装Android ADT插件
运行Eclipse,选择help->install new software 选择add,将会弹出一个框
李发万:基于Andriod的音乐播放器设计与实现
图 3.3
点击OK,选择要安装的软件,占next,然后选择接受协议,直到安装成功,重启Eclipse软件,设置Android SDK Home,Window->refrence
图 3.4
在SDK location中输入SDK Tools路径:D:\\android software\\android-sdk-windows 点击OK
这样Android环境就已经搭建成功了。
21
华东交通大学理工学院毕业设计
第四章 播放器系统功能详细设计
4.1音乐播放器主界面功能实现
4.1.1 播放器主界面
播放器主界面(图5.1)
图 4.1
Android的每一个可视化界面,都有其的唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取。这样就可以形成不同的可视化界面和炫丽的效果。
李发万:基于Andriod的音乐播放器设计与实现
Context.setContentView(layoutResID),参数为资源ID,该Id在工程目录res/layout下,主界面布局文件名为main。
下面为main.xml布局文件代码结构如下:
xmlns:android=\ android:layout_width=\ android:layout_height=\> android:background=\ android:layout_height=\> android:layout_height=\ android:layout_width=\ android:layout_marginTop=\ android:layout_height=\ android:background=\ /> android:layout_width=\ android:layout_marginTop=\ android:layout_height=\ android:layout_width=\ android:background=\> android:src=\ android:layout_height=\> android:layout_width=\ android:layout_marginLeft=\ /> android:layout_width=\ android:layout_marginLeft=\ /> android:layout_height=\ android:layout_height=\ android:text=\状态:\ 23 华东交通大学理工学院毕业设计 /> android:layout_marginTop=\ android:textColor=\ /> android:layout_marginLeft=\ android:layout_height=\ android:text=\停止\ android:layout_marginTop=\ android:textColor=\ android:layout_width=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:paddingTop=\ android:src=\ /> android:orientation=\ android:layout_marginTop=\> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:paddingLeft=\ android:paddingTop=\ android:progressDrawable=\ android:thumb=\ /> android:layout_height=\ android:layout_height=\ android:layout_width=\ android:layout_marginLeft=\ /> 李发万:基于Andriod的音乐播放器设计与实现 android:layout_width=\ android:layout_height=\ android:background=\ android:baselineAligned=\ android:paddingTop=\ > android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:text=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:src=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:src=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ 25 华东交通大学理工学院毕业设计 android:src=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:src=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:text=\ /> android:visibility=\ android:layout_width=\ android:layout_height=\> android:layout_height=\ android:layout_height=\> android:layout_width=\ android:layout_height=\ /> android:layout_height=\> android:layout_width=\ android:visibility=\ android:layout_width=\ android:layout_height=\ android:gravity=\ android:layout_height=\ android:background=\> android:background=\> android:textStyle=\ android:layout_height=\/> android:layout_height=\> 27 华东交通大学理工学院毕业设计 android:layout_height=\/> android:gravity=\ android:layout_height=\ android:layout_alignParentBottom=\ />
android:gravity=\ android:layout_width=\ android:textColor=\android:layout_width=\
orientation=\:此线性布局的子部件为水平方式布局
Layout_width=\:布局的宽度为填满父布局 Layout_height=\:布局的高度子由窗体的大小决定
窗体TextView 文本 :textColor=\设置文本显示的颜色RGB为 \
TextSize为默认大小
李发万:基于Andriod的音乐播放器设计与实现
4.1.2 播放界面音轨的实现
播放器音轨SeekBar(如下图)
不管是从界面外观还是从功能上,系统自带的SeekBar往往不能满足用户的需要。所以我在这里自定义了一个音轨SeekBar,
在main.Xml配置文件中,SeekBar的代码如下:
android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:paddingLeft=\ android:paddingTop=\ android:progressDrawable=\ android:thumb=\ /> 配置文件中三个Item项依次决定了SeekBar的三层背景,从最下层的灰色到最上层的蓝色。通过各种属性设置了SeekBar的倾斜度,两端圆半径,角度,中心位置,起始,中心和结束的颜色,游标的起始位置。通过这些属性设置,就自定义一个如上图一的SeekBar音轨. 播放器最重要的一部分就是音轨与歌曲进度同步的实现。音轨设置了两个TextView用来显示当前歌曲播放的进度时间和歌曲的长度(图5.3) 图 4.2 音轨对象SeekBar在歌曲刚开始播放的时候调用方法SeekBar.setMax(),参数传入歌曲的长度。SeekBar.setProgress(1)设置游标的起始进度为1。然后程序运行如下代码: private Runnable thread_One = new Runnable() {// 线程 public void run() { int currently_Progress = seekBar.getProgress() + 1000; 29 华东交通大学理工学院毕业设计 seekBar.setProgress(currently_Progress); currently_Time.setText(getFileTime(mplayer.getCurrentPosit ion())); 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的各位置进行点击时,它会自动监听其位置,进行相应的位置显示。这也是进度条上的游标会不停的移动和歌词时间会不停的变动的原因。 4.1.3 播放器播放、暂停、停止等功能 图 4.3 如图5.4所示:各按钮水平放置,用的是布局中的线性布局LinearLayout,用方法setOrientation(horizontal);将其设置为水平。LinearLayout中依次放置播放,暂停,停止,上、下一曲按钮属性。配置文件代码结构如下: android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:layout_width=\ android:layout_height=\ android:background=\ android:baselineAligned=\ android:paddingTop=\ > 李发万:基于Andriod的音乐播放器设计与实现 android:text=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:src=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:src=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:src=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:src=\ /> android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginLeft=\ android:text=\ /> 31 华东交通大学理工学院毕业设计 好了一个接口类,叫MediaPlayer。该接口在执行行需要一个数据源,通过如下四个步骤: 第一步:MediaPlayer.reset();复位操作,为以后的媒体准备播放作准备。 第二步:传入歌曲数据源,这里也是一个数据流 MediaPlayer.setDataSource(String path);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。 第三步:准备播放数据源,调用方法MediaPlayer.Prepare(); 第四步:MediaPlayer.Start();播放数据源,该数据源播放后,不再与程序 有关,需要用MediaPlayer.Stop()方法让其停止或MediaPlayer.Start();。 结 论 通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。 音乐播放器系统实现了播放器的基本功能:播放,暂停、停止、上/下一首、音量调节、歌词显示、播放模式、歌曲搜索、文件浏览器、播放列表查询等功能。运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。是以Java语言编写+SQLite数据库支持+SharePreference配置文件的组合方式进行数据管理。实现了音乐播放器的系统编程。 本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是Eclipse3.5+Java语言的支持,Android Development Tool的插件,和Android SDK2.1版本的全面结合,才使整个音乐播放器系统得以实现。 总之,经过几个月的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,这对我以后的Android项目开发有很大的帮助。 在此论文抒写过程中,我还要感谢我的软件工程的老师给我的支持和建议。让我能顺利的完成本次论文。 李发万:基于Andriod的音乐播放器设计与实现 参考文献 [1] 刘长生,谢强,丁秋林.Java应用中的汉字乱码问题分析[J].计算机技术与发展,2006,16(1):158-161. [2] 萨师煊,王珊.数据库系统概论(第三版) [M].北京:高等教育出版社, 2000. [3] 吴以欣,陈小宁.JavaScript 脚本程序设计[M].北京:人民邮电出版社,2005 [4] 孙东卫,张冀红,李声利. 数据库访问技术研究[J].现代电子技术.2002,18(5).20-34 [5] 张桂元,贾燕枫.Struts开发入门与项目实践[M].北京:人们邮电出版社, 2005. [6] 孙卫琴.Tomcat与Java Web开发技术详解[M].电子工业出版社,2009.20-82 [7] 印旻.Java语言与面向对象程序设计[M].北京:清华大学出版社,2000. [8] 李刚,疯狂JAVA讲义,北京:电子工业出版社,2008 [9] Elliote Rusty Harold.Java Network Programming[M].O'Reilly,2008. [10] 任永功,王政军. 软件技术与数据库[J]. 计算机工程 ,2006,32(5):60-62,134 [11] Google Android开发入门与实战/靳岩,姚尚朗编著。—北京:人民邮 33 华东交通大学理工学院毕业设计 电出版社,2009.7 [12] 深入浅出Google Android/E2Ecloud 工作室编著。—北京:人民邮电出版社,2009.8 附 录 李发万:基于Andriod的音乐播放器设计与实现 后 记 四年的读书生活在这个季节即将划上一个句号,而于我的人生而言却只是一个逗号,我将面对的是另一个征程的开始。四年的求学生涯在老师、父母的支持下,走得辛苦却也收获满囊,在论文即将付梓之际,思绪万千。当导师让我写后记的时候,我心里有种如释重负的感觉。写作过程中一度处于紧张惶恐中,总感到自己的粗陋与肤浅,感到思维的不甚严密和语言的贫乏无力。在这里衷心感谢我的导师—尊敬的李旋老师。他在忙碌的教学工作中挤出时间来审查、修改我的论文,纸质稿的空白处总会留下他用心修改的痕迹,细致到哪怕一个错误的标点都做出了批注。是他的指引与鼓励让我摆脱了恐惧,树立了信心,使我得以战胜前行中的困难。姜守明老师治学严谨,对于课题的选定、论文提纲的拟定都给予其宝贵意见。他严肃的外表下有一颗对学生负责的炽热的心。 《论文艺复兴时期的人文主义教育思想》是我本科毕业论文,从拟定课题到最后完稿耗时较长。这一课题一直是学者研究的热点,怎样写的完善又不泛泛而谈是写作过程中遇到的难题。经过李老师一次次的修改,让我大体领悟课题的精髓,从而突破这一难题。对我而言,完成这篇论文是一次艰难的跋涉,它不够完美,甚至略显粗糙,但我对它是用尽百分之百的心力和智力。写作此文时,我常常要在一节文字部分反复修改。因为越研究下去,就越不敢妄言。因为了解得越多,就越发现现象及其背后机制的复杂性。写作此文的经历亦是认清自己的过程,认识到自己的分量,自己所欠缺的东西,并挖掘到自己可以努力的方向。理想的东西总是很美好的,但不经历艰难的、朴素的甚至枯燥的路途是抵达不了最美好的地方。 本论文的顺利完成离不开各位老师、同学和朋友的关心与帮助。再次感谢我的指导老师—李旋老师,感谢在南京师范大学泰州学院求学期间给予我许多有益教诲的老师们。你们严谨的治学态度、不染俗流的学者风骨、诲人不倦的师长风范为我树立了做人、做事、做学问的楷模。丰富多彩的校园生活也即将在我的脑海里留下美好的记忆,我深深感谢所有关心、爱护、教育和帮助过我的每一个人,谢谢你们一直都在。 35
正在阅读:
基于Android的音乐播放器设计与实现06-20
小学二年级奥数题及答案(60道)01-31
2019学年第一学期期中总结02-26
XX镇2019年党建工作要点02-23
我国商业银行竞争能力分析11-04
2019-2020教学进度表03-03
2019潍坊化学中考真题(解析版)03-14
2019部队士官述职报告103-06
2019年自贸区注册外资公司11-03
- 冀教版版五年级科学下册复习资料
- 微生物学复习提纲
- 2013—2014学年小学第二学期教研组工作总结
- 国有土地转让委托服务合同协议范本模板
- 我的固废说明书
- 企业管理诊断报告格式
- 东鼎雅苑施工组织设计
- 谈谈如何做好基层党支部书记工作
- 浮梁县环保局市级文明单位创建工作汇报
- 管理学基础知识
- 大学物理实验报告23 - PN结温度传感器特性1
- 计算机网络实践
- 酒桌上这四种情况下要坐牢,千万别不当回事……
- 国家康居示范工程建设技术要点
- 中国贴布行业市场调查研究报告(目录) - 图文
- 新课标下如何在高中物理教学中培养学生的创新能力初探
- 营养师冬季养生食谱每日一练(7月4日)
- 关注江西2017年第3期药品质量公告
- 建设海绵城市专题习题汇总
- 10万吨年环保净水剂建设项目报告书(2).pdf - 图文
- 播放器
- 基于
- Android
- 实现
- 设计
- 音乐
- 底盘装甲防滑链项目可行性研究报告 - 图文
- 现代医学电子仪器原理与设计复习指导(含答案)
- Android平台音乐播放器说明书
- 井控大赛井控知识试题库((文件精神部分))
- 杭州七格污水处理厂5-2生物反应池混凝土施工质量控制-最新年精选
- 2018年中国电磁开关行业分析报告-市场运营态势与发展前景研究(目
- 广西旅游业的发展机遇与挑战
- 李海山走在前行的路上
- 英语单词谐音爆笑记忆法
- 行政管理本科《公共部门人力资源管理》综合练习参考答案
- TALEN构建与斑马鱼基因组定点突变的实验方法与流程(1) - 图文
- 济南大学2009~2010学年第二学期课程考试试卷(A卷)
- 研究生各种奖学金的详解(“三助”,学业奖学金,助学贷款,国家
- 幼儿园中班秋季班务计划
- 我国收入分配问题研究(下)试卷98分
- 《感恩老师》主题班会活动程序和主持人串词
- 初三语文文言文单元专项练习
- 2017-2018第一学期工作计划
- 2015年公需科目职业道德100分
- 正弦波振荡器习题课