Page History

Media_player_demo

Last edited by 谷俊

MediaPlayer的示例

详细使用见demo下MediaPlayerActivity.

1、创建播放器

mMediaPlayer=new MediaPlayer(this.getApplicationContext());

2、设置监听

SDK提供了相应的监听器和设置接口,建议用户全部都设置,需要强调的是IMediaPlayer.OnPreparedListener为必须设置的接口。

mMediaPlayer.setOnBufferingUpdateListener(mOnBufferingUpdateListener);
mMediaPlayer.setOnCompletionListener(mOnCompletionListener);
mMediaPlayer.setOnPreparedListener(mOnPreparedListener);
mMediaPlayer.setOnInfoListener(mOnInfoListener);
mMediaPlayer.setOnVideoSizeChangedListener(mOnVideoSizeChangeListener);
mMediaPlayer.setOnErrorListener(mOnErrorListener);
mMediaPlayer.setOnSeekCompleteListener(mOnSeekCompletedListener); 

3、设置播放信息

String mVideoUrl = "http://xxxxx"; // mVideoUrl为视频的播放地址
mMediaPlayer.setDataSource(mVideoUrl);

4、通过setdisplay和setsurface开始渲染surface

protected void onCreate(Bundle savedInstanceState) {
    mSurfaceHolder = mVideoSurfaceView.getHolder();    
    mSurfaceHolder.addCallback(mSurfaceCallback);
}
private final SurfaceHolder.Callback mSurfaceCallback = new Callback() {
    @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){
}    
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
    }
    @Override
    public void surfaceDestroyed(SurfaceHolder holder) 
    }
}

5、MediaPlayer主要方法

6、开始播放

当收到 onPrepared 回调时,表明可以开始播放

private IMediaPlayer.OnPreparedListener mOnPreparedListener =
    new IMediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(IMediaPlayer mp) {
        if(mMediaPlayer != null) {
        // 设置视频伸缩模式,此模式为裁剪模式
        mMediaPlayer.setVideoScalingMode(MediaPlayer.
            VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
        // 开始播放视频
        mMediaPlayer.start();
        }
    }
}

7、停止播放

mMediaPlayer.stop();

8、释放播放器

if(mMediaPlayer!= null){
    mMediaPlayer.release();
    mMediaPlayer = null;
}