package com.zhu.view;import java.io.File;import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;import com.zhu.R;public class VideoPlay extends Activity {
private String path;
private MediaPlayer mediaPlayer;
private SurfaceView surfaceView;
private boolean pause;
private int position;
private String filenames; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* 隐藏状态栏 */
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
/* 隐藏标题栏 */
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.video);
mediaPlayer = new MediaPlayer();
Bundle bundle = this.getIntent().getExtras();
filenames = bundle.getString("filenames");
surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);
surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceView.getHolder().setFixedSize(320, 180);
surfaceView.getHolder().setKeepScreenOn(true);
surfaceView.getHolder().addCallback(new SurfaceCallback()); } private final class SurfaceCallback implements Callback {
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Log.i("surfaceChanged", "surfaceChanged");
}
public void surfaceCreated(SurfaceHolder holder) {
Log.i("surfaceCreated", "surfaceCreated");
if (position > 0 && path != null) {
play(position);
position = 0;
}
        } public void surfaceDestroyed(SurfaceHolder holder) {
if (mediaPlayer.isPlaying()) {
position = mediaPlayer.getCurrentPosition();
mediaPlayer.stop();
}
}
} @Override
protected void onDestroy() {
 mediaPlayer.release();
 mediaPlayer = null;
 super.onDestroy(); 
 
} public void mediaplay(View v) {
switch (v.getId()) {
case R.id.playbutton:
if (pause && mediaPlayer!=null)
{
mediaPlayer.start();
pause = false;
}
else{
String filename = filenames.toString();
File file = new File(Environment.getExternalStorageDirectory(),
filename);
if (file.exists()) {
path = file.getAbsolutePath();
play(0);
} else {
path = null;
Toast.makeText(this, R.string.filenoexsit, Toast.LENGTH_LONG).show();
}
}
break; case R.id.pausebutton:
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
pause = true;
} else {
if (pause) {
mediaPlayer.start();
pause = false;
}
}
break; case R.id.resetbutton:
if (mediaPlayer.isPlaying()) {
mediaPlayer.seekTo(0);
} else {
if (path != null) {
play(0);
}
}
break;
case R.id.stopbutton:
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
break;
}
}

private void play(int position) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(path);
mediaPlayer.setDisplay(surfaceView.getHolder());
mediaPlayer.prepare();// 缓冲
mediaPlayer.setOnPreparedListener(new PrepareListener(position));
} catch (Exception e) {
e.printStackTrace();
}
} private final class PrepareListener implements OnPreparedListener {
private int position; public PrepareListener(int position) {
this.position = position;
} public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
if (position > 0)
mediaPlayer.seekTo(position);
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
VideoDialogShow.ExitApp(VideoPlay.this);
break;
}
return super.onKeyDown(keyCode, event);
}}