您好,欢迎访问三七文档
本章要求:第3章多媒体应用开发使用MediaPlayer播放音频使用SoundPool播放音频使用VideoView组件播放视频使用MediaPlayer和SurfaceView播放视频3.1播放音频与视频3.2综合实例第3章多媒体应用开发随着3G时代的到来,在手机和平板电脑上应用多媒体已经非常广泛了。Android作为又一大手机、平板电脑操作系统,对于多媒体应用也提供了良好的支持。它不仅支持音频和视频的播放,而且还支持录制音频等。本章将对Android中的音频及视频等多媒体应用进行详细介绍。第3章多媒体应用开发3.1.1使用MediaPlayer播放音频3.1.2使用SoundPool播放音频3.1.3使用VideoView播放视频3.1.4使用MediaPlayer和SurfaceView播放视频3.1播放音频与视频Android提供了对常用音频和视频格式的支持,它所支持的音频格式有MP3(.mp3)、3GPP(.3gp)、Ogg(.ogg)和WAVE(.ave)等,支持的视频格式有3GPP(.3gp)和MPEG-4(.mp4)等。通过AndroidAPI提供的相关方法,可以实现音频与视频的播放。下面将分别介绍播放音频与视频的不同方法。3.1播放音频与视频在Android中,提供了MediaPlayer类用来播放音频。使用MediaPlayer类播放音频比较简单,只需要创建该类的对象,并为其指定要播放的音频文件,然后再调用它的start()方法就可以播放音频文件了。下面详细介绍如何使用MediaPlayer播放音频文件。1.创建MediaPlayer对象,并装载音频文件创建MediaPlayer对象,并装载音频文件。可以使用该类提供的静态方法create()来实现,也可通过它的无参构造方法来创建并实例化该类的对象来实现。MediaPlayer类的静态方法create()常用的语法格式有以下两种:create(Contextcontext,intresid)用于从资源ID所对应的资源文件中装载音频,并返回新创建的MediaPlayer对象。例如,要创建装载音频资源(res/raw/d.wav)的MediaPlayer对象,可以使用下面的代码:MediaPlayerplayer=MediaPlayer.create(this,R.raw.d);create(Contextcontext,Uriuri)用于根据指定的URI来装载音频,并返回新创建的MediaPlayer对象。例如,要创建装载了音频文件(URI地址为3.1.1使用MediaPlayer播放音频)的MediaPlayer对象,可以使用下面的代码:MediaPlayerplayer=MediaPlayer.create(this,Uri.parse());说明:在访问网络中的资源时,要在AndroidManifest.xml文件中授予该程序访问网络的权限,具体的授权代码如下:uses-permissionandroid:name=android.permission.INTERNET/在通过MediaPlayer类的静态方法create创建MediaPlayer对象时,已经装载了要播放的音频,而使用无参的构造方法来创建MediaPlayer对象时,需要单独指定要装载的资源,这可以使用MediaPlayer类的setDataSource方法实现。在使用setDataSource方法装载音频文件后,实际上MediaPlayer并未真正去装载该音频文件,还需要调用MediaPlayer的prepare方法去装载音频文件。使用无参的构造方法来创建MediaPlayer对象并装载指定的音频文件可以使用下面的代码:MediaPlayerplayer=newMediaPlayer();try{player.setDataSource(/sdcard/s.wav);//指定要装载的音频文件}catch(IllegalArgumentExceptione1){e1.printStackTrace();}catch(SecurityExceptione1){e1.printStackTrace();}catch(IllegalStateExceptione1){e1.printStackTrace();}catch(IOExceptione1){e1.printStackTrace();}try{player.prepare();//预加载音频}catch(IllegalStateExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}2.开始或恢复播放在获取到MediaPlayer对象后,就可以使用MediaPlayer类提供的start方法来开始播放或恢复已经暂停的音频的播放。例如,已经创建了一个名称为player,并且装载了要播放音频的MediaPlayer,可以使用下面的代码播放该音频。player.start();//开始播放3.停止播放使用MediaPlayer类提供的stop方法可以停止正在播放的音频。例如,已经创建了一个名称为player,并且已经开始播放装载的音频,可以使用下面的代码停止播放该音频。player.stop();//停止播放4.暂停播放使用MediaPlayer类提供的pause方法可以暂停正在播放的音频。例如,已经创建了一个名称为player,并且已经开始播放装载的音频,可以使用下面的代码暂停播放该音频。player.pause();//暂停播放【例13-1】在Eclipse中创建Android项目,实现包括播放、暂停/继续和停止功能的简易音乐播放器。(1)将要播放的音频文件上传到SD卡的根目录中,这里要播放的音频文件为ninan.mp3。(2)修改新建项目的res/layout目录下的布局文件main.xml,在默认添加的线性布局管理器中添加一个水平线性布局管理器,并在其中添加3个按钮,分别为“播放”按钮、“暂停/继续”按钮和“停止”按钮。(3)打开默认添加的MainActivity,在该类中,定义所需的成员变量,具体代码如下:privateMediaPlayerplayer;//MediaPlayer对象privatebooleanisPause=false;//是否暂停privateFilefile;//要播放的音频文件privateTextViewhint;//声明显示提示信息的文本框(4)在onCreate()方法中,首先获取布局管理器中添加的“播放”按钮、“暂停/继续”按钮、“停止”按钮和显示提示信息的文本框,然后获取要播放的文件,最后再判断该文件是否存在,如果存在,则创建一个装载该文件的MediaPlayer对象,否则,显示提示信息,并设置“播放”按钮不可用,关键代码如下:finalButtonbutton1=(Button)findViewById(R.id.button1);//获取播放按钮finalButtonbutton2=(Button)findViewById(R.id.button2);//获取“暂停/继续”按钮finalButtonbutton3=(Button)findViewById(R.id.button3);//获取“停止”按钮hint=(TextView)findViewById(R.id.hint);//获取用户显示提示信息的文本框file=newFile(/sdcard/ninan.mp3);//获取要播放的文件if(file.exists()){//如果文件存在player=MediaPlayer.create(this,Uri.parse(file.getAbsolutePath()));//创建MediaPlayer对象}else{hint.setText(要播放的音频文件不存在!);button1.setEnabled(false);return;}(5)编写用于播放音乐的play()方法,该方法没有入口参数的返回值。在该方法中,首先调用MediaPlayer对象的reset()方法重置MediaPlayer对象,然后重新为其设置要播放的音频文件,并预加载该音频,最后调用start()方法开始播放音频,并修改显示提示信息的文本框中的内容,具体代码如下:privatevoidplay(){try{player.reset();//重新设置要播放的音频player.setDataSource(file.getAbsolutePath());player.prepare();//预加载音频player.start();//开始播放hint.setText(正在播放音频...);}catch(Exceptione){e.printStackTrace();//输出异常信息}}(6)为MediaPlayer对象添加完成事件监听器,用于当音乐播放完毕后,重新开始播放音乐,具体代码如下:player.setOnCompletionListener(newOnCompletionListener(){@OverridepublicvoidonCompletion(MediaPlayermp){play();//重新开始播放}});(7)为“播放”按钮添加单击事件监听器,在重写的onClick()方法中,首先调用play()方法开始播放音乐,然后对代表是否暂停的标记变量isPause进行设置,最后再设置各按钮的可用状态,关键代码如下:button1.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){play();//开始播放音乐if(isPause){button2.setText(暂停);isPause=false;//设置暂停标记变量的值为false}button2.setEnabled(true);//“暂停/继续”按钮可用button3.setEnabled(true);//“停止”按钮可用button1.setEnabled(false);//“播放”按钮不可用}});(8)为“暂停/继续”按钮添加单击事件监听器,在重写的onClick()方法中,如果MediaPlayer处于播放状态并且标记变量isPause的值为false,则暂停播放音频,并设置相关信息,否则调用MediaPlayer对象的start()方法继续播放音乐,并设置相关信息,关键代码如下:button2.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){if(player.isPlaying()&&!isPause){player.pause();//暂停播放;isPause=true;((Button)v).setText(继续);hint.setText(暂停播放音频...);button1.setEnabled(true);//“播放”按钮可用}else{player.start();//继续播放((Button)v).setText(暂停);hint.setText(继续播放音频...);isPause=false;button1.setEnabled(false);//“播放”按钮不可用}}});(9)为“停止”按钮添加单击事件监听器,在重写的onClick()方法中,首先调用MediaPlayer对象的stop()方法停止播放音频,然后设置提示信息及各按钮的可用状态,具体代码如下:button3.setOnClickListener(newOnClickListener(){@O
本文标题:多媒体应用开发
链接地址:https://www.777doc.com/doc-1473693 .html