安卓视频播放

package google.mediahelp;

import java.io.IOException;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;

public class MediaHelp extends Activity implements OnBufferingUpdateListener,
        OnCompletionListener, MediaPlayer.OnPreparedListener,
        SurfaceHolder.Callback {
    private MediaPlayer mediaPlayer;
    private SurfaceView surfaceView;
    private SurfaceHolder surfaceHolder;
    private int videoWidth;
    private int videoHeight;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_media_help);

        
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//
 
        this.surfaceView = (SurfaceView) this.findViewById(R.id.surface);
        Log.d("Mytest", "after   setview...."+surfaceView.toString());
        this.surfaceHolder = this.surfaceView.getHolder();
        this.surfaceHolder.addCallback(this);
        this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        Log.v("cat", ">>>create ok.");
        try {
            playVideo();
        } 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();
        }

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                if (!MediaHelp.this.isFinishing()) {
                    MediaHelp.this.finish();
                    startActivity(new Intent(MediaHelp.this,
                            google.mediahelp.Test.class));
                }
            }
        }, 10000L);

    }

    private void playVideo() throws IllegalArgumentException,
            IllegalStateException, IOException {
        this.mediaPlayer = new MediaPlayer();
        this.mediaPlayer.setDataSource("/sdcard/test.3gp");
        this.mediaPlayer.setDisplay(this.surfaceHolder);
        this.mediaPlayer.prepare();
        this.mediaPlayer.setOnBufferingUpdateListener(this);
        this.mediaPlayer.setOnPreparedListener(this);
        this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        Log.i("mplayer", ">>>play video");
    }

    @Override
    public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
        Log.i("cat", ">>>surface changed");

    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        try {
            this.playVideo();
        } catch (Exception e) {
            Log.i("cat", ">>>error", e);
        }
        Log.i("cat", ">>>surface created");

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        Log.v("mplayer", ">>>surface destroyed");

    }

    @Override
    public void onCompletion(MediaPlayer arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onBufferingUpdate(MediaPlayer mp, int percent) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPrepared(MediaPlayer arg0) {
        this.videoWidth = this.mediaPlayer.getVideoWidth();
        this.videoHeight = this.mediaPlayer.getVideoHeight();

        if (this.videoHeight != 0 && this.videoWidth != 0) {
            this.surfaceHolder.setFixedSize(this.videoWidth, this.videoHeight);
            this.mediaPlayer.start();
        }

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (this.mediaPlayer != null) {
            this.mediaPlayer.release();
            this.mediaPlayer = null;
        }
    }
}

你可能感兴趣的:(安卓)