package com.test.video;
import java.io.IOException;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.SurfaceHolder.Callback;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
public class MainActivity extends Activity implements OnClickListener {
private MediaPlayer player;
private SurfaceView view ;
private int position = 0;
private ImageButton paly, pause, stop;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view = (SurfaceView) findViewById(R.id.surfaceView);
player = new MediaPlayer();
paly = (ImageButton) findViewById(R.id.play);
pause = (ImageButton) findViewById(R.id.pause);
stop = (ImageButton) findViewById(R.id.stop);
// 设置SurfaceView自己不管理缓冲区
view.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// 设置播放时打开屏幕
view.setKeepScreenOn(true);
view.getHolder().addCallback(new Surfacelistener());
paly.setOnClickListener(this);
pause.setOnClickListener(this);
stop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
try {
switch (v.getId()) {
// 单击播放按钮
case R.id.play:
play();
break;
// 暂停按钮
case R.id.pause:
if (player.isPlaying()) {
player.pause();
position = player.getCurrentPosition();
} else {
if (position > 0) player.seekTo(position);
player.start();
}
break;
// 停止按钮
case R.id.stop:
if (player.isPlaying()) {
player.stop();
}
break;
default:
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void play() throws Exception {
player.reset();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
// 设置需要播放的视频
Uri uri = Uri.parse("android.resource://com.test.video/" + R.raw.video );
player.setDataSource(this, uri);
// 把视频画面输出到SurfaceView
player.setDisplay(view.getHolder());
player.prepare();
player.start();
}
private class Surfacelistener implements Callback {
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (position > 0) {
try {
// 开始播放
play();
// 并直接从指定位置开始播放
player.seekTo(position);
position = 0;
} catch (Exception e ) {
}
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {}
}
// 当其他的Activity被打开时,暂停播放
@Override
protected void onPause() {
if (player.isPlaying()) {
position = player.getCurrentPosition();
// 暂停播放
player.stop();
}
super.onPause();
}
@Override
protected void onDestroy() {
if (player.isPlaying()) {
player.stop();
}
player.release();
super.onDestroy();
}
}