package demo.camera;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnInfoListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.media.MediaPlayer.OnSeekCompleteListener;
import android.media.MediaPlayer.OnVideoSizeChangedListener;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Display;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.LinearLayout;
/**
* 该实例中使用MediaPlayer完成播放,同时界面使用SurfaceView来实现
*
* 这里我们实现MediaPlayer中很多状态变化时的监听器
*
* 使用Mediaplayer时,也可以使用MediaController类,但是需要实现MediaController.mediaController接口
* 实现一些控制方法。
*
* 然后,设置controller.setMediaPlayer(),setAnchorView(),setEnabled(),show()就可以了,这里不再实现
* @author Administrator
*
*/
public class VideoSurfaceDemo extends Activity implements OnCompletionListener,OnErrorListener,OnInfoListener,
OnPreparedListener, OnSeekCompleteListener,OnVideoSizeChangedListener,SurfaceHolder.Callback{
private Display currDisplay;
private SurfaceView surfaceView;
private SurfaceHolder holder;
private MediaPlayer player;
private int vWidth,vHeight;
//private boolean readyToPlay = false;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setContentView(R.layout.video_surface);
surfaceView = (SurfaceView)this.findViewById(R.id.video_surface);
//给SurfaceView添加CallBack监听
holder = surfaceView.getHolder();
holder.addCallback(this);
//为了可以播放视频或者使用Camera预览,我们需要指定其Buffer类型
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//下面开始实例化MediaPlayer对象
player = new MediaPlayer();
player.setOnCompletionListener(this);
player.setOnErrorListener(this);
player.setOnInfoListener(this);
player.setOnPreparedListener(this);
player.setOnSeekCompleteListener(this);
player.setOnVideoSizeChangedListener(this);
Log.v("Begin:::", "surfaceDestroyed called");
//然后指定需要播放文件的路径,初始化MediaPlayer
String dataPath = Environment.getExternalStorageDirectory().getPath()+"/Test_Movie.m4v";
try {
player.setDataSource(dataPath);
Log.v("Next:::", "surfaceDestroyed called");
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//然后,我们取得当前Display对象
currDisplay = this