- package com.google.activity.video;
- import java.io.IOException;
- import android.graphics.PixelFormat;
- import android.media.AudioManager;
- import android.media.MediaPlayer;
- import android.media.MediaPlayer.OnCompletionListener;
- import android.media.MediaPlayer.OnErrorListener;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.ImageButton;
- import android.widget.TextView;
- import com.google.Main;
- import com.google.R;
- import com.google.util.MemoryStatusUtil;
- import com.google.util.ToastUtil;
- public class Index2Activity extends Main implements SurfaceHolder.Callback {
- /** 日志TAG */
- private static final String TAG = "**********Index2Activity.java*********";
- /** 播放、暂停、重置、停止等按钮 */
- private ImageButton mBt_play,mBt_pause ,mBt_reset ,mBt_stop;
- /** 显示视屏 */
- private SurfaceView mSurfaceView;
- /** 显示控制信息 */
- private TextView mTextView;
- /** 用surfaceHolder来控制surfaceview */
- private SurfaceHolder mSurfaceHolder;
- /** 创建媒体 */
- private MediaPlayer mMediaPlayer;
- /** 视频文件路径 */
- private static final String strVideoPath = "/sdcard/cctv2.3gp";
- /** mediaplayer是否暂停 */
- private boolean mIsPaused = false;
- /** 媒体文件是否释放 */
- private boolean mIsReleased = false;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.video2);
- //不存在内存卡提示
- checkExternalMemory();
- setUI();
- }
- //检测内存卡
- private void checkExternalMemory(){
- if(!MemoryStatusUtil.externalMemoryAvailable())
- {
- ToastUtil.makTextToast(this, R.string.str_err_nosd, true);
- return ;
- }
- }
- /** 获取控件 */
- private void setUI(){
- //设置系统的PixelFormat为 UNKNOWN
- getWindow().setFormat(PixelFormat.UNKNOWN);
- mTextView = (TextView) findViewById(R.id.video_title2);
- mBt_pause = (ImageButton) findViewById(R.id.video_pause);
- mBt_play = (ImageButton) findViewById(R.id.video_play);
- mBt_reset = (ImageButton) findViewById(R.id.video_reset);
- mBt_stop = (ImageButton) findViewById(R.id.video_stop);
- mSurfaceView = (SurfaceView) findViewById(R.id.mSurfaceView);
- mSurfaceHolder = mSurfaceView.getHolder();
- mSurfaceHolder.addCallback(this);
- mSurfaceHolder.setFixedSize(176, 144);//设置影片大小
- mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- setListener();
- }
- /** 设置按钮的监听器 */
- private void setListener(){
- mBt_pause.setOnClickListener(listener);
- mBt_play.setOnClickListener(listener);
- mBt_reset.setOnClickListener(listener);
- mBt_stop.setOnClickListener(listener);
- }
- /** 按钮监听事件 */
- private OnClickListener listener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- switch (v.getId())
- {
- //播放按钮
- case R.id.video_play:
- playVideo(strVideoPath);
- break;
- //暂停按钮
- case R.id.video_pause:
- if(mMediaPlayer != null)
- {
- if(mIsReleased == false)
- {
- if(mIsPaused == false)//前一个状态未暂停,则暂停
- {
- mMediaPlayer.pause();
- mIsPaused = true;
- mTextView.setText(R.string.video_pause);
- }
- else //前一个状态已暂停,则开启
- {
- mMediaPlayer.start();
- mIsPaused = false;
- mTextView.setText(R.string.video_play);
- }
- }
- }
- break;
- //重置按钮
- case R.id.video_reset:
- if(mIsReleased == false)
- {
- if(mMediaPlayer != null)
- {
- mMediaPlayer.seekTo(0);//重新播放
- }
- }
- break;
- //停止按钮
- case R.id.video_stop:
- if(mMediaPlayer != null)
- {
- if(mIsReleased == false)
- {
- mMediaPlayer.stop();
- mMediaPlayer.release();
- mMediaPlayer = null;
- mIsReleased = true ;
- mTextView.setText(R.string.video_stop);
- }
- }
- break;
- default:
- break;
- }
- }
- };
- /**
- * 播放视屏函数
- * @param filename 视屏文件路径
- */
- private void playVideo(final String filename){
- if(mMediaPlayer != null){
- mMediaPlayer.stop();
- }
- mMediaPlayer = new MediaPlayer();
- mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
- //设置影片以surfaceview的形式播放
- mMediaPlayer.setDisplay(mSurfaceHolder);
- try {
- mMediaPlayer.setDataSource(filename);
- mMediaPlayer.prepare();
- mMediaPlayer.start();
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalStateException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //设置一些标志信息
- mIsReleased = false;
- mTextView.setText(R.string.video_play);
- mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
- @Override
- public void onCompletion(MediaPlayer mp) {
- // TODO Auto-generated method stub
- try {
- mMediaPlayer.release();
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- mTextView.setText(R.string.video_stop);
- }
- });
- mMediaPlayer.setOnErrorListener(new OnErrorListener() {
- @Override
- public boolean onError(MediaPlayer mp, int what, int extra) {
- // TODO Auto-generated method stub
- try {
- mMediaPlayer.release();
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- mTextView.setText(R.string.str_OnErrorListener);
- return false;
- }
- });
- }
- /** 以下是实现surfaceHolder.callback中的方法 */
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width,
- int height) {
- // TODO Auto-generated method stub
- }
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- // TODO Auto-generated method stub
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder holder) {
- // TODO Auto-generated method stub
- }
- }