• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 文科资料 > 正文

    [基于Android系统的多媒体播放器解决方案]便携式多媒体一体机解决方案

    时间:2020-03-11 07:33:55 来源:雅意学习网 本文已影响 雅意学习网手机站

       摘 要:介绍基于Android操作系统的一个多媒体播放器软件解决方案。该多媒体播放器由启动画面、音频播放、视频播放等模块组成,重点分析UI(用户界面)设计、数据存储(Preferences等)、多媒体应用等技术难点。在此提出的软件解决方案在Android 2.3版本的模拟器和HTC A3380上分别进行功能测试与验证,能够满足用户使用音视频文件进行本地播放及相关需求,并提出总结与展望。
       关键词:Android; 用户界面; 数据存储; 多媒体应用
       中图分类号:TN919-34; TP317;TP37 文献标识码:A 文章编号:1004-373X(2011)24-0073-04
      
      
      Software Solutions of Multimedia Player Based on Android Operating System
      
      YE Xiao-jing, HUANG Jun-wei
      
      (College of Communication and Information Engineering, Chongqing University of Posts and Telecommunications, Chongqing 400065, China)
      
       Abstract: A multimedia player software solution based on Android operating system is introduced. The multimedia player is composed of splash screen, audio display module, video display module, etc. The graphical user interface (GUI) design, data storage, multimedia applications and other technical difficulties are analyzed emphatically. The function testing and verifyication carried out with Android V2.3 simulator and HTC A3380 show that the software solution can meet users′ needs and dependent demands for audio and video file playback. A summary and prospect for the further improvement of the software solution are given.
       Keywords: android; user interface; data storage; multimedia application
      
       收稿日期:2011-07-25
       基金项目:国家高科技发展规划项目(2010ZX03002-005)
      
      0 引 言
       Android本义为“机器人”,是目前最流行的移动终端开发平台,依靠Google的强大开发和媒体资源,Android成为众多移动终端厂商竞相追逐的对象。当今全球信息时代,移动终端不再局限于通信业务,多媒体业务的应用才是终端厂商的发展方向。音视频播放作为一项不可或缺的多媒体业务,对于具有丰富的可编程扩展性的Android操作系统,可以开发出个性化的音视频播放应用软件。
       1 Android平台
       1.1 Android系统架构
       Android是Google于2007年11月5日宣布的基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成。从软件分层的角度来看,Android平台自上而下由应用程序、应用程序框架、Android运行时、库及Linux内核共5部分构成[1]。
       1.2 Android应用程序组件
       Android系统的基本组件包括Activity(活动)、Service(服务)、BroadcastReceiver(广播接收者)和ContentProvider(内容提供者)等,此外还包括专门负责在基本组件之间传递消息的Intent(意向)组件[2-3]。
       2 软件解决方案
       2.1 概述
       基于Android平台的多媒体播放器软件主要由3个模块组成:启动画面模块、音频播放模块、视频播放模块。该播放器具有播放列表预览、前进、后退、暂停、继续、进度拖曳和停止等功能[4]。
       2.2 用户界面设计
       在Android应用中,UI(用户界面[5-6])是人与手机之间传递、交换信息的媒介和对话接口,是Android系统的重要组成部分。本文设计的多媒体播放器界面主要由主界面、音/视频资源列表界面、音/视频播放列表界面、音/视频播放界面等组成。本文重点介绍前2种界面设计。
       2.2.1 主界面设计
       主界面采用标签布局,使用TabHost(标签页视图)并定义2个标签,分别是音频播放列表标签页和视频播放列表标签页。
       TabHost(标签页视图)必须配合TabActivity(标签Activity组件)使用。该播放器主界面的MainActivity继承自TabActivity,初始化2个标签页,并为每个标签分配不同的用户Activity(活动),MusicActivity(音频播放)和VedioActivity(视频播放),通过调用指定的Intent来打开合适的Activity(活动)。
       2.2.2 资源列表界面设计
       资源列表界面采用ListView(列表视图)作为核心视图。以视频资源列表为例,SD卡中的视频资源列表如图1所示。
      
      
      该列表的Activity组件(VideoLibrary)继承自ListActivity。通过Android平台为基础数据类型(视频信息)装载ContentProvider(内容提供器),来获取位于SD卡设备目录/data/data/com.android.providers.media/ databases里的视频数据库信息,并使用SimpleCurosrAdapter适配器作为列表适配器将视频资源信息填充到列表视图中。
       public class VideoLibrary extends ListActivity {
       …
      
      //设置内容视图
       setContentView(R.layout.list_item_view);
      
      //从当前上下文对象获得内容解析器
       resolver = getContentResolver();
      
      //查询sd卡的视频文件并返回结果集游标
       Cursor c =resolver.query(MediaStore.Video
       .Media.EXTERNAL_CONTENT_URI,null,null,null,null);
      
      //初始化列表数据适配器
       adapter = new SimpleCursorAdapter(this,
       R.layout.list_item_layout,c,
       new String[]{TITLE},
       new int[]{R.id.VideoName});
      
      //为播放列表设置数据适配器
       this.setListAdapter(adapter);
       …
       }
       2.3 数据存储
       Android平台主要提供了4种数据存储机制[7]:Preferences(参数选项),Databases(数据库),Files(文件)和Network(网络)。
       Preferences(参数选项)是一种轻量级的、用于存储或获取数据类型的“键-值”项的机制。它通常用来存放应用程序的配置信息。本文设计的多媒体播放器采用Preferen ces机制来存储或获取音/视频历史播放信息等配置信息。
       2.3.1 获取数据
       若要获取Preferences文件的数据,例如继续播放动作需要读取播放历史信息。首先通过调用Context.getSharedPreferences(String name,int mode)方法传入Preferences文件名和打开模式来获得一个SharedPreferences对象sp,若该Preferences文件不存在,在提交数据后会创建该Preferences文件。利用该sp对象调用getter方法,传入相应的键来读取数据。
       //读取存放在SharedPreferences文件夹里的上一次播放的Uri
       SharedPreferences sp;
       sp=getSharedPreferences(PREF,Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
       String uriString = sp.getString(URI_KEY,null);
       nowPlaying = Uri.parse(uriString);
       在Android平台中,所有音/视频文件的相关信息都是以Content的形式提供给开发者的,所以历史播放信息是content://样式的URI,也就是前面提到的nowPlaying。
       2.3.2 存储数据
       若要修改Preferences文件的数据,例如暂停当前播放,或停止播放并退出该播放器软件会引起播放历史信息的变更。而产生该动作的原理是,每当播放新的音/视频文件首先将其URI赋值到全局变量nowPlaying,然后在退出该播放软件时处理变更工作:利用SharedPreferences对象sp调用edit()方法获得一个内部类Editor对象editor,利用该editor对象对Preferences文件进行编辑,即读取nowPlaying的数据,随后必须调用commit()方法才可以完成修改该Preferences文件里键为URI_KEY的对应数值。
       SharedPreferences.Editor editor = sp.edit();
       editor.putString(URI_KEY,nowPlaying.省略mit();
       2.4 多媒体应用
       2.4.1 多媒体宏观结构
       Android的多媒体部分框架涉及应用程序、Java框架层、C语言框架、硬件抽象层等环节。其中Android Java框架层提供标准多媒体API供上层相关应用程序调用。而媒体的播放过程实际上是由下层的OpenCore和Stagefright等实现的。Android多媒体宏观结构如图2所示[8]。
      
      
      2.4.2 多媒体处理过程
       典型数据流在多媒体播放器中的运行过程主要经过以下环节[9]:最上层的Java应用程序将媒体URI(媒体文件或者流媒体)作为输入设置到媒体播放器中(主要是通过Android平台提供的标准接口API,如MediaPlayer(媒体播放器接口)等),经过Java框架层,JNI和本地框架层,一直设置到PVPlayer(OpenCore)。该过程中只是传递媒体URI路径,并无数据流传递。由PVPlayer进行解析后,将媒体分成音频流(MP3,AMR,AAC等)和视频流(H263,H264,MPEG4等),经过编解码器的处理和同步(AVSync)处理后转换成原始数据(音频通常是PCM,视频通常是YUV或RGB格式)。随后音视频原始数据将被送入音频和视频的输出环节(扬声器或者显示屏等硬件)[6-7]。
       2.4.3 多媒体播放接口
       Android平台提供android.media包来管理各种音频和视频的媒体接口,该包中的MediaPlayer(媒体播放器接口)用于控制音频或视频文件和流的回放。另外在android.widget包中还提供Video View(视频视图)组件用于播放视频文件,以简化相对于使用MediaPlayer播放视频的繁琐控制过程[10]。
       (1) MediaPlayer
       对播放音频而言,通过MediaPlayer.crea te(Context context,Uri uri)方法来获取播放器实例,无需播放准备,直接通过MediaPlay er.start()方法来启动播放动作。其中nowPlaying就是用户当前选中的待播放文件[9]。
       //开始播放
       MediaPlayer mPlayer = MediaPlayer.create(context,nowPlaying);
       mPlayer.start();
       通过播放器实例mp调用MediaPlayer.pause()方法可以暂停当前播放行为,可以使用start()方法恢复播放。
       首先调用MediaPlayer.stop()停止当前播放行为,再调用释放与播放器相关资源的方法MediaPlayer.release()来完成停止播放动作。
       对于播放视频来说,通过MediaPlayer (媒体播放器接口)的“setDataSource”方法可以指定视频文件路径。与播放音频数据不同的是,视频播放还要设置显示视频内容的承载体,使用MediaPlayer的“setDisplay”方法为当前播放器实例设置一个用于显示视频内容、代表屏幕描绘的控制器。这样用于播放视频的播放承载体必须实现Surface Holder (表面视图处理接口)的视图组件。
       (2) Video View
       首先视频播放布局资源中必须定义2个组件:“�VideoView�”标记定义视频视图组件,“�MediaController�”标记定义视频播放控制器组件。在Acitity组件对布局资源填充完成后,获取布局资源中定义的视频视图和播放控制器组件实例(mVideo和mController),视频视图实例mVideo指定要播放的视频文件路径或URI,用于承载待显示视频内容,并为mVideo设置播放控制器用于控制该视频文件的播放行为(如暂停、前进、后退和进度拖曳等),再调用VideoView.start()方法启动播放行为。停止播放行为可以调用Video View.stopPlayback()来停止回放行为[9]。
       //获取视频视图和播放控制器组件实例
       mVideo=(VideoView)findViewById(R.id.video_view);
       mController=(MediaController)findViewById(R.id.media_controller);
       //设置视频文件URI
       mVideo.setVideoURI(nowPlaying);
       //设置播放控制器
       mVideo.setMediaController(mController);
       3 测 试
       本文设计的多媒体播放器是在Android SDK 2.3平台下开发完成的。该播放器以应用程序apk的形式分别集成到在Android 2.3模拟器和HTC A3380手机上,通过测试能够实现音/视频文件的本地播放功能,例如暂停、继续、停止、进度拖曳等。以音频播放为例,测试效果如图3所示。
      
      4 结 语
       本文重点介绍基于Android平台的多媒体播放器解决方案。侧重分析UI(用户界面)设计、音/视频数据信息读写,及音/视频播放等过程;并在Android SDK2.3平台上进行功能性测试,测试结果满足预期,能够正常播放本地多媒体文件。随着用户对移动终端的媒体播放功能的需求日益增加,提供支持更高分辨率的视频播放,以及和网络结合的流媒体方面的功能将是下一步的研究重点。
      
      参 考 文 献
      [1] E2ECloud工作室.深入浅出 Google Android [M].北京:人民邮电出版社,2009.
      [2] 高焕堂.Android应用框架原理及程式设计36技[M]. [出版地不详 ]:广悦文化事业有限公司,2009.
      [3] 佚名.Android开发教程&笔记[EB/OL].[2009-11-19].http://www.省略/tech/509.htm.
      [4] 张正政,林耀荣.基于Android系统的影音播放器开发[J].现代电子技术,2011,34(2):5-8.
      [5] 赵亮,张维.基于Android 技术的界面设计与研究[J].电脑知识与技术,2009,29(5):8183-8185.
      [6] 公磊,周聪.基于Android 的移动终端应用程序开发与研究[J].计算机与现代化,2008(8):85-89.
      [7] 小试牛刀.解读:Android平台数据存储机制[EB/OL].[2010-12-17].http://hb.省略/a/20101217/000047.htm.
      [8] 韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010.
      [9] 韩超,梁泉.Android系统级深入开发[M].北京:电子工业出版社,2010.
      [10] 汪永松.Android平台开发之旅[M].北京:机械工业出版社,2011.
      [11] 贺丹丹,施展.基于Android的VoIP系统的设计与实现[J].现代电子技术,2011,34(6):28-31.
      [12] 车一,龙华,蒋华龙.下一代移动通信业务的自相似研究和实现[J].电子科技,2008(2):55-57.
      [13] 王凤妮,王金宝.基于P2P架构和SIP协议的多媒体邮件网络研究[J].电子科技,2008(1):60-62.
      [14] 乃学尚.IP多媒体子系统组网研究[J].电子科技,2009(2):68-72.
       作者简介: 叶晓静 女,1986年出生,重庆南岸人,硕士研究生。主要研究方向为移动通信移动通信,通信协议及软件。
      黄俊伟 男,1969年出生,福建人,高级工程师,工学硕士。主要研究方向为移动通信,通信协议及软件。

    推荐访问:解决方案 多媒体播放器 系统 基于Android系统的多媒体播放器解决方案 多媒体信息发布系统解决方案 网络多媒体信息发布系统

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章