(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) {