万书网 > 文学作品 > Android从入门到精通 > 第114页

第114页





★  掌握如何控制相机拍照





10.1 播放音频与视频

教学录像:光盘\TM\lx\10\播放音频与视频.exe

Android提供了对常用音频和视频格式的支持,它所支持的音频格式有MP3(.mp3)、3GPP(.3gp)、Ogg(.ogg)和WAVE(.ave)等,支持的视频格式有3GPP(.3gp)和MPEG-4(.mp4)等。通过Android  API提供的相关方法,在Android中可以实现音频与视频的播放。下面将分别介绍播放音频与视频的不同方法。

10.1.1 使用MediaPlayer播放音频

在Android中,提供了MediaPlayer类来播放音频。使用MediaPlayer类播放音频比较简单,只需要创建该类的对象,并为其指定要播放的音频文件,然后调用该类的start()方法即可,下面进行详细介绍。

1.  创建MediaPlayer对象,并装载音频文件

创建MediaPlayer对象并装载音频文件,可以使用MediaPayer类提供的静态方法create()来实现,也可以通过其无参构造方法来创建并实例化该类的对象来实现。

MediaPlayer类的静态方法create()常用的语法格式有以下两种。

[√]create(Context  context,  int  resid)

用于从资源ID所对应的资源文件中装载音频,并返回新创建的MediaPlayer对象。例如,要创建装载音频资源(res/raw/d.wav)的MediaPlayer对象,可以使用下面的代码:

MediaPlayer  player=MediaPlayer.create(this,  R.raw.d);

[√]create(Context  context,  Uri  uri)

用于根据指定的URI来装载音频,并返回新创建的MediaPlayer对象。例如,要创建装载了音频文件(URI地址为http://mingribook/sound/bg.mp3)的MediaPlayer对象,可以使用下面的代码:

MediaPlayer  player=MediaPlayer.create(this,  Uri.parse("http://mingribook/sound/bg.mp3"));

说明:  在访问网络中的资源时,要在AndroidManifest.xml文件中授予该程序访问网络的权限,具体的授权代码如下:



在通过MediaPlayer类的静态方法create()来创建MediaPlayer对象时,已经装载了要播放的音频,而使用无参的构造方法来创建MediaPlayer对象时,需要单独指定要装载的资源,这可以使用MediaPlayer类的setDataSource()方法实现。

在使用setDataSource()方法装载音频文件后,实际上MediaPlayer并未真正装载该音频文件,还需要调用MediaPlayer的prepare()方法去真正装载音频文件。使用无参的构造方法来创建MediaPlayer对象并装载指定的音频文件,可以使用下面的代码:

MediaPlayer  player=new  MediaPlayer();



try  {



player.setDataSource("/sdcard/s.wav");  //指定要装载的音频文件



}  catch  (IllegalArgumentException  e1)  {



e1.printStackTrace();



}  catch  (SecurityException  e1)  {



e1.printStackTrace();



}  catch  (IllegalStateException  e1)  {



e1.printStackTrace();



}  catch  (IOException  e1)  {



e1.printStackTrace();



}



try  {



player.prepare();  //预加载音频



}  catch  (IllegalStateException  e)  {



e.printStackTrace();



}  catch  (IOException  e)  {



e.printStackTrace();



}

2.  开始或恢复播放

在获取到MediaPlayer对象后,就可以使用MediaPlayer类提供的start()方法来开始播放或恢复已经暂停的音频的播放。例如,已经创建了一个名称为player的对象,并且装载了要播放的音频,可以使用下面的代码播放该音频:

player.start();  //开始播放

3.  停止播放

使用MediaPlayer类提供的stop()方法可以停止正在播放的音频。例如,已经创建了一个名称为player的对象,并且已经开始播放装载的音频,可以使用下面的代码停止播放该音频:

player.stop();  //停止播放

4.  暂停播放

使用MediaPlayer类提供的pause()方法可以暂停正在播放的音频。例如,已经创建了一个名称为player的对象,并且已经开始播放装载的音频,可以使用下面的代码暂停播放该音频:

player.pause();  //暂停播放

例10.1   在Eclipse中创建Android项目,名称为10.1,实现包括播放、暂停/继续和停止功能的简易音乐播放器。(实例位置:光盘\TM\sl\10\10.1)

(1)将要播放的音频文件上传到SD卡的根目录中,这里要播放的音频文件为ninan.mp3。

(2)修改新建项目的res\layout目录下的布局文件main.xml,在默认添加的线性布局管理器中添加一个水平线性布局管理器,并在其中添加3个按钮控件,分别为“播放”、“暂停/继续”和“停止”按钮,具体代码请参见光盘。

(3)打开默认添加的MainActivity,在该类中,定义所需的成员变量,具体代码如下:

private  MediaPlayer  player;  //MediaPlayer对象



private  boolean  isPause  =  false;  //是否暂停



private  File  file;  //要播放的音频文件



private  TextView  hint;  //声明显示提示信息的文本框

(4)在onCreate()方法中,首先获取布局管理器中添加的“播放”按钮、“暂停/继续”按钮、“停止”按钮和显示提示信息的文本框,然后获取要播放的文件,最后判断该文件是否存在,如果存在,则创建一个装载该文件的MediaPlayer对象;否则,显示提示信息,并设置“播放”按钮不可用,关键代码如下:

final  Button  button1  =  (Button)  findViewById(R.id.button1);  //获取“播放”按钮



final  Button  button2  =  (Button)  findViewById(R.id.button2);  //获取“暂停/继续”按钮