版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于android平台的在线音乐客户端设计与实现目 录第一章 引 言- 1 -1.1 项目背景- 1 -1.2 编写目的- 2 -第二章 系统需求分析- 3 -2.1 功能需求(用例图分析)- 3 -2.1.1 播放器的基本控制需求- 3 -2.1.2 播放清单列表管理需求- 5 -2.1.3 播放友好性需求- 7 -2.1.4 播放器扩展卡需求- 8 -2.1.5 功能需求(时序图)分析- 9 -2.2 系统结构图和流程图- 10 -2.3 系统界面需求- 11 -2.4 系统性能需求- 12 -2.5 运行环境需求- 12 -第三章 android数据库设计- 13 -3.1 数据库及字段
2、属性设计- 13 -3.1.1 字段设计(表、图)- 13 -3.1.2 音乐播放器e-r图- 15 -3.2 数据库连接- 15 -3.2.1 创建数据库- 15 -3.2.2 操作数据库- 16 -3.2.3 数据显示- 17 -第四章 android项目介绍- 18 -4.1 什么是android?- 18 -4.1.1 android简介- 18 -4.1.2 android features特性- 18 -4.1.3 android基本框架(android architecture)- 19 -4.1.4 android系统的四大组件- 22 -4.2 搭建android开发环境-
3、23 -4.3 android常用工具的使用- 25 -4.3.1 命令行的使用- 25 -4.3.2 dalvik debug monitor service (ddms)的使用- 26 -4.4 android 音乐播放器的工程- 26 -4.4.1 android项目- 26 -4.4.2 android工程程序结构- 27 -4.4.3 androidmanifest.xml文件- 29 -第五章 播放器系统功能详细设计- 31 -5.1音乐播放器主界面功能实现- 31 -5.1.1 播放器主界面- 31 -5.1.2 播放界面音轨的实现- 32 -5.1.3 播放器播放、暂停、停止等
4、功能- 35 -5.2 播放列表功能- 36 -5.3 菜单功能- 38 -5.3.1 菜单界面- 38 -5.3.2 菜单功能实现- 39 -5.4 播放设置界面- 41 -5.4.1 界面实现- 41 -5.4.2 歌词显示实现- 42 -5.5 手机扩展卡的访问- 44 -5.5.1 文件浏览器界面- 45 -5.5.2 文件浏览器功能实现- 46 -5.6 数据存储方式- 47 -5.6.1 sharedpreferences- 47 -5.6.2 file存储方式- 48 -5.6.3 sqlitedatabase数据库- 48 -第六章 结 论- 49 -摘 要 随着社会生活节奏越
5、来越快,以及硬件移动设备的越来越先进,我们对移动设备的要求也在不断提高,从原来的追求技术到现在的追求视觉。因而,也逐步提高了对操作系统的要求。android是一个开源系统,底层主要是基于linux的内核,该文章主要针对的是基于android平台的在线音乐客户端设计与实现进行讨论。本论文的音乐客户端主要采用的是android平台,利用java语言和eclipse编辑工具对此音乐客户端进行编写,同时给出了在线音乐客户端的系统设计过程、主要界面图及功能运行流程图,文章中还对开发过程中遇到的问题和解决方案进行了详细的讨论,该音乐客户端集播放、暂停、上一首、下一首、音量调节、歌词显示等功能于一体,性能良
6、好,在android系统中能独立运行。此音乐客户端还可以通过访问音乐网址实现在线听音乐的功能。关键词:android ; 开源系统 ; linux ; 音乐客户端abstract with the increasingly rapid pace of social life, as well as hardware and more advanced mobile devices, we are moving equipment requirements are also rising, from the original to the current pursuit pursuit of t
7、echnological vision. thus, also gradually improve the operating system requirements. android is an open source system, the bottom is mainly based on the linux kernel, and the main article is based on the android platform for online music clients to discuss design and implementation. in this thesis,
8、the main clients of music using the android platform, the use of the java language and eclipse editing tools for the preparation of this music client, and gives the clients online music system design process, the main interface and functional operation flow chart diagram, articles the development pr
9、ocess also encountered problems and solutions were discussed in detail, the client sets the music play, pause, previous, next, volume control, lyrics display and other functions, good performance, in android system can operate independently. this music client can also access music website for online
10、 music functions.keywords:android ; open source system ; linux ; music client第一章 引 言1.1 项目背景 随着社会生活节奏越来越快,我们对手机功能的要求也越来越高,由于手机市场飞速发展,手机操作系统也跟着出现了很多不同的种类,如今市场上主要的手机操作系统有三个,分别是ios,windows phone,以及谷歌的android操作系统,其中占有开放源代码优势的android系统的发展前景最大。那么能否在手机上拥有自己编写的个性音乐播放器呢?当然可以,谷歌android系统就可以做到。本文的音乐客户端就是基于谷歌an
11、droid手机平台的mp3播放器。 android:是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能将手机系统中的功能根据自己的喜好重新编写。这使得越来越多的人关注开始这个操作系统。本次作品在线音乐客户端就是基于android平台的。 随着计算机的广泛运用,手机市场的飞速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经逐渐成为我们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,然而很多播放器只是追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如cpu,内存的占用率过高等,在用户需要多任务操作时,就会受
12、到影响,带来了很多不便,而对于大多数普通用户,很多功能是用不上的。针对以上这些弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,来满足一般用户的需求,除了能播放常见格式的语音视频文件,高级功能:还能播放rmvb格式的视频文件。此外,还能支持中文、英文等语言界面。 要研究市场上一些流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的特点和缺陷,编写出功能实用,使用方便快捷的播放器。目前已经实现的功能为可以播放常见音频文件的功能,如mp3,wav,等,拥有歌曲列表,具备一般播放器的功能,如快进,快
13、退,上一曲,下一曲,音量调节等。1.2 编写目的 随着当今社会的飞速发展,我们的生活节奏也不断加快精神压力不断增大,欣赏音乐就是舒缓压力最好的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计 的实现的主要功能是播放mp3,wav多种格式的音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和在线播放等多种播放控制功能,界面简明,操作简单。 本项目是一款基于android手机平台的在线音乐客户端,使android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使我们的生活更加多样
14、化。也使设计者更加熟练android的技术和其它在市场上的特点第二章 android平台及开发工具介绍2.1 什么是android?2.1.1 android简介 android一词的本义指“机器人”,同时也是google于2007年11月5日宣布的基于linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前最好的是android2.0的摩托罗拉droidandroid是基于linux内核的软件平台和操作系统,早期由google开发(在华注册商标名为“安致”),后由开放手机联盟(open handset
15、alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以java作为编写程序的一部分。另外,为了推广此技术,google和其它几十个手机公司建立了开放手机联盟。android在未公开之前常被传闻为google电话或gphone。大多传闻认为google开发的是自己的手机电话产品,而不是一套软件平台。到了2010年1月,google开始发表自家品牌手机电话的nexus one。目前最新sdk版本为android android featur
16、es特性 android系统有如下的几大特性: 应用程序框架 支持组件的重用与替换 dalvik虚拟机 专门为移动设备做了优化 内部集成浏览器 该浏览器基于开源的webkit引擎 优化的图形库 包括2d和3d图形库,3d图形库基于opengl es sqlite 用作结构化的数据存储 多媒体支持 包括常见的音频、视频和静态印象文件格式(如 mpeg4, h.264, mp3, aac, amr, jpg, png, gif) gsm电话(依赖于硬件) 蓝牙bluetooth, edge, 3g, and wifi (依赖于硬件) 照相机,gps,指南针,和加速度计 (依赖于硬件) 丰富的开发环
17、境 包括设备模拟器,调试工具,内存及性能分析图表,和eclipse集成开发环境插件2.1.3 android基本框架(android architecture)图 2.1 android architecture(1) applicationsapplication android会同一个核心应用程序包一起发布,该应用程序包包括email客户端,sms短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用java编写的。(2) application framework 开发者完全可以访问核心应用程序所使用的api框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可
18、以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组建可以被用户替换。 所有的应用程序都由一系列的服务和系统组成,包括: 可扩展的视图(views )可以用来建应用程序,包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至包括一个可嵌入的web浏览器内容管理器(content providers )使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。资源管理器(resource manager)提供非代码资源的访问,如本地字符串,图形,和分层文
19、件(layout files )。通知管理器(notification manager)使得应用程序可以在状态栏中显示客户通知信息。活动类管理器(activity manager)用来管理应用程序生命周期并提供常用的导航回退功能。(3) libraries库 android 包括一个被 android 系统中各种不同组件所使用的 c/c+ 库集。该库通过 android 应用程序框架为开发者提供服务。以下是一些主要的核心库:系统 c 库- 一个从 bsd 继承来的标准 c 系统函数库( libc ),专门为基于 embedded linux 的设备定制。 媒体库- 基于 packetvideo
20、 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 - 位图(bitma
21、p)和向量(vector)字体显示。 sqlite 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。(4) android runtimeandroid 包括了一个核心库,该核心库提供了java编程语言核心库的大多数功能。每一个android应用程序都在它自己的进程中运行,都拥有一个独立的dalvik虚拟机实例。dalvik是针对于同时高效地运行多个vms来实现的。dalvik虚拟机执行.dex的dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由java汇编器编译,然后通过sdk中的dx工具转化成.dex格式由虚拟机执行。dalvik虚
22、拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。2.1.4 android系统的四大组件在android系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像activity,contentprovider是可见的视图,service和broadcastreceiver是不可见的,它们只在系统的后台运行。下面分别介绍四大组件:(1)activity 简介在android系统中activity提供可视化的用户界面,一个android应用通常由多个activity组成。多个activity组成了activity栈(stack),当前活动的ac
23、tivity处于栈顶。activity有自己的生命周期,由android系统来控制。 (2)service 简介 顾名思义service就是运行在后台的一种服务程序,一般很少和用户交互,因此没有可视化界面定义一个service类比较简单,只要继承service类,实现其生命周期中的方法就可以了。一个定义好的service必须在androidmanifest.xml配置文件注册,通过元素声明才能使用.service有自己的生命周期,我们可以调用startservice()启动一个service或者bindservice()方法来绑定一个存在的service (3)broadcast receiv
24、er 简介 broadcast receiver 顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。到目前为止我们可以使用intent来启动一个程序组件,我们还可以通过使用sendbroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在你的应用程序中实现broadcast receiver来监听和响应这些广播的intent (4)contentprovider简介 content provider 用来保存和检索数据,并且使应用程序之间相互访问数据成为可能。它是跨应用程序共享数据的唯一方
25、法。 android 为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的content provider。它们被定义在vider包下面。通过这样定义好的contentprovider 我们可以方便的进行数据操作。当然我们必须拥有适当的权限。我们也可以自己来定contentprovider共享我们的数据,方便用户的访问 2.2 eclipse开发工具介绍 eclipse 是一个开放源代码的、基于java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,包括java开发工具(ja
26、va development kit,jdk)。虽然大多数用户很乐于将 eclipse 当作 java 集成开发环境(ide)来使用,但 eclipse 的目标却不仅限于此。eclipse 还包括插件开发环境(plug-in development environment,pde),这个组件主要针对希望扩展 eclipse 的软件开发人员,因为它允许他们构建与 eclipse 环境无缝集成的工具。由于 eclipse 中的每样东西都是插件,对于给 eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。 2.2.1android项目andro
27、id的四大基本组件:activity(活动),service(服务),broadcastreceiver(广播),contentprovider(内容提供者),各组件之间要进行切换需要一个意图或企图intent类,通过启动startintent()方法来使各组件进行跳转android的五大布局方式:linearlayout(线性布局) framelayout(帧布局) tablelayout(表格布局) absolutelayout(绝对布局) relativelayout(相对布局)五种布局方式可以相互嵌套,android各种漂亮的界面都是通过嵌套布局而实现的。android的线程,以及线程
28、之间通信的中介:handler类android数据库:在第三章已经介绍过了。这里不再介绍android配置文件:androidmanifest.xml及res资源文件中各种属性 布局方式 引用的资源等android系统将插件adt集成到了eclipse工具上,因此,一个android程序启动后,系统会启动一个模拟器(emulator)(图2.2),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。我们也可以将右边的键盘通过代码属性设置将其隐藏,界面的大小可自由设定,目前最大支持800x600的分辨率。图 2.2 android模拟器 2.2.2android工程程序结构android工程基本
29、结构目录包括:src (源代码)、gen(android系统自动生成的常量)、res(资源文件):主要存放程序界面的布局配置(.xml)文件和图片资源。androidmainfes.xml 是四大组件的驱动配置文件,有它的存在,android程序的四大组件才可以正常的跳转。android资源的类型和布局(图2.3)图 2.3 下图2.2.1 -图2.2.5为音乐播放器代码结构和各界面的配置文件,图像资源等,图2.2.1 为一个android工程所必须的结构,图2.2.2为该播放器的.java文件,图2.2.3为播放器所用到的字符串,字体大小,字的颜色等配置文件,图2.2.4为 该播放器的各种界
30、面的布局配置文件,图2.2.5为该播放器的图片资源。图 2.2.1 图2.2.2 图2.2.3 图2.2.4 图2.2.5第3章 在线音乐客户端总体设计3.1 功能需求(用列表方式分析) 根据项目的目标,我们可获得项目系统的基本需求,以下开始介绍在线音乐客户端的整体功能需求,并使用列表的方式来描述,我们分成两部分来概括,即本地音乐的操作和在线音乐部分的操作。3.1.1 本地音乐的基本控制需求用例名称:播放参与者:用户目标:使得用户可以播放在播放列表中选中的歌曲前置条件:播放器正在运行基本事件流:1.用户单击“播放”按钮 2.播放器将播放列表中的当前的歌曲用例名称:暂停参与者:用户目标:使得用户
31、可以暂停正在播放的歌曲前置条件:歌曲正在播放且未停止和暂停基本事件流:1.用户单击“播放”按钮 2.播放器将暂停当前的歌曲用例名称:第一首/最后一首参与者:用户目标:使得用户可以从第一首或最后一首歌曲开始听前置条件:歌曲正在播放或暂停基本事件流:1.用户单击“第一首或最后一首”按钮 2.播放器将播放第一首或最后一首歌曲用例名称:上一首/下一首参与者:用户目标:使得用户可以听上一首或下一首歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户单击“上一首或下一首”按钮 2.播放器将播放上一首或下一首歌曲用例名称:歌词歌曲同步参与者:用户目标:使得用户可以歌词跟唱歌曲前置条件:sdcard存入与歌曲
32、匹配的lrc歌词文件基本事件流:1.用户点击想要播放的歌曲 2.播放器显示所点击播放歌曲的歌词用例名称:快进/快退参与者:用户目标:使得用户可以快进或快退歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户向前或向后拖动播放进度条 2.播放器将快进或快退歌曲用例名称:音量控制参与者:用户目标:使得用户可以控制歌曲音量前置条件:歌曲正在播放或暂停基本事件流:1.用户向前或向后拖动音量进度条 2.播放器将调节歌曲的音量用例名称:歌曲列表参与者:用户目标:使得用户可以进入播放清单前置条件:程序在运行,播放器正在播放本地歌曲基本事件流:1.用户单击手机上的“返回”按钮 2.播放器进入歌曲列表3.1.2
33、 本地音乐的基本控制需求用例名称:在线试听参与者:用户目标:使得用户可以感受在线试听的魅力前置条件:程序运行且手机处于wifi连接的状态基本事件流:1.用户单击“在线试听”按钮 2.播放器进入在线试听状态用例名称:搜索参与者:用户目标:使得用户可以在线试听搜狗音乐新歌榜top100前置条件:在歌曲名称和歌手名称栏中输入想要试听的歌曲名称和歌手名称基本事件流:1.用户单击“搜索”按钮 2.显示所获得的歌曲链接用例名称:播放参与者:用户目标:使得用户开始试听搜索的歌曲前置条件:用户单击搜索按钮后成功获得歌曲链接基本事件流:1.用户单击“播放”按钮 2.播放器进入在线试听界面用例名称:快进/快退参与
34、者:用户目标:使得用户可以快进或快退歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户点击“快进/快退”按钮 2.播放器将快进或快退歌曲用例名称:音量控制参与者:用户目标:使得用户可以控制歌曲音量前置条件:歌曲正在播放或暂停基本事件流:1.用户向前或向后拖动音量进度条 2.播放器将调节歌曲的音量用例名称:停止参与者:用户目标:退出在线试听播放界面前置条件:在线试听正常运行基本事件流:1.用户单击手机的“返回”按钮 2.播放器将退出在线试听播放界面3.2 流程图和系统结构图3.2.1音乐播放器的系统流程图(图3.2.1)图3.2.1 流程图3.2.2系统功能表(表3.1)和系统功能结构图(图3
35、.2.2)功能类别子功能子功能播放列表歌曲列表退出播放播放-进入播放界面本地音乐播放界面播放播放歌曲-线程启动-时间更新暂停暂停歌曲-线程暂停-时间暂停第一首播放列表索引变化-寻找第一id歌曲最后一首播放列表索引变化-寻找最后一id歌曲快进快进歌曲-线程启动-时间更新快退快退歌曲-线程启动-时间更新音量改变音量-线程启动-音量更新上一首播放列表索引变化-寻找上一id歌曲下一首播放列表索引变化-寻找下一id歌曲播放界面菜单返回到播放列表退出播放器在线试听歌曲名称匹配歌名歌手名称匹配歌手搜索搜索歌曲-适配器启动-获取地址播放播放-进入在线试听播放界面在线试听播放界面播放播放歌曲-线程启动-时间更新
36、暂停暂停歌曲-线程暂停-时间暂停快进快进歌曲-线程启动-时间更新快退快退歌曲-线程启动-时间更新音量改变音量-线程启动-音量更新主菜单退出程序程序退出进入播放列表显示播放列表表3.1 功能表图3.2.2 系统功能结构图3.3 系统界面需求 播放器界面要求布局合理,颜色舒适,控制按钮友好,为了减少开发工程量,图片素材多数为网络寻找的素材(图3.3)图3.3 播放器界面说明:左侧为本地音乐播放界面 右侧为在线试听播放界面3.4 系统性能需求根据android手机系统要求无响应时间为5秒,所以就有如下性能要求:(1) 当要求歌曲播放时,程序响应时间最长不能超过5秒(2) 当要求歌曲暂停时,程序响应时
37、间最长不能超过5秒(3) 当要求歌曲停止时,程序响应时间最长不能超过5秒(4) 当要求歌曲上/下一首时,程序响应时间最长不能超过5秒(5) 当要求进行清单列表时,程序响应时间最长不能超过5秒(6) 当要求歌曲第一/最后一首时,程序响应时间最长不能超过5秒(7) 当要求快进/快退时,程序响应时间最长不能超过5秒(8) 当要求改变音量时,程序响应时间最长不能超过5秒3.5 运行环境需求操作系统:android手机基于linux操作系统支持环境:android 1.5 - 4.2.2版本开发环境:eclipse 3.5 adt 0.95 第四章 在线音乐客户端详细设计4.1音乐播放器主界面功能实现4
38、.1.1 播放器主界面播放器主界面(图4.1)图 4.1android的每一个可视化界面,都有其的唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取。这样就可以形成不同的可视化界面和炫丽的效果。播放器主界面是一个activity,android工程在每个activity启动的时候会首先执行oncreate()方法,如下代码:overrideprotected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); r
39、equestwindowfeature(window.feature_no_title); this.getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen); setcontentview(r.layout.music);该方法主要执行界面的初始化操作,activity有个设置布局的方法:context.setcontentview(layoutresid),参数为资源id,该id在工程目录res/layout下,主界面布局文件名为m
40、usic。下面为music.xml布局文件代码结构如下: 在绝对布局下嵌套两种线性布局和,第一个实现了标题和歌曲名的显示位置,通过布局设置绝对坐标来控制标题的位置。每个布局内可以放置多种widget(窗体部件)例如:等。每个widget内有多种属性,可以设置该widget的坐标,大小,背景和颜色等参数。在播放界面中,歌词显示为居中,实现方法代码如下:属性:orientation=horizontal:此线性布局的子部件为水平方式布局layout_width=fill_content :布局的宽度为填满父布局layout_height=wrap_content :布局的高度子由窗体的大小决定 窗
41、体textview 文本 :textcolor=8deeee 设置文本显示的颜色rgb为 8deeeetextsize为默认大小5.1.2 播放界面音轨的实现播放器音轨seekbar(如下图)android系统自带seekbar(如下图)图 5.2 不管是从界面外观还是从功能上,系统自带的seekbar往往不能满足用户的需要。所以我在这里自定义了一个音轨seekbar,在play_rack.xml配置文件中,seekbar的代码如下: 上面代码中有参数android:thumb=drawable/thumb 为音轨游标的图片资源android:progressdrawable=drawable
42、/seekbar_style为seekbar条的风格style。引用了drawable中的seekbay_style.xml文件,seekbay_style.xml是自定义的配置文件,算法如下:layer-list xmlns:android= 配置文件中三个item项依次决定了seekbar的三层背景,从最下层的灰色到最上层的蓝色。通过各种属性设置了seekbar的倾斜度,两端圆半径,角度,中心位置,起始,中心和结束的颜色,游标的起始位置。通过这些属性设置,就自定义一个如上图一的seekbar音轨.播放器最重要的一部分就是音轨与歌曲进度同步的实现。音轨设置了两个textview用来显示当前歌
43、曲播放的进度时间和歌曲的长度(图5.3) 图 5.3 音轨对象seekbar在歌曲刚开始播放的时候调用方法seekbar.setmax(),参数传入歌曲的长度。seekbar.setprogress(1)设置游标的起始进度为1。然后程序运行如下代码: private runnable thread_one = new runnable() / 线程public void run() int currently_progress = seekbar.getprogress() + 1000; seekbar.setprogress(currently_progress);currently_ti
44、me.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方法发送过来的不同的消息进行不同的代码处理。这样就达到了各线程之间的通信
45、。要启动一个线程调用handler的方法postdelayed(runnable,1000)表示线程睡眠时间是1000ms 。以上代码意思是让播放歌曲的线程每隔1000ms,即每1秒对音轨的textview重新设置时间且让进度条前进1秒的进度。对音轨进行刷新。这样就实现了歌词同步功能seekbar有一个监听器,该监听器的作用是一直保持着对进度条的监听,当我们用鼠标向seekbar的各位置进行点击时,它会自动监听其位置,进行相应的位置显示。这也是进度条上的游标会不停的移动和歌词时间会不停的变动的原因。5.1.3 播放器播放、暂停、停止等功能图 5.4 如图5.4所示:各按钮水平放置,用的是布局中
46、的线性布局linearlayout,用方法setorientation(horizontal);将其设置为水平。linearlayout中依次放置播放,暂停,停止,上、下一曲按钮属性。配置文件代码结构如下: android的媒体播放原理:android源程序已经为我们封装好了一个接口类,叫mediaplayer。该接口在执行行需要一个数据源,通过如下四个步骤:第一步:mediaplayer.reset();复位操作,为以后的媒体准备播放作准备。 第二步:传入歌曲数据源,这里也是一个数据流 mediaplayer.setdatasource(string path);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。第三步:准备播放数据源,调用方法mediaplayer.prepare();第四步:mediaplayer.start();播放数据源,该数据源播放后,不再与程序 有关,需要用mediaplayer.stop()方法让其停止或mediaplayer.start();让其启动;歌曲数据源的获得:要获得数据源,需要我们提供给接口类一个歌曲存放路径,而这个路径已经被事先放到数据库里了,我们只需要进行数据库进行操作。将里面的路径取出。这里将调用playrackactivity的一个方法query();代码算法如下:public string que
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字课程设计电路图
- 首饰收纳课程设计思路
- 路桥施工课程设计
- 全媒体运营插画课程设计
- 土地转换合同模板
- 公租房外租合同模板
- 2024年度山西省高校教师资格证之高等教育心理学通关题库(附答案)
- 2023年真空电子器件及零件资金筹措计划书
- 2024年福建省砌筑工竞赛理论题题库及答案
- 餐厅服务基本理论知识考试题及答案
- 签订《商品房买卖合同》业务流程图
- 设备设施检维修及验收记录表
- cia题库第二部分
- 纯音听阈测试(曹永茂)
- 喉罩(LMA)-麻醉课件
- 新课标背景下高中数学大单元教学的实施策略
- 中国近代史纲要3
- 无负压供水设备管网叠压无负压变频供水设备选型样本数据手册
- GMP质量管理体系文件 中药材干燥记录
- 教学设计 《找规律》教学设计【省一等奖】
- 直流系统级差保护
评论
0/150
提交评论