在android有时候要播放一些本地或远程的视频,通常使用如下的代码:
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
在OnPreparedListener的onPrepared(MediaPlayer)方法中回下如下的代码:
Log.d(TAG, "onPrepared called");
mVideoWidth = mMediaPlayer.getVideoWidth();
mVideoHeight = mMediaPlayer.getVideoHeight();
Log.d(TAG, "***********mVideoWidth====="+mVideoWidth+"==mVideoHeight===" + mVideoHeight);
if (mVideoWidth != 0 && mVideoHeight != 0) {
holder.setFixedSize(mVideoWidth, mVideoHeight);
mMediaPlayer.start();
}
//去掉buffer对话框
bufferingDialog.dismiss();
但是有时间得到视频的宽度和高度为0但是视频还是可以播的,也就是视频中没有提供宽和高的数据,那么如果还使用上面的代码则视频不会播放可以在此处使用如下代码:
if (mVideoWidth != 0 && mVideoHeight != 0) {
holder.setFixedSize(mVideoWidth, mVideoHeight);
}
mMediaPlayer.start();
也就是不管获取的长度是否大于0,都将player进行start