内容正文:
第13章 多媒体应用开发
音频和视频的播放
使用MediaRecorder录制音频
控制摄像头拍照
1
掌握使用MediaPlayer播放音频的方法
掌握控制摄像头拍照的方法
掌握使用SurfaceView播放视频的方法
掌握MediaRecorder录制音频的方法
学 习 目 标
LEARNING OBJECTIVES
初心至善 匠心育人
13.1
音频和视频的播放
13.1.1
使用MediaPlayer播放音频
13.1.2
音乐特效控制
13.1.3
使用VideoView播放视频
目录
Contents
初心至善 匠心育人
13.1 音频和视频的播放
13.1.1 使用MediaPlayer播放音频
MediaPlayer类处于Android多媒体包下“android.media.MediaPlayer”,包含了Audio和Video两个播放功能。音视频的播放过程一般是开始播放、暂停播放或者停止播放,因此MediaPlayer中最常用的几个方法如表所示。
按照播放资源的来源,MediaPlayer的使用也不尽相同。具体有如下4种来源。
1. 播放应用中的资源文件
在之前讲解Android中的资源时已经知道,应用中的资源一般是放在/res/raw目录下。使用MediaPlayer播放该资源时示例代码如下。
初心至善 匠心育人
13.1 音频和视频的播放
13.1.1 使用MediaPlayer播放音频
2.播放应用中的原始资源文件
播放应用的原始资源文件步骤如下。
(1)调用Context的getAssets()方法获取应用的AssetManager。
(2)调用AssetManager对象的openFd(String name)方法打开指定的原始资源,该方法返回一个AssetFileDescriptor对象。
(3)调用AssetFileDescriptor的getFileDescriptor()、getFileOffset()和getLength()方法来获取音频文件的FileDescriptor、开始位置、长度等。
(4)调用MediaPlayer对象的setDataSource(FileDescriptor fd, long offset, long length)方法装载音频资源。
初心至善 匠心育人
13.1 音频和视频的播放
13.1.1 使用MediaPlayer播放音频
(5)调用MediaPlayer对象的prepare()方法准备音频。
(6)调用MediaPlayer对象的start()、pause()、stop()等方法控制播放即可。
3. 播放外部存储器上的音频文件
播放外部存储器上的音频文件步骤如下。
初心至善 匠心育人
13.1 音频和视频的播放
13.1.1 使用MediaPlayer播放音频
(1)创建MediaPlayer对象,并调用其setDataSource(String path)方法装载指定的音频文件。
(2)调用MediaPlayer对象的prepare()方法准备音频。
(3)调用MediaPlayer的start()、pause()、stop()等方法控制播放即可。
4. 播放来自网络的音频文件
播放来自网络的音频文件有两种方式。
初心至善 匠心育人
13.1 音频和视频的播放
13.1.1 使用MediaPlayer播放音频
使用MediaPlayer的静态create(Context context, Uri uri)方法。
调用MediaPlayer的setDataSource(Context context, Uri uri)方法。
下面是第二种方式的示例代码。
需要注意的是,MediaPlayer除了使用prepare()方法来准备声音之外,还可以调用prepareAsync()来准备声音。此二者的区别是,prepareAsync()是线程异步的,不会阻塞当前的UI线程。
初心至善 匠心育人
13.1 音频和视频的播放
13.1.2 音乐特效控制
在音乐播放器中,一般都会有用特效控制音乐播放的选项,这些特效包括均衡器、重低音、音场以及显示音乐波形等。其实这些特效的实现离不开AudioEffect及其子类,常用子类如表所示。
表中前三个子类的用法很简单,只要调用它们的静态方法create()创建对应的实例,然后调用isAvailable()方法判断是否可用,最后调用setEnabled(boolean enabled)方法启用相应效果即可。
初心至善 匠心育人
13.1 音频和视频的播放
13.1.3 使用Video View播放视频
前面介绍了在Android应用中如何播放音频,本节介绍如何播放视频。Android提供了VideoView组件来播放视频