环境:win10,AS 2.3,Vitamio5.2
这篇说明偏重于先把环境搭建起来,所以文字说明比较少,多辅以图示希望更直观的帮助大家。
1、下载Vitamio最新版本,复制到相应APP project目录下。
2、AS 添加library到settings.gradle
(include ':app', ':vitamio5.2')
3、sync的时候会出错修改library的build.gradle里面的sdk version和你的phone module的build.gradle一样。
4、添加depends到你的phone module下的build.greadle里面
5、activity中的主要代码,这里的播放路径可以自己设置,我的来自于其他activity的传递,各位朋在设置的时候可以直接赋值例如:movieUrl = “/mnt/internal_sd/video.mp4”;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//必须写这个,初始化加载库文件
Vitamio.isInitialized(this);
setContentView(R.layout.activity_vitamio_video_view);
mVideoView = (VideoView) findViewById(R.id.buffer);
intent = getIntent();
movieUrl = intent.getStringExtra("movieUrl");
//判断path来自于网络还是本地
if (!movieUrl.isEmpty()) {
if (movieUrl.startsWith("http:")) {
mVideoView.setVideoURI(Uri.parse(movieUrl));
} else {
mVideoView.setVideoPath(movieUrl);
}
mVideoView.setVideoLayout(VideoView.VIDEO_LAYOUT_STRETCH, 0);//全屏
mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH);//高画质
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
}
}
6、xml中的代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<io.vov.vitamio.widget.CenterLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<io.vov.vitamio.widget.VideoView
android:id="@+id/buffer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</io.vov.vitamio.widget.CenterLayout>
</RelativeLayout>
7、 manifest中的代码
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 必须初始化 -->
<activity
android:name="io.vov.vitamio.activity.InitActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
android:launchMode="singleTop"
android:theme="@android:style/Theme.NoTitleBar"
android:windowSoftInputMode="stateAlwaysHidden" />
<!-- 按照官网的说法给播放器所在的Activity设置android:process,
关闭Activity时直接kill,防止底层库可能存在的BUG导致的崩溃问题-->
<activity
android:name=".VitamioVideoViewActivity"
android:screenOrientation="landscape"
android:process=":vitamio" >
</activity>
</application>
8、关于视频播放时的花屏的问题,修改Vitamio library中的VideoView,在surfaceCreated添加mSurfaceHolder.setFormat(PixelFormat.RGBX_8888);
public void surfaceCreated(SurfaceHolder holder) {
mSurfaceHolder = holder;
+ mSurfaceHolder.setFormat(PixelFormat.RGBX_8888);
if (mMediaPlayer != null && mCurrentState == STATE_SUSPEND && mTargetState == STATE_RESUME) {
mMediaPlayer.setDisplay(mSurfaceHolder);
resume();
} else {
openVideo();
}
}