在頁面中播放視頻的步驟:
1.在頁面佈局中放置SurfaceView控件
2.讓Activity實現SurfaceHolder.Callback.
3.獲取SurfaceView控件的SurfaceHolder對象
4.對SurfaceHolder對象進行設置,調用addCallback,setFixedSize,setType進行設置
5.設置MediaPlayer
具體代碼如下:
import java.io.IOException;
import java.util.ArrayList;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;
public class MainActivity extends Activity implements Callback
{
// 用來設置視頻文件的文件夾地址
String path = "/mnt/sdcard/Movies/zjl_mengxiangqidong.mp4";
int arraylistIndex = 0;
ImageButton btn_Play = null;
ImageButton btn_Pause = null;
boolean isPause;
SurfaceHolder surfaceHolder = null;
MediaPlayer mediaPlayer = null;
SurfaceView sv_VideoPaly = null;
private void addVideoToArray(String VideoName)
{
arrayList.add(path + VideoName);
}
private void initControls()
{
// 獲取組件的引用
btn_Play = (ImageButton) findViewById(R.id.btn_Play);
btn_Pause = (ImageButton) findViewById(R.id.btn_Pause);
sv_VideoPaly = (SurfaceView) findViewById(R.id.sv_VideoPlay);
mediaPlayer = new MediaPlayer();
if(arrayList.size()<=1)
{
btn_Next.setEnabled(false);
btn_Previous.setEnabled(false);
}
// 設置事件監聽
btn_Play.setOnClickListener(clickListener);
btn_Pause.setOnClickListener(clickListener);
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initControls();
// 開始對SurfaceView的surfaceHolder進行設置
// 獲得surfaceView的surfaceHolder
getWindow().setFormat(PixelFormat.UNKNOWN);
surfaceHolder = sv_VideoPaly.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setFixedSize(320, 240);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
private OnClickListener clickListener = new OnClickListener()
{
@Override
public void onClick(View v)
{
if (v == btn_Play)
{
isPause = false;
// 調用播放視頻的方法,來播放視頻
playVideo(path);
} else if (v == btn_Pause)
{
if (isPause == false)
{
mediaPlayer.pause();
isPause = true;
} else
{
mediaPlayer.start();
isPause = false;
}
}
}
};
private void playVideo(String strPath)
{
// 如果已經在播放了的話就重置視頻
if (mediaPlayer.isPlaying() == true)
{
mediaPlayer.reset();
}
// 開始設置mediaPlayer
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
// 設置mediaPlayer播放的容器
mediaPlayer.setDisplay(surfaceHolder);
try
{
// 設置MediaPlayer播放的媒體源
mediaPlayer.setDataSource(strPath);
// 讓mediaPalyer準備播放
mediaPlayer.prepare();
} catch (Exception e)
{
e.printStackTrace();
}
// 讓mediaPlayer開始播放
mediaPlayer.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height)
{
// TODO 自動生成的方法存根
}
@Override
public void surfaceCreated(SurfaceHolder holder)
{
// TODO 自動生成的方法存根
}
@Override
public void surfaceDestroyed(SurfaceHolder holder)
{
// TODO 自動生成的方法存根
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}