使用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(); } }
好了,结束。