1、第11章Android多媒体应用每个使用Android系统的人都会知道Android系统中带有一个图库应用程序和一个音乐播放器。打开图库可以查看到当前终端里所有的图片文件,而音乐播放器可以看到当前终端里所有的音乐文件。这就是Android的多媒体。除此之外,Android多媒体还支持视频的播放和录制,以及图片的采集(即拍照)。11.1 音乐播放器音乐播放器是现在手机中的一个最基本的应用,差不多每一部手机都包括了这一功能。在Android中,与音频相关的类是MediaPlayer类,它提供了音频的播放、暂停、停止和循环等功能方法。在Android系统中,支持的音频格式主要有MP3、WAV和3GP
2、默认支持的音频文件有:存储在应用程序中的本地资源(Resource);存储在文件系统的标准音频文件(Local);通过网络连接取得的数据流(URL)。11.1.1 MediaPlayer类简介Android系统使用MediaPlayer类来播放音频。方法名称方法名称方法说明方法说明public static MediaPlayercreate(Context context,int resid)从resid资源ID对应的资源文件中装载音频文件,并返回新创建的MediaPlayer对象public static MediaPlayercreate(Context context,Uri uri
3、)从指定的Uri装载音频文件,并返回新创建的MediaPlayer对象public int getDuration()获取音频文件播放的总时长public void pause()暂停音乐播放public void prepare()准备播放器播放public void reset()重置未初始化状态的媒体播放器。public void seekTo(int msec)寻求指定的时间位置,播放指定的音频内容public void setDataSource(String path)指定装载path路径所代表的文件public void setDataSource(Context context
4、Uri uri)指定装载Uri所代表的文件public void setDataSource(FileDescriptor fd,long offset,long length)指定装载fd所代表的文件中从offset开始,长度为length的文件内容public void setDataSource(FileDescriptor fd)指定装载fd所代表的文件public void setLooping(boolean looping)设置循环播放public void setVolume(float leftVolume,float rightVolume)设置音乐音量public vo
5、id start()播放音乐public void stop()停止播放音乐11.1.2 本地音频文件播放学习了MediaPlayer的相关API之后,我们就可以开发应用程序。使用MediaPlayer播放存储在应用程序中的本地资源音频文件要经过以下流程。1.音乐的播放、暂停和停止2.音量设置对于音量设置,Android提供了public void setVolume(float leftVolume,float rightVolume)方法,语法如下。mPlayer.setVolume(float leftVolume,float rightVolume)其中,leftVolume表示左声道
6、声音,rightVolume表示右声道声音。leftVolume和rightVolume参数值范围均为0.0f(声音最小)1.0f(声音最大)。3.播放进度设置Android提供了public void seekTo(int msec)方法,设置音乐的播放进度,播放指定的音频文件内容。语法如下。mPlayer.seekTo(int msec);其中,seekTo()方法用来查找指定时间位置,msec属性用来设定音频文件偏移时长。4.音乐循环播放Android系统提供了public void setLooping(boolean looping)方法,传入参数true时,设置音乐循环播放。11.
7、1.3 多个标准音频文件播放上一节中,调用public static MediaPlayercreate(Context context,int resid)方法播放音乐,使用非常简单,但每次调用都会返回新创建的MediaPlayer对象。如果程序需要使用MediaPlayer播放多个音频文件,使用MediaPlayer的静态create()方法就不合适了。此时我们可以考虑,使用public void setDataSource(String path)方法来装载指定的音频文件。11.2 视频播放器上一节中我们学习了有关音频播放的知识,本节我们继续来看Android在视频播放方面的应用。And
8、roid系统支持的视频文件格式有3GP、MP4。Android系统所能播放的视频文件可以存储在SDCard或Android的系统文件内。11.2.1 视频相关类简介Android系统提供了VideoView控件,用于在界面设计时显示视频文件。在使用VideoView播放视频文件时,需要使用到以下类。下面我们一一进行介绍。1.VideoView类VideoView提供了一系列方法。方法名称方法名称方法说明方法说明public boolean canPause()判断是否能够暂停播放视频public boolean canSeekBackward()判断是否能够倒退public boolean c
9、anSeekForward()判断是否能够快进public int getCurrentPosition()获得当前的位置public int getDuration()获得所播放视频的总时间public boolean isPlaying()判断是否正在播放视频public void pause()暂停视频播放public void seekTo(int msec)设置播放位置public void setMediaController(MediaController controller)设置媒体控制器public void setVideoPath(String path)设置path路
10、径所代表的视频文件public void setVideoURI(Uri uri)加载Uri对应的视频文件public void start()开始播放视频文件public void stopPlayback()停止回放视频文件2.MediaController类MediaController是一个包含了媒体播放器(MediaPlayer)控件的视图。包含了一些典型的按钮,比如“播放(Play)”、“暂停(Pause)”、“倒带(Rewind)”、“快进(Fast Forward)”与进度滑动器(Progress Slider)。它管理媒体播放器(MediaPlayer)的状态以保持控件的同步
11、11.2.2 视频播放流程VideoView是一个位于android.widget包下的组件,我们使用这个组件来完成视频的播放。使用VideoView播放视频文件流程。11.3 音频与视频的录制Android系统除了提供相关类,实现音频与视频的播放之外,还提供了MediaRecorder类实现音频视频的录制,但是需要有硬件设备的支持。11.3.1 音频录制手机一般都提供了麦克风硬件,而Android系统就可以利用该硬件录制音频。使用MediaRecorder类录制音频用到的相关方法。方法名称方法名称方法说明方法说明public MediaRecorder()默认构造方法public void
12、 prepare()准备记录器开始捕捉和编码数据public void release()释放与此相关的MediaRecorder对象资源public void setAudioEncoder(int audio_encoder)设置音频编码格式public void setAudioSource(int audio_source)设置声音来源public void setOutputFile(String path)设置音频文件保存位置public void setOutputFormat(int output_format)设置所录制的音频文件的格式public void start()开
13、始录制public void stop()结束录制11.3.2 视频录制MediaRecorder除了可以录制音频以外,还可以录制视频。使用MediaRecorder录制视频与录制音频的步骤基本相同。只是录制视频不仅需要录制声音,还需要录制图像。方法名称方法名称方法说明方法说明public void setVideoEncoder(int video_encoder)设置视频编码格式public void setVideoFrameRate(int rate)设置视频的帧率public void setVideoSize(int width,int height)设置视频的宽度和高度public void setVideoSource(int video_source)设置视频来源11.4 相机Camera在Android多媒体应用开发中,我们可以调用系统功能拍照,同样需要硬件设备(摄像头)支持。Android支持的图像格式有JPEG、GIF、PNG和BMP。11.5小结本章内容主要介绍了Android系统中多媒体的应用开发。其中,使用MediaPlayer播放音频、使用VideoView播放视频的开发都比较简单,读者容易掌握。音频、视频以及图像的采集是本章难点,需要读者多多练习,以便熟练掌握。






