Android_視頻播放的簡單使用方法

在頁面中播放視頻的步驟:

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;
	}

}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章