2012年5月28日 星期一

Android Video Playback



  • Create a layout for video playback
    setContentView(R.layout.video_playback);


  • Create a video view and video controller for video playback

    mVideoView = (VideoView)findViewById(
                                R.id.video_playback_view);
    mMediaController = new MediaController(this);
    mVideoView.setMediaController(mMediaController);
    mVideoView.setOnPreparedListener(
                   new OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
            AudioManager audioManager = (AudioManager)
                getApplicationContext().getSystemService(
                    Context.AUDIO_SERVICE);
            mOriginalVideoVolume = audioManager.
                getStreamVolume(AudioManager.STREAM_MUSIC);
            if (mOriginalVideoVolume != mVideoVolume) {
                audioManager.setStreamVolume(
                    AudioManager.STREAM_MUSIC, mVideoVolume,
                    AudioManager.FLAG_PLAY_SOUND);
            }
            int duration = mVideoView.getDuration();
            mMediaController.show(duration);
            mVideoView.start();
        }
    });
    mVideoView.setOnCompletionListener(
                   new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            AudioManager audioManager = (AudioManager)
                getApplicationContext().
                    getSystemService(Context.AUDIO_SERVICE);
            if (mOriginalVideoVolume != mVideoVolume) {
                audioManager.setStreamVolume(
                    AudioManager.STREAM_MUSIC,
                    mOriginalVideoVolume,
                    AudioManager.FLAG_PLAY_SOUND);
            }
            finish();
        }
    });

  • Set video path on resume

    protected void onResume() {
        ...
        if (mVideoPath.equalsIgnoreCase("default_video")) {
            finish();
        } else
            mVideoView.setVideoPath(mVideoPath);
    }

  • Sample code for android video playback

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;
import android.widget.MediaController;
import android.widget.VideoView;

public class VideoPlaybackActivity extends Activity {
    private final String mTAG = "VideoPlaybackActivity";
    private VideoView mVideoView;
    private MediaController mMediaController;
    private String mVideoPath;
    private int mOriginalVideoVolume;
    private int mVideoVolume;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.video_playback);
        getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        SharedPreferences preferences = getApplicationContext().
           getSharedPreferences("VideoRecording", MODE_PRIVATE);
        mVideoPath = preferences.getString("video_path",
                        "default_video");
        AudioManager audioManager = (AudioManager)
                        getApplicationContext().getSystemService(
                            Context.AUDIO_SERVICE);
        mVideoVolume = preferences.getInt("video_volume",
                          audioManager.getStreamMaxVolume(
                              AudioManager.STREAM_MUSIC));
        mVideoView = (VideoView)findViewById(
                                    R.id.video_playback_view);
        mMediaController = new MediaController(this);
        mVideoView.setMediaController(mMediaController);
        mVideoView.setOnPreparedListener(
                       new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                AudioManager audioManager = (AudioManager)
                    getApplicationContext().getSystemService(
                        Context.AUDIO_SERVICE);
                mOriginalVideoVolume = audioManager.
                    getStreamVolume(AudioManager.STREAM_MUSIC);
                if (mOriginalVideoVolume != mVideoVolume) {
                    audioManager.setStreamVolume(
                        AudioManager.STREAM_MUSIC, mVideoVolume,
                        AudioManager.FLAG_PLAY_SOUND);
                }
                int duration = mVideoView.getDuration();
                mMediaController.show(duration);
                mVideoView.start();
            }
        });
        mVideoView.setOnCompletionListener(
                       new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                AudioManager audioManager = (AudioManager)
                    getApplicationContext().
                        getSystemService(Context.AUDIO_SERVICE);
                if (mOriginalVideoVolume != mVideoVolume) {
                    audioManager.setStreamVolume(
                        AudioManager.STREAM_MUSIC,
                        mOriginalVideoVolume,
                        AudioManager.FLAG_PLAY_SOUND);
                }
                finish();
            }
        });
    }
   
    @Override
    protected void onResume() {
        super.onResume();
        if (mVideoPath.equalsIgnoreCase("default_video")) {
            finish();
        } else
            mVideoView.setVideoPath(mVideoPath);
    }
}

沒有留言:

張貼留言