网站首页  词典首页

请输入您要查询的论文:

 

标题 基于Android的多媒体应用开发
范文 李养胜+李俊
摘 ?要: 为了开发出丰富多彩的移动多媒体应用程序,借助Android平台提供的良好API接口,通过程序设计开发实现了多媒体应用程序——音乐播放器。首先对Android的系统架构进行了简要的概述,随后在此基础上对Android应用程序的特点及开发组件分别进行了介绍,最后通过设计实现一个音乐播放器对Android多媒体应用程序开发方法进行了说明演示。该设计实现的音乐播放器既可以播放资源文件中的音乐文件,也可以选择手机SD卡中的本地音乐文件进行播放。
关键词: Android; 多媒体; 音乐播放器; 程序设计
中图分类号: TN919?34; TP311 ? ? ? ? ? ? ? ? ? 文献标识码: A ? ? ? ? ? ? ? ? ? ?文章编号: 1004?373X(2015)02?0032?03
Development on multimedia application based on Android
LI Yang?sheng, LI Jun
(Shaanxi Polytechnic Institute, Xianyang 712000, China)
Abstract: In order to develop a variety of mobile multimedia application program, with a good API interface provided by the Android platform, the multimedia application program (music player) was designed and developed by program design. The Android system architecture is described briefly. on the basis of the characteristics and development components of Android application program are introduced. A music player was realized. The development methods of Android multimedia application program are illustrated. The music player can play both music files in resource files and local music files in SD card in mobile phone.
Keywords: Android; multimedia; music player; program design
Android是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、中间件、用户界面和应用程序,号称是首个为移动终端打造的真正开发和完整的移动软件。随着3G技术的发展,移动电话正向着智能化的方向迈进,移动电话已经逐渐成为多种工具的功能载体,可以作为通信工具、网络工具、媒体播放器、媒体获取设备、信息感知终端、可以个性化定制的平台等[1]。
Android系统诞生在时代的背景下,其全开放的智能移动平台、多硬件平台的支持、使用众多标准化的技术、核心技术完整、完善的辅助开发工具等特点正与智能手机发展方向紧密相连,它将代表并引领新时代的技术潮流。
1 ?Android的系统架构
Android平台的系统架构如图1所示,自底向上可以分为4层,分别是Linux内核层、Android运行库层、应用框架层、应用程序层[2]。
<E:\王芳\现代电子技术201502\Image\01T1.tif>
图1 Android的系统架构图
(1) Linux内核层:Android基于Linux 2.6内核开发的,该层用来提供系统的底层服务,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块。作为一虚拟的中间层,该层位于硬件与其他的软件层之间。
(2) Android运行库层:Android运行时库包含一组核心库(提供了Java语言核心库内的大部分功能)和Dalvik虚拟机。同时Android提供了丰富的库类支持且大部分为开源代码。
(3) 应用框架层:这一层是编写Google发布的核心应用时所使用的API框架,开发人员同样可以使用这些框架来开发自己的应用,这样便简化了程序开发的架构设计,但使用方法需遵循框架的安全性约束。
(4) 应用程序层:Android本身附带一些核心的应用程序,包括E?mail客户端、短信程序、日历、地图、浏览器、通讯录等[3],目前所有的应用程序都是由Java语言开发。
2 ?Android的系统特点
对于开发者而言,Android开发分为3种类型:
(1) 移植开发移动电话系统
移植开发是为了将Android系统在手机上运行,在具体的硬件系统上构建Android软件系统,这种类型的开发在Android底层进行。
(2) Android应用程序开发
应用程序开发,是大多数开发者从事的开发工作,可以基于硬件配置,也可以基于Android模拟器,应用开发在Android系统的最上层。
(3) Android系统开发
系统开发,就是指在需要某种功能而系统并没有提供,这时就需要从系统底层向上开发。
Android系统具有以下5个特点:
开放性:Google与开放手机联盟合作开发了Android,希望在移动产业内形成一个开放式的生态系统。
无限性:Android上的应用程序可以通过标准API访问核心移动设备功能,通过互联网可以声明它们的功能可以供其他应用程序使用。
平等性:移动设备上的应用程序可以被替换或扩展,即使一些核心组件也是如此。
嵌入性:应用程序可以轻松地嵌入HTML、JavaScript和CSS,还可以通过WebVIEW显示网络内容。
并行性:Android是一种完整的多任务环境,应用程序可以在其中并行运行。
3 ?Android程序开发的基本组件
Android应用程序一般由以下6个组件提供基本的结构模块[4?5]:
(1) Activity:应用程序的表示层,相当于其他类似的桌面程序设计中的Form的概念。
(2) Service:应用程序中不可见部分,Service在后台工作,它们被用来执行一些需要持续执行的常规处理。
(3) Content Provider:一个可以共享的数据库。Android系统中包含多个本地Content Provider来提供有用的数据库供访问。
(4) Intent:一个简单的消息传递框架。应用程序通过Intent发出请求,表明希望执行某个动作的意图,最后系统就会确定一个最适合执行动作的目标。
(5) Broadcast Receiver:Intent广播的消费者。Broadcast Receiver会自动启动应用程序来响应某个到来的Intent,这个特点使它成为了事件驱动程序的最佳选择。
(6) Notification:一种用户通知框架。通知允许向用户发送信号,而不会中断他们当前的活动,它是Service或者Broadcast Receiver引起用户注意的最佳方法。
在Android中,这些组件之间的依赖性是很低的,可以理解为面向对象设计中模块间的低耦合设计,这样做的目的是可以和其他应用程序共享。
4 ?Android系统中音乐播放器的实现
Android提供了常见媒体的编码、解码机制,可以通过调用Android提供的现有API,实现音视频播放器、录音和拍照等应用程序。在Android上实现音乐的播放,主要是使用MediaPlayer类[6]。MediaPlayer类包含了Audio和Video的播放功能,它可以获得媒体文件的各种属性和当前的播放状态,也可以开始和停止文件的播放。
4.1 ?布局设计
Android是通过布局来定义UI(用户界面)的,一般视图可以直接在布局的XML里声明。音乐播放器的主界面的布局定义main.xml文件如代码所示:
<?xml version="1.0" encoding="UTF?8"?>
?<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical"
>
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="@string/hello"
/>
<Button android:
layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="简易MP3播放器"
android:clickable="false"
android:textSize="24px"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="播放应用程序资源:"
android:textSize="24px"
/>
?<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="right">
<ImageButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/play1"
android:src="@drawable/play"
/>
其余Button代码与此类似,此处省略部分代码
</LinearLayout>
</LinearLayout>
4.2 ?程序设计框架
在Activity类的界面生成消息响应方法中,先定义了几个操作按钮,然后就创建了整个程序的2个主要对象:mediaPlayer1(播放资源文件中的音乐文件)和mediaPlayer2(播放手机SD卡中的音乐文件),并对它们分别进行了初始化。在程序中对按钮进行事件监听,通过调用MediaPlayer对象的prepare( )和start( )方法开始播放音乐;通过调用pause( )和stop( )方法进行音乐的暂停、停止[7]。在选择手机SD卡中的音乐文件播放时,对mediaPlayer2的初始化就不能像mediaPlayer1那样使用MediaPlayer.create( )方法来创建,而是需要使用new来操作符创建。在创建好mediaPlay2对象之后,需要依次调用setDataSource( )和prepare( )方法,来设置数据源,让播放器完成准备工作。如果在prepare( )方法调用过程中出现错误,就会抛出IOException异常。
4.3 ?程序核心代码
对MediaPlayer对象的初始化代码如下:
//MediaPlayer 对象的初始化
private void mediaPlayer1init(){ ? //播放资源文件中的音乐文件
try{ mediaPlayer1=MediaPlayer.create(this, R.raw.temp);
mediaPlayer1.setOnCompletionListener(this);
} catch (Throwable t){errorReport(t);}
}
private void mediaPlayer2init(){ ? ? ?//播放手机SD卡中的音乐文件
try { mediaPlayer2 = new MediaPlayer();
String path = "/sdcard/Yesterday Once More.mp3";
mediaPlayer2.setDataSource(path);
mediaPlayer2.prepare();
mediaPlayer2.setOnCompletionListener(this);
}
catch (IllegalArgumentException e) {e.printStackTrace();}
catch (IllegalStateException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
catch (Throwable t){errorReport(t);}
}
对文件格式错误等的错误处理如下所述:
private void errorReport(Throwable t){
AlertDialog.Builder adBuilder1=new AlertDialog.Builder(this);
adBuilder1.setTitle("ERROR!").setMessage(t.toString()). setPositiveButton("确定", ? null).show();
}
对play按钮进行事件监听如下所示:
play1.setOnClickListener
(new View.OnClickListener() {
public void onClick(View v)
{ ?ib1play();
}
});
private void ib1play(){
flag1=1;
mediaPlayer1.start();
pause.setEnabled(true);
stop.setEnabled(true);
}
在onCompletion()方法中,使用flag1,flag2来标志两个MediaPlayer对象的工作状态。
重写onCompletion() 方法:
public void onCompletion(MediaPlayer mp) {
//循环播放
if(flag1==1) ?ib1play();
if(flag2==1) ?ib4play();
}
这里只写出了部分核心代码,其他按钮的方法与play1的方法类似,此处不再赘述。
4.4 ?程序运行界面
简易MP3播放器运行界面如图2所示。
<E:\王芳\现代电子技术201502\Image\01T2.tif>
图2 简易MP3播放器运行界面
5 ?结 ?语
本文对Android的系统架构进行了概述,并在此基础上对Android应用程序的特点及开发组件分别进行了介绍,最后设计实现了一个简易的音乐播放器,从而说明了Android多媒体程序的开发过程。Android具有极大的开放性和兼容性,随着Android手机的普及,Android应用的需求势必会越来越大,这将会是一个潜力巨大的市场,会吸引无数软件开发商和开发者投身其中。
参考文献
[1] 汪永松.Android平台开发之旅[M].北京:机械工业出版社,2010.
[2] 温涛.东软Android工程师实训技术教程[M].大连:东软电子出版社,2011.
[3] 唐敏.基于Android平台的通讯帮手的设计与开发[J].计算机科学,2012(z1):583?586.
[4] 李杨,冯刚,李亮,等.基于Android的多媒体应用开发与研究[J].计算机与现代化,2011(4):153?156.
[5] 林福炎.基于Android平台的在线音乐客户端设计与实现[D].北京:中国地质大学,2011.
[6] 张永久.基于Android系统的MP5播放器的设计与实现[D].西安:西安电子科技大学,2012.
[7] 白璐,李国民.Android系统WMA文件播放功能的设计与实现[J].电子科技,2011(9):158?161.
android:src="@drawable/play"
/>
其余Button代码与此类似,此处省略部分代码
</LinearLayout>
</LinearLayout>
4.2 ?程序设计框架
在Activity类的界面生成消息响应方法中,先定义了几个操作按钮,然后就创建了整个程序的2个主要对象:mediaPlayer1(播放资源文件中的音乐文件)和mediaPlayer2(播放手机SD卡中的音乐文件),并对它们分别进行了初始化。在程序中对按钮进行事件监听,通过调用MediaPlayer对象的prepare( )和start( )方法开始播放音乐;通过调用pause( )和stop( )方法进行音乐的暂停、停止[7]。在选择手机SD卡中的音乐文件播放时,对mediaPlayer2的初始化就不能像mediaPlayer1那样使用MediaPlayer.create( )方法来创建,而是需要使用new来操作符创建。在创建好mediaPlay2对象之后,需要依次调用setDataSource( )和prepare( )方法,来设置数据源,让播放器完成准备工作。如果在prepare( )方法调用过程中出现错误,就会抛出IOException异常。
4.3 ?程序核心代码
对MediaPlayer对象的初始化代码如下:
//MediaPlayer 对象的初始化
private void mediaPlayer1init(){ ? //播放资源文件中的音乐文件
try{ mediaPlayer1=MediaPlayer.create(this, R.raw.temp);
mediaPlayer1.setOnCompletionListener(this);
} catch (Throwable t){errorReport(t);}
}
private void mediaPlayer2init(){ ? ? ?//播放手机SD卡中的音乐文件
try { mediaPlayer2 = new MediaPlayer();
String path = "/sdcard/Yesterday Once More.mp3";
mediaPlayer2.setDataSource(path);
mediaPlayer2.prepare();
mediaPlayer2.setOnCompletionListener(this);
}
catch (IllegalArgumentException e) {e.printStackTrace();}
catch (IllegalStateException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
catch (Throwable t){errorReport(t);}
}
对文件格式错误等的错误处理如下所述:
private void errorReport(Throwable t){
AlertDialog.Builder adBuilder1=new AlertDialog.Builder(this);
adBuilder1.setTitle("ERROR!").setMessage(t.toString()). setPositiveButton("确定", ? null).show();
}
对play按钮进行事件监听如下所示:
play1.setOnClickListener
(new View.OnClickListener() {
public void onClick(View v)
{ ?ib1play();
}
});
private void ib1play(){
flag1=1;
mediaPlayer1.start();
pause.setEnabled(true);
stop.setEnabled(true);
}
在onCompletion()方法中,使用flag1,flag2来标志两个MediaPlayer对象的工作状态。
重写onCompletion() 方法:
public void onCompletion(MediaPlayer mp) {
//循环播放
if(flag1==1) ?ib1play();
if(flag2==1) ?ib4play();
}
这里只写出了部分核心代码,其他按钮的方法与play1的方法类似,此处不再赘述。
4.4 ?程序运行界面
简易MP3播放器运行界面如图2所示。
<E:\王芳\现代电子技术201502\Image\01T2.tif>
图2 简易MP3播放器运行界面
5 ?结 ?语
本文对Android的系统架构进行了概述,并在此基础上对Android应用程序的特点及开发组件分别进行了介绍,最后设计实现了一个简易的音乐播放器,从而说明了Android多媒体程序的开发过程。Android具有极大的开放性和兼容性,随着Android手机的普及,Android应用的需求势必会越来越大,这将会是一个潜力巨大的市场,会吸引无数软件开发商和开发者投身其中。
参考文献
[1] 汪永松.Android平台开发之旅[M].北京:机械工业出版社,2010.
[2] 温涛.东软Android工程师实训技术教程[M].大连:东软电子出版社,2011.
[3] 唐敏.基于Android平台的通讯帮手的设计与开发[J].计算机科学,2012(z1):583?586.
[4] 李杨,冯刚,李亮,等.基于Android的多媒体应用开发与研究[J].计算机与现代化,2011(4):153?156.
[5] 林福炎.基于Android平台的在线音乐客户端设计与实现[D].北京:中国地质大学,2011.
[6] 张永久.基于Android系统的MP5播放器的设计与实现[D].西安:西安电子科技大学,2012.
[7] 白璐,李国民.Android系统WMA文件播放功能的设计与实现[J].电子科技,2011(9):158?161.
android:src="@drawable/play"
/>
其余Button代码与此类似,此处省略部分代码
</LinearLayout>
</LinearLayout>
4.2 ?程序设计框架
在Activity类的界面生成消息响应方法中,先定义了几个操作按钮,然后就创建了整个程序的2个主要对象:mediaPlayer1(播放资源文件中的音乐文件)和mediaPlayer2(播放手机SD卡中的音乐文件),并对它们分别进行了初始化。在程序中对按钮进行事件监听,通过调用MediaPlayer对象的prepare( )和start( )方法开始播放音乐;通过调用pause( )和stop( )方法进行音乐的暂停、停止[7]。在选择手机SD卡中的音乐文件播放时,对mediaPlayer2的初始化就不能像mediaPlayer1那样使用MediaPlayer.create( )方法来创建,而是需要使用new来操作符创建。在创建好mediaPlay2对象之后,需要依次调用setDataSource( )和prepare( )方法,来设置数据源,让播放器完成准备工作。如果在prepare( )方法调用过程中出现错误,就会抛出IOException异常。
4.3 ?程序核心代码
对MediaPlayer对象的初始化代码如下:
//MediaPlayer 对象的初始化
private void mediaPlayer1init(){ ? //播放资源文件中的音乐文件
try{ mediaPlayer1=MediaPlayer.create(this, R.raw.temp);
mediaPlayer1.setOnCompletionListener(this);
} catch (Throwable t){errorReport(t);}
}
private void mediaPlayer2init(){ ? ? ?//播放手机SD卡中的音乐文件
try { mediaPlayer2 = new MediaPlayer();
String path = "/sdcard/Yesterday Once More.mp3";
mediaPlayer2.setDataSource(path);
mediaPlayer2.prepare();
mediaPlayer2.setOnCompletionListener(this);
}
catch (IllegalArgumentException e) {e.printStackTrace();}
catch (IllegalStateException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
catch (Throwable t){errorReport(t);}
}
对文件格式错误等的错误处理如下所述:
private void errorReport(Throwable t){
AlertDialog.Builder adBuilder1=new AlertDialog.Builder(this);
adBuilder1.setTitle("ERROR!").setMessage(t.toString()). setPositiveButton("确定", ? null).show();
}
对play按钮进行事件监听如下所示:
play1.setOnClickListener
(new View.OnClickListener() {
public void onClick(View v)
{ ?ib1play();
}
});
private void ib1play(){
flag1=1;
mediaPlayer1.start();
pause.setEnabled(true);
stop.setEnabled(true);
}
在onCompletion()方法中,使用flag1,flag2来标志两个MediaPlayer对象的工作状态。
重写onCompletion() 方法:
public void onCompletion(MediaPlayer mp) {
//循环播放
if(flag1==1) ?ib1play();
if(flag2==1) ?ib4play();
}
这里只写出了部分核心代码,其他按钮的方法与play1的方法类似,此处不再赘述。
4.4 ?程序运行界面
简易MP3播放器运行界面如图2所示。
<E:\王芳\现代电子技术201502\Image\01T2.tif>
图2 简易MP3播放器运行界面
5 ?结 ?语
本文对Android的系统架构进行了概述,并在此基础上对Android应用程序的特点及开发组件分别进行了介绍,最后设计实现了一个简易的音乐播放器,从而说明了Android多媒体程序的开发过程。Android具有极大的开放性和兼容性,随着Android手机的普及,Android应用的需求势必会越来越大,这将会是一个潜力巨大的市场,会吸引无数软件开发商和开发者投身其中。
参考文献
[1] 汪永松.Android平台开发之旅[M].北京:机械工业出版社,2010.
[2] 温涛.东软Android工程师实训技术教程[M].大连:东软电子出版社,2011.
[3] 唐敏.基于Android平台的通讯帮手的设计与开发[J].计算机科学,2012(z1):583?586.
[4] 李杨,冯刚,李亮,等.基于Android的多媒体应用开发与研究[J].计算机与现代化,2011(4):153?156.
[5] 林福炎.基于Android平台的在线音乐客户端设计与实现[D].北京:中国地质大学,2011.
[6] 张永久.基于Android系统的MP5播放器的设计与实现[D].西安:西安电子科技大学,2012.
[7] 白璐,李国民.Android系统WMA文件播放功能的设计与实现[J].电子科技,2011(9):158?161.
随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/11 0:32:58