本文实例为大家分享了Android UniversalVideoView实现视频播放器的具体代码,供大家参考,具体内容如下
1.添加依赖 app下的 build.gradle
dependencies {
......
compile 'com.linsea:universalvideoview:1.1.0@aar'
}
2.XML布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/video_layout"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:background="@android:color/black">
<com.universalvideoview.UniversalVideoView
android:id="@+id/videoView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
app:uvv_autoRotation="true"
app:uvv_fitXY="false" />
<com.universalvideoview.UniversalMediaController
android:id="@+id/media_controller"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:uvv_scalable="true" />
</FrameLayout>
<LinearLayout
android:id="@+id/bottom_layout"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
<Button
android:id="@+id/start"
android:layout_margin="5dp"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="start" />
<TextView
android:id="@+id/introduction"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:text="this is video introduciton ......"
android:background="@color/uvv_gray" />
</LinearLayout>
</LinearLayout>
3.MainActivity
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.universalvideoview.UniversalMediaController;
import com.universalvideoview.UniversalVideoView;
public class MainActivity extends Activity implements UniversalVideoView.VideoViewCallback{
private static final String TAG = "MainActivity";
private static final String SEEK_POSITION_KEY = "SEEK_POSITION_KEY";
private static final String VIDEO_URL = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4";
//视频地址
//http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
//http://vjs.zencdn.net/v/oceans.mp4
//https://media.w3.org/2010/05/sintel/trailer.mp4
UniversalVideoView mVideoView;
UniversalMediaController mMediaController;
View mBottomLayout;
View mVideoLayout;
TextView mStart;
private int mSeekPosition;
private int cachedHeight;
private boolean isFullscreen;
private TextView tv_title;
private LinearLayout titlebar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_title = (TextView) findViewById(R.id.introduction);
//titlebar = (LinearLayout) findViewById(R.id.titlebar);
tv_title.setText("UniversalVideoView");
mVideoLayout = findViewById(R.id.video_layout);
mBottomLayout = findViewById(R.id.bottom_layout);
mVideoView = (UniversalVideoView) findViewById(R.id.videoView);
mMediaController = (UniversalMediaController) findViewById(R.id.media_controller);
mVideoView.setMediaController(mMediaController);
//设置播放屏幕模式和设置播放地址
setVideoAreaSize();
//设置屏幕状态和播放状态的监听
mVideoView.setVideoViewCallback(this);
mStart = (TextView) findViewById(R.id.start);
mStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mSeekPosition > 0) {
mVideoView.seekTo(mSeekPosition);
}
mVideoView.start();
mMediaController.setTitle("Big Buck Bunny");
}
});
mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Log.d(TAG, "onCompletion ");
}
});
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
if (mSeekPosition > 0) {
mVideoView.seekTo(mSeekPosition);
}
mVideoView.start();
}
});
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause ");
if (mVideoView != null && mVideoView.isPlaying()) {
mSeekPosition = mVideoView.getCurrentPosition();
Log.d(TAG, "onPause mSeekPosition=" + mSeekPosition);
mVideoView.pause();
}
}
/**
* 置视频区域大小
*/
private void setVideoAreaSize() {
mVideoLayout.post(new Runnable() {
@Override
public void run() {
int width = mVideoLayout.getWidth();
cachedHeight = (int) (width * 405f / 720f);
// cachedHeight = (int) (width * 3f / 4f);
// cachedHeight = (int) (width * 9f / 16f);
ViewGroup.LayoutParams videoLayoutParams = mVideoLayout.getLayoutParams();
videoLayoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
videoLayoutParams.height = cachedHeight;
mVideoLayout.setLayoutParams(videoLayoutParams);
mVideoView.setVideoPath(VIDEO_URL);
mVideoView.requestFocus();
}
});
}
//当屏幕发生改变的时候,如果要保持进度必须自己重写onSaveInstanceState方法
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.d(TAG, "onSaveInstanceState Position=" + mVideoView.getCurrentPosition());
outState.putInt(SEEK_POSITION_KEY, mSeekPosition);
}
@Override
protected void onRestoreInstanceState(Bundle outState) {
super.onRestoreInstanceState(outState);
mSeekPosition = outState.getInt(SEEK_POSITION_KEY);
Log.d(TAG, "onRestoreInstanceState Position=" + mSeekPosition);
}
/**
* 全屏和默认的切换
* @param isFullscreen
*/
@Override
public void onScaleChange(boolean isFullscreen) {
this.isFullscreen = isFullscreen;
if (isFullscreen) {
ViewGroup.LayoutParams layoutParams = mVideoLayout.getLayoutParams();
layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
mVideoLayout.setLayoutParams(layoutParams);
mBottomLayout.setVisibility(View.GONE);
//全屏就隐藏标题栏
//titlebar.setVisibility(View.GONE);
} else {
ViewGroup.LayoutParams layoutParams = mVideoLayout.getLayoutParams();
layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
layoutParams.height = this.cachedHeight;
mVideoLayout.setLayoutParams(layoutParams);
mBottomLayout.setVisibility(View.VISIBLE);
//竖直方法的时候,显示标题栏
// titlebar.setVisibility(View.VISIBLE);
}
// switchTitleBar(!isFullscreen);
}
// private void switchTitleBar(boolean show) {
// android.support.v7.app.ActionBar supportActionBar = getSupportActionBar();
// if (supportActionBar != null) {
// if (show) {
// supportActionBar.show();
// } else {
// supportActionBar.hide();
// }
// }
// }
@Override
public void onPause(MediaPlayer mediaPlayer) {
Log.d(TAG, "onPause UniversalVideoView callback");
}
@Override
public void onStart(MediaPlayer mediaPlayer) {
Log.d(TAG, "onStart UniversalVideoView callback");
}
@Override
public void onBufferingStart(MediaPlayer mediaPlayer) {
Log.d(TAG, "onBufferingStart UniversalVideoView callback");
}
@Override
public void onBufferingEnd(MediaPlayer mediaPlayer) {
Log.d(TAG, "onBufferingEnd UniversalVideoView callback");
}
@Override
public void onBackPressed() {
if (this.isFullscreen) {
mVideoView.setFullscreen(false);
} else {
super.onBackPressed();
}
}
}