教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

最新android应用开发揭秘——实验六教程文件

来源:网络收集 时间:2026-08-29
导读: 实验六 姓名:马征学号:2011303502 班级:14011107 一、了解Android多媒体开发 1、Open Core Open Core是Android多媒体框架的核心所有Android平台的音频、视频的采集以及播放等操作都是通过它来实现。它也被称为PV Packet VideoPacket Video是一家专门提供

实验六

姓名:马征学号:2011303502 班级:14011107

一、了解Android多媒体开发

1、Open Core

Open Core是Android多媒体框架的核心所有Android平台的音频、视频的采集以及播放等操作都是通过它来实现。它也被称为PV Packet VideoPacket Video是一家专门提供多媒体解决方案的公司。程序员可以通过Open Core 方便快速地开发出想要的多媒体应用程序例如

录音、播放、回放、视频会议、流媒体播放等等。

可以看出Open Core 支持的格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等。Open Core多媒体框架有一套通用可扩展的接口针对第三方的多媒体编码器输入、输出设备等等。具体功能如下

多媒体文件的播放、下载包括3GPPMPEG-AAC和MP3 containers。流媒体文件的下载、实时播放包括3GPPHTTP和RTSP/RTP。

动态视频和静态图像的编码、解码例如MPEG-4H.263和A VC(H.264)JPEG。

语音编码格式AMR-NB和AMR-WB。

音乐编码格式MP3AACAAC+。视频和图像格式3GPPMPEG-4和JPEG。

视频会议基于H324-M标准

Open Core 是一个多媒体的框架从宏观上来看它主要包含了两大方面的内容

PVPlayer 提供多媒体播放器的功能完成各种音频Audio、视频

Video 流的回放Playback功能。PV Author提供媒体流记录的功能完成各种音频、视频流以及静态图像的捕获功能。

Open Core的代码在Android代码的External/Opencore目录中其子目录及其具体功能描述如下

Android这里面是一个上层的库它实现了一个为Android使用的音视频采集、播放的接口及DRM数字版权管理的接口实现。

Baselibs包含数据结构和线程安全等内容的底层库。

Codecs_v2音视频的解码器基于OpenMAX的头文件。

Fileformats文件格式的解析Parser工具。

Nodes提供一些PVMF的NODE主要是编解码和文件解析方面的。

Oscl操作系统兼容库。

Pvmi输入输出控制的抽象接口。

Protocols主要是与网络相关的RTSP、RTP、HTTP等协议的相关内容。

Pvcommon :pvcommon库文件的Android.mk文件没有源文件。

Pvplayerpv :player库文件的Android.mk文件没有源文件。

Pvanthor :pvauthor库文件的Android.mk文件没有源文件。Tools_v2编译工具以及一些可注册的模块。

在实际的开发中,我们不会过多研究Open core的实现,Android提供了上层的Media API 给开发人员使用:

Android中对媒体系统相关的Java代码,主要有下表中的文件:

2、MediaPlayer

MediaPlayer类可以用来播放音频、视频和流媒体MediaPlayer包含了Audio和Video的播放功能在Android的界面上Music和Video两个应用程序都是调用MediaPlayer实现的。首先我们来看看MediaPlayer的生命周期

当一个MediaPlayer对象被新建或者调用reset()方法之后它处于空闲状态在调用release()方法后才会处于结束状态。一个新建的MediaPlayer对象在调用getCurrentPosition()、getDuration()、getVideoHeight()、getVideoWidth()、setAudioStreamType(int)、setLooping(boolean)、setV olume(float,float)、pause()、start()、stop()、seekTo(int)、prepare()、prepareAsync()方法时不会触发OnErrorListener.onError()事件。

当MediaPlayer对象不再被使用时最好通过release()方法来释放使其处于结束状态以免造成不必要的错误。当MediaPlayer 对象处于结束状态时便不能再使用。MediaPlayer对象被新建时处于空闲状态如果通过create()方法创建之后便处于准备状态

一般情况下一些常用的播放控制操作可能因为音频、视频的格式不被支持或者质量较差以及流超时也有可能由于开发者的疏忽使得MediaPlayer对象处于无效状态等而导致错误。

这里可以通过注册setOnErrorListener(android.media.MediaPlayer.OnErrorListener)方法实现OnErrorListener.onError()方法来监控这些错误。如果发生了错误MediaPlayer对象将处于错误状态可以使用reset()方法来恢复错误。

任何MediaPlayer 对象都必须先处于准备状态然后才开始播放。

要开始播放MediaPlayer对象都必须成功调用start()方法。可以通过isPlayer()方法来检测当前是否正在播放。

当MediaPlayer 对象在播放时可以进行暂停和停止等操作pause()方法暂停播放stop()

方法停止播放。处于暂停状态时可以通过start()方法来恢复播放但是处于停止状态时则必须先调用pause()方法处于准备状态然后再通过start()方法来开始播放。

可以通过setLooping(Boolean)方法来设置是否循环播放。

3、MediaRecorder

MediaRecorder类用来进行媒体采样包括音频和视频。MediaRecorder作为状态机运行。需要设置不同的参数比如源设备和格式。设置后可执行任何时间长度的录制直到用户停止

MediaRecorder在底层同样是通过Open Core来实现的,但是要开发应用时需要使用Android 为我们提供的Java借口:

二、Android多媒体的具体示例

1、播放音乐

首先我们的播放器可能不只是希望播放一种格式的音乐,而且还需要自动识别指定路径中那些事可以播放的音频文件,那些事不支持的格式:

class MusicFilter implements FilenameFilter

{

public Boolean accept(File dir,String name)

{ //这里还可以设置其他格式的音乐文件

return (name.endsWith(―.mp3));

}

}

现在我们需要需要指定音乐文件的位置本例我们设置路径为“/sdcard/”因此我们需要向SD 卡中添加一些音频文件。步骤如下启动模拟器在Eclipse上选择DDMS 窗口选择File Explorer标签。

public class Activity01 extends ListActivity

{

/* 几个操作按钮 */

private ImageButton m FrontImageButton= null;

private ImageButton m StopImageButton= null;

private ImageButton m StartImageButton= null;

private ImageButton m PauseImageButton= null;

private ImageButton m NextImageButton= null;

/* MediaPlayer对象 */

public MediaPlayer mMediaPlayer= null;

/* 播放列表 */

private List<String> mMusicList = new ArrayList<String>();

/* 当前播放歌曲的索引 */

private int currentListItme = 0;

/* 音乐的路径 */

private static final String MUSIC_PATH = new String("/sdcard/");

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(http://www.77cn.com.cnyout.main);

/* 更新显示播放列表 */

musicList();

/* 构建MediaPlayer对象 */

mMediaPlayer= new MediaPlayer();

mFrontImageButton= (ImageButton) findViewById(http://www.77cn.com.cnstImageButton);

mStopImageButton = (ImageButton) findViewById(R.id.StopImageButton);

mStartImageButton = (ImageButton)

findViewById(R.id.StartImageButton);

mPauseImageButton = (ImageButton)

findViewById(R.id.PauseImageButton);

mNextImageButton = (ImageButton) findViewById(R.id.Ne …… 此处隐藏:2858字,全部文档内容请下载后查看。喜欢就下载吧 ……

最新android应用开发揭秘——实验六教程文件.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1582722.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)