Android平台音乐播放器说明书

更新时间:2024-06-20 22:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

当今社会的生活节奏越来越快,随着硬件移动设备的越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉,因此,也逐步的提高了对应用程序的要求。在全球信息化的今天,手机已经成为人们日常生活中不可缺少的一部分,尤其是在电子产品日新月异的今天,我们在平时随处可见的电子产品中,手机用户无疑是一个最大的用户集,其中的代表作有苹果的IOS系统,Nokia的塞班系统,摩托罗拉的Linux系统,黑莓系统等,但在众多的手机系统中,android系统以其代码开源 ,设计完美,编写方便,赢得了广大程序员的喜爱,另外酷炫的界面,强大的功能,超多的应用(这是其他软件系统望尘莫及的)操作简单,让人们注目的对象,成为使用率最高的手机系统。本设计采用Java语言和Eclipse编辑工具在Android平台下开发一个音乐播放器应用程序,该音乐播放器主要实现了音乐文件的播放、暂停、上一首、下一首,音轨调节,歌曲相关图片显示,本地音乐管理,网络音乐管理,音乐的收藏等功能。本设计的音乐播放器界面美观、操作简单,可以满足用户使用手机播放音乐的基本需求。

关键词:Android;音乐播放器;Eclipse

- I -

基于Android平台的手机音乐播放器的设计与实现

Abstract

Faster and faster pace of life in today's society, with the hardware of mobile devices become increasingly sophisticated, people are increasingly high requirements of mobile devices from the previous pursuit of technology to the pursuit of vision. Therefore, are gradually increasing system requirements. In today's global information technology, mobile phones have become an indispensable part of daily life, especially rapid in electronic products, electronic products usually can be seen everywhere, the phone is undoubtedly one of the largest set of users, one of the masterpieces Apple's IOS system, Nokia's Symbian system, Motorola's Linux systems, and the BlackBerry system, but the phone system, Android system with its code open source, perfect design, preparation of convenience, won the majority of programmers love another cool interface, powerful features, the ultra-application (which is unmatched by other software systems) is simple, allow people the object of attention, the highest utilization rate of the mobile phone system. Of this paper is to discuss the music player application on the Android system design and implementation. Use of the Java language and Eclipse editing tools to be written to the player, and gives a detailed system design process, part of the interface map and run flow chart of the main function, the paper also problems and solutions encountered in the development process in detail discussion, the player set to the music play, pause, stop, previous one, the next song, adjust volume, lyrics display, management of local music, online music management, music collections and other functions in one, good performance, the Android system able to run. The player also has access to the phone file browser functionality, the friendly setting of the album art.

Key Words:Android ; Music Player ; Eclipse

- II -

目 录

摘 要 ............................................................................................................................................ I Abstract .............................................................................................................................................. II 第1章 概述 ...................................................................................................................................... 1

1.1 项目背景 ............................................................................................................................ 1 1.2 国内外现状 ........................................................................................................................ 2 1.3 目的及意义 ........................................................................................................................ 2 第2章 相关技术 ............................................................................................................................. 3

2.1 Android简介 ....................................................................................................................... 3 2.2 Java简介 ............................................................................................................................. 6 2.3 eclipse简介 ......................................................................................................................... 8 第3章 系统分析 ............................................................................................................................. 9

3.1 可行性分析 ........................................................................................................................ 9

3.1.1 经济可行性 ............................................................................................................. 9 3.1.2 技术可行性 ............................................................................................................. 9 3.1.3 操作可行性 ............................................................................................................. 9 3.2 需求分析 ............................................................................................................................ 9 第4章 数据库设计 ...................................................................................................................... 15

4.1 E-R图及逻辑结构设计 .................................................................................................. 15

4.1.1 音乐播放器E-R图 ............................................................................................. 15 4.1.2 逻辑结构设计 ...................................................................................................... 16 4.2 数据库连接和创建 ......................................................................................................... 17 第5章 详细设计 .......................................................................................................................... 19

5.1 创建项目 ......................................................................................................................... 19 5.2 播放器界面设计 ............................................................................................................. 26

5.2.1 动画设计 .............................................................................................................. 26 5.2.2 布局的设计 .......................................................................................................... 27 5.2.3 播放器音轨SeekBar的设计 ............................................................................. 28 5.2.4 基本功能的设计.................................................................................................. 30 5.3 播放列表的设计 ............................................................................................................. 32

5.3.1 默认播放列表设计 ............................................................................................. 33 5.3.2 自定义播放列表设计 ......................................................................................... 35

- III -

基于Android平台的手机音乐播放器的设计与实现

5.4 其他功能的设计 ............................................................................................................. 35

5.4.1 本地音乐 .............................................................................................................. 36 5.4.2 网络曲库 .............................................................................................................. 37 5.4.3 下载管理 .............................................................................................................. 37 5.4.4 收藏管理 .............................................................................................................. 39

结 论 ......................................................................................................................................... 43 参考文献 ......................................................................................................................................... 44 附录 源代码 ................................................................................................................................. 45 致 谢 ........................................................................................................ 错误!未定义书签。

- IV -

第1章 概述

1.1 项目背景

当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有五个手机操作系统,苹果的IOS系统,谷歌的Android操作系统、Windows mobile、symbian、以及黑莓系统,其中占有开放源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?谷歌Android系统就能做到。本次设计的音乐播放器就是基于谷歌Android手机平台的播放器。

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟开发。它采用了软件堆层的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2012年1月,Google开始发表自家品牌手机电话的Nexus One。目前最新SDK版本为Android 4.0.3。

随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户的需求,除了能播放常见格式的语音视频文件,高级功能:还能播放RMVB格式的视频文件。此外,还能支持中文、英文等语言界面。

要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。目前已经实现的功能有能播放常见音频文件的功能,如MP3,拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快进、快退、音量调节等。还有本地音乐、网络音乐的管理、以及用户对喜好歌曲的收藏等。

- 1 -

基于Android平台的手机音乐播放器的设计与实现

1.2 国内外现状

目前Android手机在国内外有很庞大的用户,很多手机厂商都在使用谷歌的Android手机系统,目前有联想、HTC、三星、摩托罗拉、华为、索爱等知名手机厂商,可以说现在Android系统手机的发展前景是很乐观的,在国内近两年来用户手里的手机系统大部分都是苹果系统、Android系统,现在Android系统已经更新到4.0了,像HTC最近处了一款手机就是4.0系统,并且采用手机史上一次用的是四核手机处理器,相继三星等公司也使用了Android 4.0系统作为新款手机的操作系统,所以可以说Android系统的发展前景跟现状都是很受手机用户欢迎的。

1.3 目的及意义

现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计 的实现的这主要功能是播放Mp3的音乐文件,并且能够控制播放、暂停、停止、上一曲、下一曲、音量调节、视觉外观、播放列表和歌曲文件的管理操作等多种播放控制功能、界面简明、操作简单。

本设计是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。是人们的生活更加多样化。也使设计者更加熟练Android的技术和其他在市场上的特点。

- 2 -

第2章 相关技术

2.1 Android简介

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2012年1月,Google开始发表自家品牌手机电话的Nexus One。目前最新SDK版本为Android 4.0.3。 1.Android Features特性

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,指南针,和加速度计(依赖于硬件)。

丰富的开发环境:包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集2.Android基本框架

Android的框架可分为四层:第一层以Linux为内核的核心层,使用c、c++编写的。第二层系统运行的类库层,也是用c、c++编写的,这里有系统类库、Dalvik虚拟机。第三层是应用程序框架层,里面有Activity Manager(活动管理器)、Window Manager(窗口管理器)、Content Provider(内容提供器)等。第四层是应用程序层,包含了SMS短信客户端程序、电话拨号程序、图片浏览器等应用程序,这些应用程序都是用Java语言编写的,并且是可以被开发人员开发的其他应用程序替换。 Android平台的基本框架(Android Architecture)如图2-1所示。

- 3 -

成开发环境插件。

基于Android平台的手机音乐播放器的设计与实现

图2-1 Android基本框架图

(1)Application

Application Android会同一个核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的。

(2)Application FrameWork

开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组建可以被用户替换。

所有的应用程序都由一系列的服务和系统组成,包括:可扩展的视图(Views)可以用来建应用程序,包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至包括一个可嵌入的web浏览器;内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据;资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和分层文件(layout files);通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知

- 4 -

信息;活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能;

(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内核

Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。未来发展老牌智能手机软件平台制造商Symbian发言人则表示:Google的Android只不过是另一个linux,symbian对其它软件与其形成的竞争并不感到担心。除了北美之外,Symbian在其它地区智能手机市场都占有大部分市场份额。与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。 3.Android系统的四大组件

- 5 -

基于Android平台的手机音乐播放器的设计与实现

在Android系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像Activity,ContentProvider是可见的视图,Service和BroadcastReceiver是不可见的,它们只在系统的后台运行。下面分别介绍四大组件:

Activity简介: 在Android系统中Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成。多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。Activity有自己的生命周期,由Android系统来控制。Service简介:顾名思义Service就是运行在后台的一种服务程序,一般很少和用户交互,因此没有可视化界面定义一个Service类比较简单,只要继承Service类,实现其生命周期 中的方法就可以了。一个定义好的Service必须在AndroidManifest.xml配置文件注册,通过元素声明才能使用。Service有自己的生命周期,我们可以调用 startService()启动一个Service或者bindService()方法来绑定一个存在的Service。Broadcase Receiver简介:Broadcast Receiver 顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。到目前为止我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在你的应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent。ContendProvide简介:Content Provider 用来保存和检索数据,并且使应用程序之间相互访问数据成为可能,它是跨应用程序共享数据的唯一方法。

Android 为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的Content Provider。它们被定义在Android.provider包下面,通过这样定义好的ContentProvider ,我们可以方便的进行数据操作,当然我们必须拥有适当的权限。我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问。

2.2 Java简介

Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。

在Java出现以前。Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开

- 6 -

始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星。 1. Java的定义

Java是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。

Java的开发环境有不同的版本,如sun公司的Java Developers Kit,简称 JDK。后来微软公司推出了支持Java规范的Microsoft Visual J++ Java开发环境,简称 VJ++。 2. Java的特点 (1)平台无关性

平台无关性是指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。 (2)安全性

Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。 (3)面向对象

Java 吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java 提供了众多的一般对象的类,通过继承即可使用父类的方法。在 Java 中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类为Object 类,Object 类功能强大,经常会使用到它及其它派生的子类。 (4)分布式

Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。 (5)键壮性

Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了

- 7 -

基于Android平台的手机音乐播放器的设计与实现

覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供:Null指针检测、数组边界检测、异常出口、Byte code校验。

2.3 eclipse简介

Eclipse是一种可扩展的开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。

Eclipse框架的这种灵活性来源于其扩展点。它们是在XML中定义的已知接口,并充当插件的耦合点。扩展点的范围包括从用在常规表述过滤器中的简单字符串,到一个Java类的描述。任何Eclipse插件定义的扩展点都能够被其它插件使用,反之,任何Eclipse插件也可以遵从其它插件定义的扩展点。除了解由扩展点定义的接口外,插件不知道它们通过扩展点提供的服务将如何被使用。

利用Eclipse,我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器等)结合在一起。如果这些互相补充的独立工具采用Eclipse扩展点彼此连接,那么当我们用调试器逐一检查应用时,UML对话框可以突出显示我们正在关注的器件。事实上,由于Eclipse并不了解开发语言,所以无论Java语言调试器、C/C++调试器还是汇编调试器都是有效的,并可以在相同的框架内同时瞄准不同的进程或节点。

Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件,这类似于微软公司的Visual Studio和Sun 微系统公司的NetBeans平台。Eclipse为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术。Eclipse 联盟已经宣布将在2004年中期发布其3.0版软件。这是一款非常受欢迎的java开发工具,这国内的用户越来越多,实际上实用它java开发人员是最多的。缺点就是较复杂,理解起来比较困难。

- 8 -

第3章 系统分析

3.1 可行性分析

该阶段通过对系统目标的初步调研和分析,提出可行性方案并进行论证。我们在这里主要从技术可行性、经济可行性和操作可行性三方面进行分析。 3.1.1 经济可行性

开发该系统所需的相关资料可以通过网络下载,所需的其他应用软件、硬件系统也易于获得,没有Android手机也可以在网站上下载虚拟机。因此,开发成本较低。而引进使用本系统后,与传统方式相比,具有界面美观、低成本、高质量、易操作的特点,可以节省不少人力、物力及财力。所以,从经济的角度来看,该系统可行。 3.1.2 技术可行性

本系统主要完成了对音乐文件的播放功能,以及对本地音乐、网络音乐的。实现音乐播放器的开发。

开发工具:eclipse。 数据库环境:SQLite。

系统环境:Microsoft Windows 2000或以上版本。

系统实现依靠相对熟悉的Java语言和SQLite数据库系统,其基本操作实质还是对数据库进行添加、删除、查找等操作,暂不存在技术问题。 3.1.3 操作可行性

本系统采用目前主流的MVC结构开发,方便管理维护,另外也可节省资源。并且Android手机的应用程序都是开源的,可以对程序即时改动,手机对大多数人来说,操作起来根本就很简单。只要会用手机的人都会很快使用本应用程序。所以操作可行性,是可以的。

3.2 需求分析

随着手机的发展,手机应用程序的日趋发达,对Android手机应用程序日益流行。同时,在Android手机很火的情况下,应用程序也取得了优良的经济效益和社会效益。为此,开发一个让用户满意,让用户赏心悦目的音乐播放器应用程序是可行的。可见,音乐播放器的开发化势在必行。音乐播放器应用程序将先进的编程技术与智能手机完美地结合起来,实现了对音乐文件的播放,对本地音乐管理、网络音乐下载、音乐的收藏等功能。

- 9 -

基于Android平台的手机音乐播放器的设计与实现

传统的音乐播放器往往令使用者感觉到界面的美观,功能的不足,例如:界面老化、功能太少,操作不合理等,从而让使用者一般都是在听,从来不会被界面所吸引。从以上问题可通过先进的编程技术,合理的开发,精致的界面设置,功能的强大,是可以让使用者在听歌之余也会被良好的音乐播放器的界面所吸引。

在全球信息化的今天,手机已经成为人们日常生活中不可缺少的一部分,尤其是在电子产品日新月异的今天,我们在平时随处可见的电子产品中,手机无疑是一个最大的用户集,其中的代表作有苹果的IOS系统,Nokia的塞班系统,摩托罗拉的Linux系统,黑莓系统等,但在众多的手机系统中,android系统以其代码开源 ,设计完美,编写方便,赢得了广大程序员的喜爱,另外酷炫的界面,强大的功能,超多的应用(这是其他软件系统望尘莫及的)操作简单。这是Android的发展前景没有几个手机能够比拟的,这也是Android系统的应用程序的可观的发展前景。

我在经过对市场深入细致的分析和研究后,运用的先进计算机技术,结合Android手机的特点,开发了音乐播放器的应用程序。一个音乐播放器的应用程序不仅仅是让用户单纯的印个,它能让工作人员从繁琐的手工操作中解脱,并且音乐播放器的应用程序本身就代表着一种先进技术。随着它的深入,将带动其他应用程序,为Android手机应用程序的发展做先驱。为了达到这个要求,它必须依靠高起点的硬件环境和软件开发工具来保证系统的稳定和正常运行。

总之,使用音乐播放器的应用程序,将会有一下好处: (1)播放控制:快速简洁,易于操作,对音乐的管理很简单。 (2)高效的控制管理:能有效的提高播放器的使用性。。

(3)提高管理:使用者可以完全即时的对音乐进行增、删、改、查。

(4)舒缓工作压力:好的音乐播放器,精美的界面会让使用者赏心悦目,舒缓工作压力。

(5)即时更新音乐,下载音乐。

(6)树立良好的Android应用程序的形象。

根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。以下分别描述,如图3-1。

- 10 -

图3-1 播放器基本控制图

(1)用例名称:播放。 参与者:用户。

目标:使得用户可以播放在播放列表中选中的歌曲。 前置条件:播放器正在运行。

基本事件流:1. 用户单击“播放”按钮。

2. 播放器将播放列表中的当前的歌曲。 (2)用例名称:暂停。 参与者:用户。

目标:使得用户可以暂停正在播放的歌曲。 前置条件:歌曲正在播放且未停止和暂停。 基本事件流:1. 用户单击“暂停”按钮。

2. 播放器将暂停当前的歌曲。 (3)用例名称:上一首/下一首。 参与者:用户。

目标:使得用户可以听上一首或下一首歌曲。 前置条件:歌曲正在播放或暂停。

基本事件流:1. 用户单击“上一首或下一首”按钮。

2. 播放器将播放上一首或下一首歌曲。 (4)用例名称:播放进度控制。

- 11 -

基于Android平台的手机音乐播放器的设计与实现

参与者:用户。

目标:使得用户可以随意听某一进度时刻的音乐。 前置条件:程序在运行。 基本事件流:1. 用户单击进度条。 2. 播放器将播放当前进度。

(5)用例名称:退出程序。

参与者:用户。

目标:使得用户可以推出音乐播放器。 前置条件:程序在运行。

基本事件流:1. 用户单击Menu,再点击退出。 2. 播放器被退出。

(6)用例名称:进入播放列表。

参与者:用户。

目标:使得用户可以以列表的形式查看可以播放的音乐文件。 前置条件:程序在运行。

基本事件流:1. 用户单击“进入列表”按钮。 2. 查看音乐文件。

(7)用例名称:主菜单功能。

参与者:用户。

目标:使得用户可以以列表的形式查看可以播放的音乐文件。 前置条件:程序在运行。

基本事件流:1. 用户单击“主菜单”按钮。 2. 进入管理界面,对音乐进行管理。

(8)用例名称:Menu菜单功能。

参与者:用户。

目标:使得用户可以以列表的形式查看可以播放的音乐文件。 前置条件:程序在运行。

基本事件流:1. 用户单击“menu”按钮。 2. 系统管理。

播放器在播放的时候,有一些美观化的操作,比如在播放界面的背景添加精美的图片,解析并显示出音乐库中的歌手图片,解析并显示音乐库中歌手的名字,解析并显示音乐库中音乐的时间长度,解析并显示音乐库中音乐的专辑名称等。下图明确在播放界面中的显示设置,如图3-2。

- 12 -

播放界面 歌曲名称 专辑名称 歌手图片 歌曲时长

图 3-2 播放界面显示设置

播放器界面要求布局合理,颜色舒适,控制按钮友好,为了减少开发工程量,图片素材多数为公司项目素材,很多素材也是由美工做出来的,网站上也可以下载(如图3-3)。

图3-3 播放器界面

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

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

- 13 -

基于Android平台的手机音乐播放器的设计与实现

(3)当要求歌曲停止时,程序响应时间最长不能超过5秒。 (4)当要求歌曲上/下一首时,程序响应时间最长不能超过5秒。 (5)当要求进行清单列表时,程序响应时间最长不能超过5秒。

运行环境的需求也是由要求的,一个良好的运行环境可以让开发者有一个良好的心情去开发程序。

操作系统:Android手机基于Linux操作系统。 支持环境:Android 2.3.3。

开发环境:Eclipse 3.5 ADT 0.95、tomcat 6.0.33。

- 14 -

第4章 数据库设计

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

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

4.1 E-R图及逻辑结构设计

4.1.1 音乐播放器E-R图

根据功能与模块划分,可以得到音乐播放器 E-R(实体-联系:entity-relation图),如图4-1。

网络曲库 本地音乐 其他 收藏管理 图4-1 音乐播放器E-R图

下载管理 歌曲id 歌曲图片 歌手名字 歌曲名字 专辑名称 歌曲 组成 列表名字 播放列表 列表编号 播放器 组成 歌曲数目 - 15 -

基于Android平台的手机音乐播放器的设计与实现

4.1.2 逻辑结构设计

file_table 主要是保存歌曲名字、类型、路径。

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

通过Uri EXTERNAL_CONTENT_URI 来访问SDcard中的歌曲详细信息,以下需要在数据库中建三个表,每个表的属性如下。

存放媒体信息如musicname(歌曲名字)、albumname(专辑名字)、albumpicpath(专辑的路径)、compose(作者)、adddate(添加时间)、singer(歌曲名字)、groupname

(收藏组名称)。

表4-1

属性 _id musicname albumname albumpicpath composer adddate singer

数据类型 INTEGER TEXT TEXT TEXT TEXT TEXT TEXT

允许空 Not null Not null Not null Not null Not null Not null Not null

主键 Primary key

下表是收藏组数据表,在这个表中对收藏组给id属性,收藏组的名字即可。

表4-2 收藏组数据表

属性 _id groupname

数据类型 INTEGER TEXT

允许空 Not null Not null

主键 Primary key

下表是对上两个表做连接,能同时调用两个表的属性。

表4-3 连接两个表

属性 _id groupid musicid

数据类型 INTEGER INTEGER INTEGER

允许空 Not null Not null Not null

主键 Primary key

- 16 -

4.2 数据库连接和创建

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

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

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

* @author 3gtarena

*创建数据库,包括音乐下载历史记录的表,音乐收藏分组表和收藏分组项的表 */

public class DBOpenHelper extends SQLiteOpenHelper { public static final String DBNAME =\

public static final String TBL_HISTORY=\ public static final String TBL_MUSICGROUP=\ public static final String TBL_MUSICITEM=\ public static final int VERSION=1;

public DBOpenHelper(Context context){

super(context, DBNAME, null, VERSION); }

@Override

public void onCreate(SQLiteDatabase arg0) {

String _historySql=\

TBL_HISTORY+\

\\\\\\\

- 17 -

基于Android平台的手机音乐播放器的设计与实现

\

String _groupSql=\ TBL_MUSICGROUP+\

\ \ \

String _itemSql=\

TBL_MUSICITEM+\ \ \ \ \

arg0.execSQL(_historySql); arg0.execSQL(_groupSql); arg0.execSQL(_itemSql);

arg0.execSQL(\默认分组

')\ }

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }

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

要连接使用数据库则只需要创建DBOpenHelper对象就可以了,代码如下。 private DBOpenHelper mhelper;

public HistoryDAO(Context context){

mhelper=new DBOpenHelper(context); }

- 18 -

第5章 详细设计

5.1 创建项目

任何事物要运行,都要有它的环境,Android也有它的环境才能够运行,下面介绍播放器的开发环境配置。

搭建开发环境需要的软件:

1. 操作系统:window XP/Win7或linux。

2. 软件包:Android SDK(Software Development kit Java Development kit) 、ADT(Android Develoopment Tool)。

3. IDE环境:Eclipse IDE+ADT Eclipse3.3以上。

4. JDK:Java Runtime Environment虚拟机 、(JDK)Java Development kit。 软件下载结束后就可以开始安装了,安装步骤如下: 1. 安装Java虚拟机sun-java6-jdk版本。

2. 安装Eclipse工具,登陆官网以后,选择版本下载后进行安装。 Eclipse工具的版本如图5-1所示:

图5-1 Eclipse工具版本图

3. 安装Android SDK:首先要下载SDK,选择相应的系统进行安装。 sdk下载的地址图如图5-2所示:

图5-2 sdk下载的地址图

- 19 -

基于Android平台的手机音乐播放器的设计与实现

4. 安装Android ADT插件。运行Eclipse,选择help->install new software 选择add将会弹出一个Add Site对话框。对话框如图5-3。

图5-3 addSite对话框图

点击OK,选择要安装的软件,占next,然后选择接受协议,直到安装成功,重启Eclipse软件,设置Android SDK Home,Window->refrence。

设置Android SDK Home界面如图5-4所示:

图5-4 设置Android SDK Home界面图

在SDK location中输入SDK Tools路D:\\Androidsoftware\\Android-sdk-windows 点击OK,然后安装tomcat 6.0.33,这个安装过程根据安装说明说进行安装,这样Android环境就已经搭建成功了。

- 20 -

首先进出eclipse编译软件,点击我的电脑--办公--eclipse,如图5-5所示。

图5-5 启动eclipse

进入eclipse,点击File,选择New,点击Android Project,如图5-6所示。

图 5-6 起始页

在Project name填写项目的名字MyMusicClient,在Build Target中选择Android2.3.3版本,在填写Package name输入项目下包的名字com.tarena.Activity,如图5-7所示。

- 21 -

基于Android平台的手机音乐播放器的设计与实现

图5-7 创建项目

创建项目后,点击 示。

打开Android系统的虚拟机,虚拟机启动后,如图5-8所

图5-8 Android手机模拟器

虚拟机打开以后将下载好的音乐文件放到tomcat的work文件下,并启动tomcat,点击eclipse编译器上的DDMS,点击File Explorer,打开mut文件夹,将另一份下载的音乐文件musiconline退拽到sdcard文件夹下,结果如图5-9。

- 22 -

图5-9 虚拟机的sdcard

准备工作就已经准备好了,接下来就可以设计程序了。

Android的四大基本组件:Activity(活动),Service(服务),BroadcastReceiver(广播),ContentProvider(内容提供者),各组件之间要进行切换需要一个意图或企图Intent类,通过启动StartIntent()方法来使各组件进行跳转。

Android的五大布局方式:LinearLayout(线性布局) 、FrameLayout(帧布局) 、TableLayout(表格布局) 、AbsoluteLayout(绝对布局) 、RelativeLayout(相对布局)。 五种布局方式可以相互嵌套,Android各种漂亮的界面都是通过嵌套布局而实现的。 Android的线程,以及线程之间通信的中介:Handler类。

Android配置文件:AndroidManifest.Xml及res资源文件中各种属性布局方式引用的资源等。

Android系统将插件ADT集成到了Eclipse工具上,因此,一个Android程序启动后,系统会启动一个模拟器(Emulator),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。我们也可以将右边的键盘通过代码属性设置将其隐藏,界面的大小可自由设定,目前最大支持800*600的分辨率。

3. Android工程程序结构

Android工程基本结构目录包括:src (源代码):Java编写代码的地方、gen(Android系统自动生成的常量)、Res(资源文件):主要存放程序界面的布局配置(.xml)文件和图片资源。AndroidMainfes.xml 是四大组件的驱动配置文件,注册四大组件,非常主要,有它的存在,Android程序的四大组件才可以正常的跳转。Android资源的类型和布局,表2-1。

- 23 -

基于Android平台的手机音乐播放器的设计与实现

表5-1 资源的类型和布局表

目录结构 res/drawable res/layout res/values res/xml

资源类型 一些位图文件 XML布局文件 XML资源文件 XML文件

下图5-10音乐播放器代码结构和各界面的配置文件,为一个Android工程所必须的结构,src文件下的内容为该播放器的.Java文件,gen文件为播放器所用到的字符串,字体大小,字的颜色等配置文件,它是自动生成的。Android 2.3.3为该播放器的所用到的所有jar包。

图5-10 项目的各配置文件

3. AndroidManifest.xml文件

Android系统的任何一个程序启动都需要AndroidManifest.xml来启动程序,任何一个新建的工程目录都会自动生成一个AndroidManifest.xml文件,此配置文件是整个程序能够正常运行的核心,它里面包含了Android SDK的版本,程序运行的默认Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidManifest.xml中寻找标识来作出相应的操作。任何一个AndroidManifest.Xml文件的格式都应为:

- 24 -

Android系统有一个编码的规定,支持的编码是\,当程序中出现乱码是,我们须将其编码格式转化为\在 AndroidManifest.xml中会在第一行声明一句:

在application元素我们定义Android:icon=\。这个icon是系统默认自带的.png格式的图片。当让开发者可以在drawable中发很多图片,格式目前只支持.png、.jpg格式的图片。

Android:label=\,Android:icon是程序在手机中显示的图片,我们运用@drawable/icon表示了对res/drawable目录下的icon.png的引用。@string/app_name表示了对res/value目录下string.Xml中定义的app_name参数的引用。 android:name=\

这是系统确定的首先要启动的Activity是.ActivitySplash。

在intent-filter选项中,有action和category等等属性,我们需要定义action的值为Android.intent.action.MAIN,category的值为Android.intent.category.LAUNCHER,它们是系统的值,程序在解析到这些常用后就可以确定首先要启动的Activity。当我们需要通过一个组件触发另一个组件时,我们将设定action和category的其它属性值,系统会根据我们设定的属性值去AndroidManifest.Xml的application 中寻找标识,任何一个Activity的action和category是唯一,所以程序在任何时候都能唯一启动一个Activity,这样,不同的Activity之间的跳转就实现了。

在AndroidManifest.Xml中有一个根结点,它是我们需要定义的ADT版本,例如我们将其值设定为Android:minSdkVersion=\,则表示此Android工程所用的版本为2.3.3,Android还有1.1、1.5、1.6、2.0、2.1、2.2、2.3、3.0、4.0这几个版本。

- 25 -

基于Android平台的手机音乐播放器的设计与实现

如果我们需要对网络进行访问,比如打开一个网页,刚我还需要设置一个网络访问权限uses-permission,将其的值设置为Android:name=\,我们就可以访问网络了。当然uses-permission还有很多其它的权限,例如GPS定位权限,浏览器数据存取权限com.Android.browser.permission.READ_HISTORY_BOOKMARKS等等。

当程序的任何一个组件要用到时,都必须在AndroidManifest.Xml文件中声明。四大组件要使用前都需要声明,其声明方式如下:

其中声明provider时还需要声明其授权 authorities。每个组件里面还有很多的属性,会根据程序的具体需要定义不同的属性。过滤器intent-filter 有两种启动方式来启动界面: (1)显示方式

显示方式是在代码中的直接启动组件,启动时会声明Intent,在它的构造方法Intent(组件1,组件2)中直接指定一个组件的名字,然后调用方法startIntent(intent)以启动指定的组件。

(2)隐式方式

隐式方式是通过过滤器来过滤完成的,启动的组件必须满足action和category的条件才能够启动该组件。这些属性是在AndroidManifest.Xml文件中声明的。两种启动方式都可以通过程序setAction(ACTION常量)和startActivity(intent)或配置文件两种方式来实现组件的跳转。

5.2 播放器界面设计

5.2.1 动画设计

创建项目后,在项目下的res文件下的layout文件下新建.xml文件,文件名字为splash,在这里编写动画界面设计,在splas.xml文件中编写如下代码。

android:layout_width=\ android:layout_height=\ >

- 26 -

android:layout_width=\ android:layout_height=\ android:id=\ android:layout_gravity=\ android:src=\ />

为动画做闪屏动作,这样可以使这个动画在2秒钟后自动跳转到下一个Acitvity界面上,设计代码如下。

ImageView _ivSplash=(ImageView)findViewById(R.id.ivSplash);

Animation _anim=AnimationUtils.loadAnimation(this, android.R.anim.fade_in); _ivSplash.setAnimation(_anim); 5.2.2 布局的设计

要为这个Activity布局,我选用的LinearLayout做布局的,在一个大的LinearLayout下我有布置了四个小的LinearLayout,第一个小的LinearLayout下布置了一个TableLayout,两个TextView,第二个小的LinearLayout下布置了FrameLayout和一个ImageView,第三个小的LinearLayout下布置了RelativeLayout和一个seekbar,在第四个LinearLayout下布置了五个Imagebutton,布局的结构和每个空间的作用如下。

在播放界面上显示歌曲的名字。 被点击后可进入主菜单。

在播放界面上显示专辑的名称。 在播放界面上显示歌手的名称。

在播放界面上显示歌手的照片。

- 27 -

基于Android平台的手机音乐播放器的设计与实现

在播放界面上显示歌曲的时长。 在播放界面上以播放歌曲的时间。

为播放界面上显示歌曲的时长,做的图标。 为播放界面上以播放的歌曲的时间,做的图标。

为播放界面上显示歌曲播放的进度。

控制音量的控件。 上一曲功能控件。 播放/暂停功能的控件。 下一曲功能控件。 去往歌曲列表的控件。

5.2.3 播放器音轨SeekBar的设计

不管是从界面外观还是从功能上,系统自带的SeekBar往往不能满足用户的需要。所以我在这里自定义了一个音轨SeekBar,在play_rack.Xml配置文件中,SeekBar的代码及效果图如下:

android:layout_marginLeft=\android:layout_marginRight=\android:id=\

android:layout_width=\android:layout_height=\

android:progressDrawable=\android:thumb=\

图5-11 自定义SeekBar

- 28 -

下图为系统默认的SeekBar。

图5-12 系统默认的Seekbar

播放器最重要的一部分就是音轨与歌曲进度同步的实现。音轨设置了两个TextView用来显示当前歌曲播放的进度时间和歌曲的长度5-13。

图5-13 音乐播放同步

音轨对象SeekBar在歌曲刚开始播放的时候调用方法SeekBar.setMax(),参数传入歌曲的长度。SeekBar.setProgress(1)设置游标的起始进度为1。然后程序运行如下代码: // 设置SeekBar的监听事件

sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

// 当停止拖动时调用的方法

public void onStopTrackingTouch(SeekBar seekBar) {} public void onStartTrackingTouch(SeekBar seekBar) {} // 当SeekBar拖动时会执行此方法

public void onProgressChanged(SeekBar seekBar, int prog, }

boolean fromUser) {// fromUser参数意思是判断拖动是否是用户用手拖动的 if (fromUser == true && Math.abs(prog - progress) >= 5) { progress = prog; Intent i = new Intent(Const.MUSIC_CONTROL); }

int cmd = Const.CMD_SEEK;// 发送拖动的命令 i.putExtra(\

i.putExtra(\讲拖动的进度传进Service sendBroadcast(i);

sb.setProgress(progress);

});

Android的线程的开始是通过Handler类来进行的,Handler类是线程与线程之间通信的桥梁,实现Runnable接口会实现里面的run方法,当线程开始的时候,Runnable中的run

- 29 -

基于Android平台的手机音乐播放器的设计与实现

方法会向Handler发一个Message消息,这样,Handler类就可以接收到run方法发送过来的不同的消息进行不同的代码处理。这样就达到了各线程之间的通信。要启动一个线程调用Handler的方法postDelayed(Runnable,1000)表示线程睡眠时间是1000ms 。 以上代码意思是让播放歌曲的线程每隔1000ms,即每1秒对音轨的TextView重新设置时间且让进度条前进1秒的进度。对音轨进行刷新。这样就实现了歌词同步功能SeekBar有一个监听器,该监听器的作用是一直保持着对进度条的监听,当我们用鼠标向SeekBar的各位置进行点击时,它会自动监听其位置,进行相应的位置显示。这也是进度条上的游标会不停的移动和歌曲时间会不停的变动的原因。 5.2.4 基本功能的设计

各按钮水平放置,用的是布局中的线性布局LinearLayout,用方法setOrientation,设置成horizontal,将其设置为水平。LinearLayout中依次放置播放、暂停、停止、上一曲、下一曲按钮属性。

android的媒体播放原理:android源程序已经为我们封装好了一个接口类,叫MediaPlayer。该接口在执行行需要一个数据源,通过如下四个步骤:

第一步:MediaPlayer.reset();复位操作,为以后的媒体准备播放作准备。 path);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。

第三步;准备播放数据源,调用方法 MediaPlayer.Prepare(); 用MediaPlayer.Stop()方法让其停止或MediaPlayer.Start();让其启动;

歌曲数据源的获得:要获得数据源,需要我们提供给接口类一个歌曲存放路径,而这个路径已经被事先放到数据库里了,我们只需要进行数据库进行操作。将里面的路径取出。这里将调用PlayRackActivity的一个方法query();代码算法如下: private ContentResolver mresolver;

public LocalMusicUtils(Context context){ mresolver=context.getContentResolver();

}

/**查询媒体库中时长大于30秒的音频

* @return */

public ArrayList getMusics(){

String[] projection={\

Cursor cursor=mresolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,

- 30 -

第二步:传入歌曲数据源,这里也是一个数据流MediaPlayer.setDataSource(String

第四步:MediaPlayer.Start();播放数据源,该数据源播放后,不再与程序 有关,需要

projection, \ ArrayList musics=null; Music music=null; }

if (cursor!=null&&cursor.getCount()>0) { musics=new ArrayList(); while (cursor.moveToNext()) { music = setMusic(cursor); musics.add(music); }

cursor.close(); }

return musics;

方法getContentResolver是包android.content.ContextWrapper里面的方法,它会自动的调用ContentProvider中的关联数据库,我们需用这个方法就可以操作数据库。数据库操作需要一个Uri 。Uri类似一个网络连接的Url。Uri是数据库唯一的标识,不同的Uri可以操作不同的数据库表。在查询数据库时需要传入一个当前播放的歌曲名字,通过歌曲名字来查询歌曲的路径。这样我们就得到了歌曲的所有信息了。

歌曲获取以后就可以对其控制(播放、暂停、上一曲、下一曲等操作)。 1. 播放/暂停 //播放与暂停功能实现

playPauseBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { int cmd = 0; Intent i = new Intent(Const.MUSIC_CONTROL);

// 判断当前的状态值是什么状态 如果是播放状态 if (status == Const.STATUS_PLAYING) { }

i.putExtra(\将命令广播出去 Log.i(\当前播放的状态\

- 31 -

cmd = Const.CMD_PAUSE;// 发送暂停的命令 cmd = Const.CMD_START;// 发送播放的命令 cmd = Const.CMD_RESUME;// 继续播放的命令

} else if (status == Const.STATUS_STOPPED) { } else {

本文来源:https://www.bwwdw.com/article/vyj3.html

Top