nadroid平台开发的一款较具个性媒体音乐播放器.docx

上传人:b****8 文档编号:9371539 上传时间:2023-02-04 格式:DOCX 页数:38 大小:742.98KB
下载 相关 举报
nadroid平台开发的一款较具个性媒体音乐播放器.docx_第1页
第1页 / 共38页
nadroid平台开发的一款较具个性媒体音乐播放器.docx_第2页
第2页 / 共38页
nadroid平台开发的一款较具个性媒体音乐播放器.docx_第3页
第3页 / 共38页
nadroid平台开发的一款较具个性媒体音乐播放器.docx_第4页
第4页 / 共38页
nadroid平台开发的一款较具个性媒体音乐播放器.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

nadroid平台开发的一款较具个性媒体音乐播放器.docx

《nadroid平台开发的一款较具个性媒体音乐播放器.docx》由会员分享,可在线阅读,更多相关《nadroid平台开发的一款较具个性媒体音乐播放器.docx(38页珍藏版)》请在冰豆网上搜索。

nadroid平台开发的一款较具个性媒体音乐播放器.docx

nadroid平台开发的一款较具个性媒体音乐播放器

1引言

1.1项目背景

随着科技的进步,人们对手机功能的要求也越来越高,不仅需要方便携带,更需要娱乐消遣。

手机操作系统也不断改进,而今当下主要有Windowsmobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。

而本文的音乐播放器就是基于谷歌Android手机平台的播放器。

Android:

是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。

这使得越来越多的人关注这个操作系统。

本次作品音乐播放器就是基于Android平台的。

从最早的所谓的“大哥大”发展到现在的商务PDA手机,智能手机,音乐手机等等,功能也从单纯的打电话发展到了发短信,听音乐,上网,甚至游戏....显而易见,手机和我们的生活联系愈来愈紧密,手机的功能也越来越成为很多人关注的焦点。

相信在不远的将来,手机会比电脑的用户更多!

目前手机的音乐播放器功能已经是大家比较关注的一个部分了,作为一个音乐爱好者,在自己准备买手机的时候,我也会比较注重这部分,当然也会有许多像我一样的消费者,这也足以看出目前大家对音乐播放器功能的重视,所以一款性能好的手机音乐播放器软件一定会受到追捧。

一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放软件,来满足广大用户的需求,所以网上出现了各种各样的手机音乐播放软件,以满足用户的不同需求。

不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是google的Android手机平台,所以本课题就致力于开发一款基于Android手机平台的音乐播放器,来满足用户的使用需求。

此设计是针对当前市场上比较受Android系统手机用户关注的音乐播放器功能的实现,使其拥有上一曲,下一曲,快进,快退,显示歌词等功能较全面的音乐播放器。

更好的符合大众品味,使之界面更人性化。

1.2编写目的

随着社会的不断进步,人们所面对的社会压力也愈来愈大,而音乐就是舒缓情绪缓解压力的一种方式,而此设计的目的就是是针对当前市场上比较受Android系统手机用户关注的音乐播放器功能的实现,它可以让你随时随地的让你享受到音乐,舒缓压力。

它是一款拥有上一曲,下一曲,快进,快退,显示歌词等功能的音乐播放器,操作简单方便,更贴近大众化。

本设计是在当下很受欢迎的Android平台开发的一款较具个性媒体音乐播放器,它使用灵活,与人们的生活更加接近,是人么的生活更加丰富多彩。

 

2Android项目介绍

2.1Android简介

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的

以Linux为基础的开放源码操作系统,主要使用于便携设备。

目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。

Android操作系统最初由AndyRubin开发,最初主要支持手机。

2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。

Android的主要竞争对手是苹果公司的iOS以及RIM的BlackberryOS。

2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。

2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。

Android的系统架构和其它操作系统一样,采用了分层的架构。

从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。

在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:

python、lua、tcl、php等等),还有其他诸如:

Qt(qtforAndroid)、Mono(monoforAndroid)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。

另外,谷歌还在2009年特别发布了针对初学者的AndroidSimple语言,该语言类似Basic语言。

而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。

而在Android系统底层方面,Android使用C/C++作为开发语言。

目前最新SDK版本为Android4.0。

2.1.1Android特性

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

·应用程序框架支持组件的重用与替换 

·Dalvik虚拟机专门为移动设备做了优化 

·内部集成浏览器该浏览器基于开源的WebKit引擎 

·优化的图形库包括2D和3D图形库,3D图形库基于OpenGLES 

·SQLite用作结构化的数据存储 

·多媒体支持包括常见的音频、视频和静态印象文件格式,如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF) 

·GSM电话(依赖硬件) 

·蓝牙Bluetooth,EDGE,3G,andWiFi(依赖于硬件) 

·照相机,GPS,指南针,和加速度计(依赖于硬件) 

·丰富的开发环境包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件。

2.1.2Android基本框架(AndroidArchitecture)

图2.1AndroidArchitecture

(1)Applications

ApplicationAndroid会同一个核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。

所有的应用程序都是用JAVA编写的。

(2)ApplicationFrameWork

开发者完全可以访问核心应用程序所使用的API框架。

该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。

该应用程序重用机制使得组建可以被用户替换。

所有的应用程序都由一系列的服务和系统组成,包括:

  

·可扩展的视图(Views)可以用来建应用程序,包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至包括一个可嵌入的web浏览器。

  

·内容管理器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

  

·资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和分层文件(layoutfiles)。

  

·通知管理器(NotificationManager)使得应用程序可以在状态栏中显示客户通知信息。

  

·活动类管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。

(3)Libraries库

Android包括一个被Android系统中各种不同组件所使用的C/C++库集。

该库通过Android应用程序框架为开发者提供服务。

以下是一些主要的核心库:

系统C库-一个从BSD继承来的标准C系统函数库(libc),专门为基于embeddedlinux的设备定制。

媒体库-基于PacketVideoOpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态印像文件包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。

SurfaceManager-对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。

LibWebCore-一个最新的web浏览器引擎用来支持Android浏览器和一个可嵌入的web视图。

SGL-一个内置的2D图形引擎3Dlibraries-基于OpenGLES1.0APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。

FreeType-位图(bitmap)和向量(vector)字体显示。

SQLite一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

(4)AndroidRuntime  

Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。

每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。

Dalvik是针对于同时高效地运行多个VMs来实现的。

Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。

该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。

Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。

(5)Linuxkernel(Linux内核)

Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。

Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。

linux内核基础为linux平台,linux为C语言编写的内核,基于此内核又衍生出了具体的Redhatlinux、opensuselinux等具体的操作系统,一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。

由于Linux使用C编写而成,因此可以直接对计算机的底层硬件进行操作。

  

Linux具有良好的可移植性,而且以linux为内核的GUI+CLI操作系统具有良好的安全性,因此很多的网络公司大多采用以linux操作内核的网络终端操作系统。

相对于windowsserver系列linux的网络终端操作起来效率较高,相比于linux的前身Unix,Linux操作系统不仅优化了操作界面,和操作的简易性,更是提高效率一个优秀的操作系统内核。

如果Linux内核的可移植性和效率还不够好,Linux还提供了其他一些特性,它们无法划分到上面的分类中。

作为一个生产操作系统和开源软件,Linux是测试新协议及其增强的良好平台。

Linux支持大量网络协议,包括典型的TCP/IP,以及高速网络的扩展(大于1GigabitEthernet[GbE]和10GbE)。

Linux也可以支持诸如流控制传输协议(SCTP)之类的协议,它提供了很多比TCP更高级的特性(是传输层协议的接替者)。

Linux还是一个动态内核,支持动态添加或删除软件组件。

被称为动态可加载内核模块,它们可以在引导时根据需要(当前特定设备需要这个模块)或在任何时候由用户插入。

Linux最新的一个增强是可以用作其他操作系统的操作系统(称为系统管理程序)。

最近,对内核进行了修改,称为基于内核的虚拟机(KVM)。

这个修改为用户空间启用了一个新的接口,它可以允许其他操作系统在启用了KVM的内核之上运行。

除了运行Linux的其他实例之外,Microsoft®Windows®也可以进行虚拟化。

惟一的限制是底层处理器必须支持新的虚拟化指令。

2.1.3Android项目介绍

在Android系统中,为我们提供了四大基本组件:

Activity(活动),Service(服务),BroadcastReceiver(广播),ContentProvider(内容提供者),每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像Activity,ContentProvider是可见的视图,Service和BroadcastReceiver是不可见的,它们只在系统的后台运行。

各组件之间要进行切换需要一个意图或企图Intent类,通过启动StartIntent()方法来使各组件进行跳转。

下面分别介绍四大组件:

(1)Activity

在Android系统中Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成。

多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。

Activity有自己的生命周期,由Android系统来控制。

(2)Service

顾名思义Service就是运行在后台的一种服务程序,一般很少和用户交互,因此没有可视化界面定义一个Service类比较简单,只要继承Service类,实现其生命周期中的方法就可以了。

一个定义好的Service必须在AndroidManifest.xml配置文件注册,通过元素声明才能使用.Service有自己的生命周期,我们可以调用startService()启动一个Service或者bindService()方法来绑定一个存在的Service。

(3)BroadcastReceiver

BroadcastReceiver顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。

到目前为止我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。

我们可以在你的应用程序中实现BroadcastReceiver来监听和响应这些广播的Intent。

(4)ContentProvider

ContentProvider用来保存和检索数据,并且使应用程序之间相互访问数据成为可能。

它是跨应用程序共享数据的唯一方法。

Android为常用的数据类型(如:

音视频、图片和联系方式等)提供了大量的ContentProvider。

它们被定义在Android.provider包下面。

通过这样定义好的ContentProvider我们可以方便的进行数据操作。

当然我们必须拥有适当的权限。

我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问。

一个Android基本应用程序的实现不仅需要组件,也需要开发者选择其应用程序的布局方式,而Android拥有五大布局方式:

LinearLayout(线性布局)FrameLayout(帧布局)TableLayout(表格布局)AbsoluteLayout(绝对布局)RelativeLayout(相对布局)。

五种布局方式可以相互嵌套,Android各种漂亮的界面都是通过嵌套布局而实现的。

Android的线程,以及线程之间通信的中介:

Handler类。

Android配置文件:

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

Android系统将插件ADT集成到了Eclipse工具上,因此,一个Android程序启动后,系统会启动一个模拟器(Emulator)(图2.2),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。

图2.2Android模拟器

2.1.4Android应用程序构成

Android应用程序基本有以下几个构成:

A、src源代码目录:

src目录中包含了一个Android应用程序中所需的全部程序代码文件。

B、gen目录:

gen目录下面的R.java文件是ADT自动产生的,R.java中定义了一个R类,它包含了与用户界面、图像、字符串等各种资源与相应的编号id。

C、Res资源目录:

定义了

drawable:

用于存放.png/.jpg等图片文件,通过resource.getdrawable(id)获得资源。

Layout:

描述应用程序的用户界面布局格式为.xml。

Values:

参数目录包含了所有使用了.xml格式的参数描述文件。

D、Androidmanifest.xml:

它是系统的控制文件,它告诉系统如何处理你所创建的所有顶层组件(尤其是Activity、service、intentReceiver以及ContentProvider)。

具体图如下图:

图2.3Android应用程序构成

2.2Android数据存储方式

在播放器正常运行时,由于各界面存在相互跳转,为了避免数据在界面跳转的过程中丢失,我们需要将一些数据进行临时存储或者永久存储。

Android作为一种手机操作系统,提供了如下几种存取数据的方式:

Preference(配置)、File(文件)、SQLite数据和网络。

另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。

为了实现数据的共享,Android提供了ContentProvider组件来实现应用程序之间数据的共享。

2.2.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类型的键值,即putString(KEY,VALUES),这样,我们可以将List中的对象转化成一样长的字符中放进配置文件中。

当写入成功时,Android系统会自动在目录data/data/工程包名/shared_prefs/目录下生成一个配置文件

2.2.2File存储方式

我们可以将一些数据直接以文件的形式保存在设备中。

例如,一些文本文件、PDF文件、音视频文件和图片等。

Android提供了文件读写的方法:

方法Context.openFileInput()

获得标准Java文件输入流(FileInputStream)

Context.openFileOutput()

获得标准Java文件输出流(FileOutputStream)

Resources.openRawResource(R.raw.myDataFile)

方法返回InputStream。

2.2.3SQLiteDatabase数据库

SQLite是一个嵌入式数据库引擎,针对内存等资源有限的设备(如手机、PDA、MP3)提供的一种高效的数据库引擎SQLite数据库不像其它的数据库(如:

Oracle),它没有服务器进程。

所有的内容包含在同一个单文件中。

该文件是跨平台的可以自由拷贝。

基于其自身的先天优势,SQLite在嵌入式领域得到了广泛应用

SQLiteDatabase类

SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法

常用方法(图2.4)

方法名称

方法描述

OpenOrCreateDatabase(Stringpath,SQLiteDatabase.CursorFactoryfactory)

打开或创建数据库

Insert(Stringtable,StringnullColumnHack,ContentValuesvalues)

添加一条记录

Delete(Stringtable,Stringwhereclause,String[]whereArgs)

删除一条记录

Query(Stringtable,String[]columns,Stringselection,String[]selectArgs,StringgroupBy,Stringhaving,StringorderBy)

查询记录

Update(Stringtable,contentValuesvalues,Stringwhereclause,String[]whereArgs)

修改记录

execSQL(Stringsql)

执行一条SQL语句

Close()

关闭数据库

图2.4数据库的常用方法

SQLiteOpenHelper类

SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本更新。

一般的用法是定义一个类继承之,并实现其两个抽象方法onCreate(SQLiteDatabasedb)和onUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)两个抽象方法来创建和更新数据库常用方法(如图2.5)

图2.5创建和更新数据库常用方法

方法名称

方法描述

SQLiteOpenHelper(Contextcontext,Stringname,SQLiteDatabase.CursorFactoryfactory,intversion)

构造一个方法,一般是传递一个要创建的数据库名称name参数

onCreate(SQLiteDatabasedb)

创建数据库时调用

onUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)

版本更新时调用

getReadableDatabase()

创建或打开一个只读数据库

getWritableDatabase()

创建或打开一个读写数据库

Android的三种数据存储方式则让我们可以轻松方便的进行程序编写和数据的访问,更不会让不该消失的数据消失,这对我们进行程序书写有很大帮助。

2.3搭建Android开发环境

任何事物要运行,都要有

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1