新闻中心

EEPW首页 > 消费电子 > 设计应用 > 基于Android系统的多媒体播放器解决方案

基于Android系统的多媒体播放器解决方案

作者:时间:2012-03-30来源:网络收藏

2.3.1 获取数据
若要获取Preferences文件的数据,例如继续播放动作需要读取播放历史信息。首先通过调用Context.getSharedPreferences(String name,int mode)方法传入Preferences文件名和打开模式来获得一个Shared Preferences对象sp,若该Preferences文件不存在,在提交数据后会创建该Preferences文件。利用该sp对象调用getter方法,传入相应的键来读取数据。
c.jpg
平台中,所有音/视频文件的相关信息都是以Content的形式提供给开发者的,所以历史播放信息是content://样式的URI,也就是前面提到的nowPlaying。
2.3.2 存储数据
若要修改Preferences文件的数据,例如暂停当前播放,或停止播放并退出该播放器软件会引起播放历史信息的变更。而产生该动作的原理是,每当播放新的音/视频文件首先将其URI赋值到全局变量nowPlaying,然后在退出该播放软件时处理变更工作:利用Shared Prefer ences对象sp调用edit()方法获得一个内部类Editor对象editor,利用该editor对象对Preferences文件进行编辑,即读取nowPlaying的数据,随后必须调用commit()方法才可以完成修改该Preferences文件里键为URI_KEY的对应数值。
d.jpg
2.4 多媒体应用
2.4.1 多媒体宏观结构
的多媒体部分框架涉及应用程序、Java框架层、C语言框架、硬件抽象层等环节。其中 Java框架层提供标准多媒体API供上层相关应用程序调用。而媒体的播放过程实际上是由下层的OpenCore和Stagefright等实现的。Android多媒体宏观结构如图2所示。

本文引用地址:http://www.eepw.com.cn/article/165780.htm

e.jpg


2.4.2 多媒体处理过程
典型数据流在多中的运行过程主要经过以下环节:最上层的Java应用程序将媒体URI(媒体文件或者流媒体)作为输入设置到中(主要是通过Android平台提供的标准接口API,如MediaPlayer(接口)等),经过Java框架层,JNI和本地框架层,一直设置到PVPlayer(OpenCore)。该过程中只是传递媒体URI路径,并无数据流传递。由PVPlayer进行解析后,将媒体分成音频流(MP3,AMR,AAC等)和视频流(H263,H264,MPEG4等),经过编解码器的处理和同步(AVSync)处理后转换成原始数据(音频通常是PCM,视频通常是YUV或RGB格式)。随后音视频原始数据将被送入音频和视频的输出环节(扬声器或者显示屏等硬件)。
2.4.3 多媒体播放接口
Android平台提供android.media包来管理各种音频和视频的媒体接口,该包中的MediaPlayer(媒体播放器接口)用于控制音频或视频文件和流的回放。另外在android.widget包中还提供Video View(视频视图)组件用于播放视频文件,以简化相对于使用Media Player播放视频的繁琐控制过程。
(1)MediaPlayer
对播放音频而言,通过MediaPlayer.crea te(Context context,Uri uri)方法来获取播放器实例,无需播放准备,直接通过MediaPlay er.start()方法来启动播放动作。其中nowPlaying就是用户当前选中的待播放文件。
//开始播放
MediaPlayer mPlayer=MediaPlayer.create(context,nowPlaying);
mPlayer.start();
通过播放器实例mp调用MediaPlayer.pause()方法可以暂停当前播放行为,可以使用start()方法恢复播放。
首先调用MediaPlayer.stop()停止当前播放行为,再调用释放与播放器相关资源的方法MediaPlayer.release()来完成停止播放动作。
对于播放视频来说,通过MediaPlayer(媒体播放器接口)的“setDataSource”方法可以指定视频文件路径。与播放音频数据不同的是,视频播放还要设置显示视频内容的承载体,使用MediaPlayer的“setDisplay”方法为当前播放器实例设置一个用于显示视频内容、代表屏幕描绘的控制器。这样用于播放视频的播放承载体必须实现Surface Holder(表面视图处理接口)的视图组件。



评论


相关推荐

技术专区

关闭