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

第117页



(4)分别为“风铃声”按钮、“布谷鸟叫声”按钮、“门铃声”按钮和“电话声”按钮添加单击事件监听器,在重写的onClick()方法中播放指定的音频,具体代码如下:

chimes.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



soundpool.play(soundmap.get(1),  1,  1,  0,  0,  1);  //播放指定的音频



}



});



enter.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



soundpool.play(soundmap.get(2),  1,  1,  0,  0,  1);  //播放指定的音频



}



});



notify.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



soundpool.play(soundmap.get(3),  1,  1,  0,  0,  1);  //播放指定的音频



}



});



ringout.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



soundpool.play(soundmap.get(4),  1,  1,  0,  0,  1);  //播放指定的音频



}



});

(5)重写键盘按键被按下的onKeyDown()方法,用于实现播放按键音的功能,具体代码如下:

@Override



public  boolean  onKeyDown(int  keyCode,  KeyEvent  event)  {



soundpool.play(soundmap.get(5),  1,  1,  0,  0,  1);  //播放按键音



return  true;



}

运行本实例,将显示如图10.2所示的运行结果。单击“风铃声”、“布谷鸟叫声”等按钮,将播放相应的音乐;按下键盘上的按键,将播放一个按键音。



图10.2 应用SoundPool播放音频

10.1.3 使用VideoView播放视频

在Android中,提供了VideoView组件用于播放视频文件。要想使用VideoView组件播放视频,首先需要在布局文件中创建该组件,然后在Activity中获取该组件,并应用其setVideoPath()方法或setVideoURI()方法加载要播放的视频,最后调用start()方法来播放视频。另外,VideoView组件还提供了stop()和pause()方法,用于停止或暂停视频的播放。

在布局文件中创建VideoView组件的基本语法格式如下:




属性列表>





VideoView组件支持的XML属性如表10.2所示。

表10.2 VideoView组件支持的XML属性





XML属性  描 述

android:id  用于设置组件的ID

android:background  用于设置背景,可以设置背景图片,也可以设置背景颜色

android:layout_gravity  用于设置对齐方式

android:layout_width  用于设置宽度

android:layout_height  用于设置高度



在Android中还提供了一个可以与VideoView组件结合使用的MediaController组件。MediaController组件用于通过图形控制界面来控制视频的播放。

下面通过一个具体的实例来说明如何使用VideoView和MediaController来播放视频。

例10.3   在Eclipse中创建Android项目,名称为10.3,实现通过VideoView和MediaController播放视频。(实例位置:光盘\TM\sl\10\10.3)

(1)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的TextView组件删除,然后在默认添加的线性布局管理器中添加一个VideoView组件用于播放视频文件,关键代码如下:




android:id="@+id/video"



android:background="@drawable/mpbackground"



android:layout_width="match_parent"



android:layout_height="wrap_content"



android:layout_gravity="center"  />

(2)打开默认添加的MainActivity,在该类中,声明一个VideoView对象,具体代码如下:

private  VideoView  video;  //声明VideoView对象

(3)在onCreate()方法中,首先获取布局管理器中添加的VideoView组件,并创建一个要播放视频所对应的File对象,然后创建一个MediaController对象,用于控制视频的播放,最后判断要播放的视频文件是否存在,如果存在,使用VideoView播放该视频,否则弹出消息提示框显示提示信息,具体代码如下:

video=(VideoView)  findViewById(R.id.video);  //获取VideoView组件



File  file=new  File("/sdcard/bell.mp4");  //获取SD卡上要播放的文件



MediaController  mc=new  MediaController(MainActivity.this);



if(file.exists()){  //判断要播放的视频文件是否存在



video.setVideoPath(file.getAbsolutePath());  //指定要播放的视频



video.setMediaController(mc);  //设置VideoView与MediaController相关联



video.requestFocus();  //让VideoView获得焦点



try  {



video.start();  //开始播放视频



}  catch  (Exception  e)  {



e.printStackTrace();  //输出异常信息



}



//为VideoView添加完成事件监听器



video.setOnCompletionListener(new  OnCompletionListener()  {



@Override



public  void  onCompletion(MediaPlayer  mp)  {