




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档-下载后可编辑基于Android的多媒体应用开发与研究-设计应用摘要:首先介绍并分析Android系统的层次架构,并在此基础上介绍Android应用程序开发的相关技术和基本的开发流程。接下来介绍Android提供的多媒体开发组件。用具体的应用程序播放器简要说明Android多媒体应用程序的开发方法。
0引言
2022年11月由Google牵头,有30多家移动技术和无线应用领域企业组成的开放手机联盟(OpenHandsetAlliance)发布了其智能手机平台Android.Android是一个开放、自由的移动终端平台,它是由操作系统、中间件、用户界面、应用软件组成,同时其开放性保证该平台不存在任何阻碍移动产业创新的专有权障碍。开发人员在该平台开发的应用程序是使用Java语言编写的,在Dalvik虚拟机上运行的。Android的底层是以开放性的LinuxKernel为其架构,也可以理解为Google推出的手机操作系统和相关软件的总称[1].
Android是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统、对多媒体的支持功能和非常强大的浏览器[2].
Android平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特色化的产品,因此,它具有很大的市场发展潜力。
1Android软件平台的构成
Android软件平台主要由5部分构成,它们分别是:关键应用程序、应用程序框架和组件、C/C++函数库、Java程序运行环境、优化了的Linux内核。
(1)关键应用程序。
Android本身会附带一些的应用程序,包括E-mail客户端、短信程序、日历、地图、浏览器、通讯录等,目前所有的应用程序都是用Java语言开发的。
更多有特色的Android应用程序还有待于广大开发者共同参与开发。
(2)应用程序框架及组件。
Android应用程序开发基于框架和组件。Android本身已在其框架中提供了许多组件供应用程序调用,开发者也可在开发应用程序时顺带开发新的组件,并将该组件放入应用程序框架中,以供自己和其它应用程序调用。
(3)Android运行时库和其它库层。
Android应用程序框架之下是一套C/C++函数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者。这些函数库包括:标准C函数库、多媒体库、浏览器引擎(集成了Web浏览器和Internet安全的SSL和WebKit)、2D、3D图形库及SQLite引擎和外观管理器等。这一层也提供了程序运行的环境。Android的Java程序运行环境包含一组Java函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。
(4)Linux内核。
Android系统平台基于优化了的Linux内核,它提供诸如硬件驱动程序(USB、蓝牙、显示屏等)、内存管理、进程管理、电源管理等服务,同时也是手机软、硬件的连接层。
2Android程序开发的基本组件
Android有如下几大基本组件:Activity、Service、ContentProvider和BroadcastReceiver。
Activity是Android基本的应用程序组件。任何一个Android应用程序都可以看作一组任务,这里每一个任务就可以称作一个Activity.在应用程序中,一个Activity通常就是一个单独的屏幕,用于呈现数据和与用户进行交互,每个屏幕可以有一个或多个组件布局。
而每一个活动又是一个单独的类,每一个这样的类都要将Activity作为父类。一个Activity可以切换到新的Activity,也可以返回前一个Activity.Android通过使用Intent类来实现Activity的切换。例如,一个简单的游戏程序可以分为5个Activity:启动画面、主菜单界面、游戏主界面、高分辨和帮助界面。
Service,即"服务"的意思,相当于没有界面的Activity.应用程序的Service可以不需要用户直接参与而长时间运行。典型的例子就是音乐播放器。在一个音乐播放器程序中有多个Activity,它们分别实现了歌曲的选择和播放等功能。然而,音乐重放这个功能并没有对应的Activity,它通过Service来实现。
音乐播放器程序启动一个Service,它可以在后台保持音乐的不断播放。应用程序还可以连接到一个Service.当Service启动后,还可以借助Service提供的接口与它进行通信。
Android应用程序可以使用文件、SQL数据库等各种存储系统来保存数据。但是,如果想实现不同应用之间的数据共享,就需要用到ContentProvider.
ContentProvider提供了一套标准的访问接口,以方便其他应用程序对数据进行访问、操作。
在实际应用中,常常需要等待系统或者其它应用发出一道指令。在Android中,充分考虑了这类需求,于是就有了BroadcastReceiver这样的一个组件。
每个BroadcastReceiver都可以接收一种或若干种Intent作为触发事件,当一个BroadcastReceiver被触发后,系统就会通知相应的程序。
3Android多媒体API及开发方法
多媒体无论是图像、视频还是声音,都早已成为了移动设备受到广泛欢迎的主要原因。而今,手机设备很少会没有摄像头的,而且随着技术的日益更新,越来越多的设备会拥有更为的视频性能。用户经常使用手机来拍摄和浏览照片,录制声音和观看视频。
3.1Android提供的多媒体开发框架
Android软件开发包提供了一系列的方法来处理音视频媒体,包括对于多种媒体类型和格式的支持。
单独的Android设备和开发人员可以扩展其支持的媒体格式列表。
OpenCore是Android多媒体开发的,所有Android平台的音频、视频的采集以及播放等操作都是通过它来实现的。程序员可以通过OpenCore方便快速地开发出想要的多媒体应用程序,例如:录音、播放、回放、视频会议等。OpenCore和框架图如图1所示。
图1OpenCore框架图
由图1可以看出,OpenCore支持的格式有MPEG4、H.263、MP3、AAC、JPG等。OpenCore多媒体框架有一套通用可扩展的接口,针对第三方的多媒体编解码器,输入、输出设备等。
3.2OpenCore的主要多媒体类与接口
OpenCore主要提供了如下几个多媒体类:
(1)MediaPlayer类可以用于播放音频、视频和流媒体,它包含了Audio和Video的播放功能,在Android的界面上,音频和视频的播放都是调用Media-Player实现的。它可以获得媒体文件和各种属性和当前的播放状态,并可以开始和停止文件的播放。
(2)MediaRecorder类用来进行媒体采样,包括音频和视频。MediaRecorder作为状态机运行,需要设置不同的参数,如源格式和源设备。设置后可执行任意长度的录制,直到用户停止。
(3)VideoView类主要用来显示一个视频文件,它是SurfaceView类的一个子类,且实现了MediaPlayerControl接口。
(4)Camera类用来处理系统中与相机相关的事件,Camera是一个专门用来连接和断开相机服务的类。
OpenCore在使用过程中的调用关系如图2所示。
图2使用OpenCore的调用关系图
4示例程序:播放器
4.1布局设计
Android是通过布局(Layout)来定义UI(用户界面)的。一般视图(View)可以直接在布局的XML里声明。XML文件如下所示:
?xmlversion=″1.0″encoding=″utf-8?″
-AbsoluteLayout
xmlns:android=″/apk/res/android″
android:orientation=″vertical″
android:layout_width=″fill_parent″
android:layout_height=″fill_parent″
ListView
android:id=″@id/android:list″
android:layout_width=″fill_parent″
android:layout_height=″fill_parent″
android:layout_weight=″1″
android:drawSelectorOnTop=″false″/
ImageButton
android:id=″@+id/LastImageButton″
android:layout_width=″wrap_content″
android:layout_height=″wrap_content″
android:layout_x=″10px″
android:layout_y=″170px″
android:src=″@drawable/last″/
(以下4个BUTTON同上,横坐标有变化。)
/AbsoluteLayout
这个简单的播放器只有一个界面,可以显示播放列表和对音乐的播放进行各种操作。
4.2程序框架设计
在这的Activity类的界面生成消息响应方法中,先定义几个操作按钮,然后就要创建整个程序的主对象mMediaPlayer了。语句如下:
publicMediaPlayermMediaPlayer=null;
这是一个MediaPlayer类型的对象,它的功能前面已经介绍过了,这里不再赘述。之后要创建的就是其它的组件,包括播放列表、歌曲的路径以及索引了。
privateListStringmMusicList=newArrayListString();//播放列表
privateintcurrentListItme=0;//索引
privatestaticfinalStringMUSIC_PATH=newString(″/sdcard/″);//歌曲的路径
4.3程序代码
接下来设置这些ImageButton的事件监听。
mStartImageButton.setOnClickListener(
newImageButton.OnClickListener()
{
@OverridepublicvoidonClick(Viewv)
{
playMusic(MUSIC_PATH+mMusi-cList.get(currentListItme)
);
}
});
这是"开始播放"按钮的事件监听。这里是调用了一个playMusic()方法来实现音乐文件的播放的。
在playMusic()方法中,先调用mMediaPlayer的reset()方法,重置MediaPlayer到它的正常状态。然后调用setDataSource(string)方法设置好音乐文件的数据源,再连续调用prepare()和start()方法,MediaPlayer将开始播放音乐文件。
接下来,要设置一个OnCompletionListener(setOnCompletionListener(newOnCompletionListener)),在歌曲结束的时候,onCompletion(MediaPlayer)会被调用,这样就可以设置为自动播放下一曲目。代码如下。
mMedia
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学校团建活动方案
- 管理学家介绍
- 关于元旦活动策划方案2025年
- 莫兰迪配色方案总结与应用
- 线粒体脑病的护理常规
- 整合网络营销与传统营销
- 联想神州数码品牌形象策略书样本
- 河北省石家庄市名校2025年中考化学试题模拟题及解析(浙江卷)含解析
- 山东石油化工学院《生物医药品》2023-2024学年第二学期期末试卷
- 漳州城市职业学院《英语演讲与辩论理解当代中国》2023-2024学年第二学期期末试卷
- 生物质能源综合利用项目可行性分析报告
- 《印度文化与历史:大学人文课程教案》
- 老年防诈骗知识讲座课件
- 【道法】做自强不息的中国人课件+-2024-2025学年统编版道德与法治七年级下册
- 【道法】人生当自强课件-2024-2025学年统编版道德与法治七年级下册
- 汽车维修质量保证制度
- 湖北省部分高中联考协作体2023-2024学年高二下学期期中考试物理试卷(含答案)
- 外研版(三起)(2024)三年级下册英语Unit 3 单元测试卷(含答案)
- 2024年广州市卫生健康系统招聘“优才计划”考试真题
- 重点营业线施工方案
- 餐饮店菜品成本计算表
评论
0/150
提交评论