使用MediaPlayer出了了可以播放音频之外,还可以播放视频文件,只不过使用MediaPlayer播放视频时,没有提供图像输出界面。可以使用SurfaceView组件来显示视频图像。使用MediaPlayer和SurfaceView播放视频大致可以分为如下四个步骤:
1)定义SurfaceView组件。最好在布局文件中实现。
2)创建MediaPlayer对象,并为其加载要播放的视频。
3)将所播放的视频画面输出到SurfaceView中。使用MediaPlayer对象的setDisplay方法,可以将所播放的视频画面输出到SurfaceView。
4)调用MediaPlayer对象的相应方法控制视频的播放。播放play,暂停,pause,停止stop。
一个例子如下所示:
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private MediaPlayer mp; //声明MediaPlayer对象
private SurfaceView sv; //声明SurfaceView对象
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mp=new MediaPlayer(); //实例化MediaPlayer对象
sv=(SurfaceView)findViewById(R.id.surfaceView1); //获取布局管理器中添加的SurfaceView组件
Button play=(Button)findViewById(R.id.play); //获取“播放”按钮
final Button pause=(Button)findViewById(R.id.pause); //获取“暂停/继续”按钮
Button stop=(Button)findViewById(R.id.stop); //获取“停止”按钮
//为“播放”按钮添加单击事件监听器
play.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mp.reset(); //重置MediaPlayer对象
try {
mp.setDataSource("/sdcard/ccc.mp4"); //设置要播放的视频
mp.setDisplay(sv.getHolder()); //设置将视频画面输出到SurfaceView
mp.prepare(); //预加载视频
mp.start(); //开始播放
sv.setBackgroundResource(R.drawable.bg_playing); //改变SurfaceView的背景图片
pause.setText("暂停");
pause.setEnabled(true); //设置“暂停”按钮可用
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
//为“停止”按钮添加单击事件监听器
stop.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(mp.isPlaying()){
mp.stop(); //停止播放
sv.setBackgroundResource(R.drawable.bg_finish); //改变SurfaceView的背景图片
pause.setEnabled(false); //设置“暂停”按钮不可用
}
}
});
//为“暂停”按钮添加单击事件监听器
pause.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
if(mp.isPlaying()){
mp.pause(); //暂停视频的播放
((Button)v).setText("继续");
}else{
mp.start(); //继续视频的播放
((Button)v).setText("暂停");
}
}
});
//为MediaPlayer对象添加完成事件监听器
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
sv.setBackgroundResource(R.drawable.bg_finish); //改变SurfaceView的背景图片
Toast.makeText(MainActivity.this, "视频播放完毕!", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onDestroy() {
if(mp.isPlaying()){
mp.stop(); //停止播放视频
}
mp.release(); //释放资源
super.onDestroy();
}
}
好了,结束。