视频的播放

tcxingdechen 2015-04-17

1.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="wyf.ytl.MainActivity" >

    <SurfaceView
        android:id="@+id/surfaceView"
        android:layout_width="212dp"
        android:layout_height="180dp" />
  <!-- add a surface view to play video -->
        
   <LinearLayout 
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       >
       <Button 
           android:id="@+id/play2_button"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="PLAY"
           />
       <Button 
           android:id="@+id/pause2_button"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="PAUSE"
           />
       
   </LinearLayout>   
   
</LinearLayout>

2.

package wyf.ytl;

import android.graphics.PixelFormat;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.example.sample_2_11.R;

public class MainActivity extends ActionBarActivity implements OnClickListener,
		SurfaceHolder.Callback {

	String path = "/sdcard/VideoCache/anim.mp4";
	Button mPlayButton;
	Button mPauseButton;
	boolean isPause = false;
	SurfaceHolder mSurfaceHolder;
	MediaPlayer mediaPlay;
	SurfaceView mSurfaceView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mPlayButton = (Button) findViewById(R.id.play2_button);
		mPlayButton.setOnClickListener(this);
		mPauseButton = (Button) findViewById(R.id.pause2_button);
		mPauseButton.setOnClickListener(this);

		getWindow().setFormat(PixelFormat.UNKNOWN);
		mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView);
		mSurfaceHolder = mSurfaceView.getHolder();
		// add callback
		mSurfaceHolder.addCallback(this);
		mSurfaceHolder.setFixedSize(176, 144);
		mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
		mediaPlay = new MediaPlayer();
	}

	public void playVideo(String path) {
		Log.d("playVideo() ", "playVideo start...");
		
		if (mediaPlay.isPlaying() == true) {
			mediaPlay.reset();
		}
		mediaPlay.setAudioStreamType(AudioManager.STREAM_MUSIC);
		// 设置Videoy影片以SurfaceHolder播放
		mediaPlay.setDisplay(mSurfaceHolder);
		try {
			// 设置路径
			mediaPlay.setDataSource(path);
			mediaPlay.prepare();
		} catch (Exception e) {
			Log.d("playVideo()", "play Video error..." + e.getMessage());
		}
		mediaPlay.start();
	}

	@Override
	public void onClick(View v) {
		int id = v.getId();
		switch (id) {
		case R.id.play2_button:
			Log.d("on click", "click play button...");
			isPause = false;
			playVideo(path);
			break;

		case R.id.pause2_button:
			Log.d("on click", "click pause button...");
			Toast.makeText(this, "click pause", Toast.LENGTH_LONG).show();
			
			if (isPause == false) {
				mediaPlay.pause();
				isPause = true;
			}else{
				mediaPlay.start();
				isPause = false;
			}
			
		   break;
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	@Override
	public void surfaceCreated(SurfaceHolder holder) {

	}

	@Override
	public void surfaceChanged(SurfaceHolder holder, int format, int width,
			int height) {

	}

	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {

	}

}

相关推荐