# ctyun-xstore-player-android
**Repository Path**: ctyun-xstore/ctyun-xstore-player-android
## Basic Information
- **Project Name**: ctyun-xstore-player-android
- **Description**: ctyun-xstore-player-android
- **Primary Language**: Android
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 1
- **Created**: 2019-02-20
- **Last Updated**: 2023-12-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# VideoView
VideoView是一个基于[ijkplayer](https://github.com/Bilibili/ijkplayer)的视屏播放库,可以用于播放本地和网络视频。
一、集成步骤:
第一步:app的build.gradle文件,增加如下配置
```java
dependencies {
...
implementation 'com.gitee.ctyun-xstore:ctyun-xstore-player-android:0.0.3'
}
```
第二步:主工程的build.gradle文件,增加如下配置
```java
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://jitpack.io' }
maven { url 'http://4thline.org/m2' }
}
}
```
第三步:app的build.gradle文件,增加如下配置
```java
android {
....
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/beans.xml'
}
...
}
```
第四步:增加相关权限配置
```java
```
二、使用说明:
第一步:把VideoView作为一个控件添加到你的布局中
```java
```
第二步:在AndroidManifest.xml中activity进行如下配置(DemoActivity为你自己的Activity)
```java
```
第三步:设置播放器高度、设置播放源,即可按照默认配置播放视频了。
```java
mVideoView = findViewById(R.id.player);
// 设置播放器的高度,一般宽高比为16:9
int widthPixels = getResources().getDisplayMetrics().widthPixels;
ViewGroup.LayoutParams layoutParams = mVideoView.getLayoutParams();
layoutParams.height = widthPixels / 16 * 9;
// 可选:播放器相关配置,其他配置参照类PlayerConfig
mVideoView.setPlayerConfig(new PlayerConfig.Builder()
// .autoRotate(false) // 自动旋转屏幕
// .enableMediaCodec() // 启动硬解码
// .savingProgress() // 保存播放进度
.build());
// 设置播放源
List videos = new ArrayList<>();
// 片头广告
// videos.add(new VideoModel(URL_AD, "", PlayerConstants.VideoType.START_AD, new AdControllerListener() {
// @Override
// public void onAdClick() {
// Toast.makeText(DemoActivity.this, "广告点击跳转", Toast.LENGTH_SHORT).show();
// }
// }));
videos.add(new VideoModel(URL_VOD, "这是一个标题", PlayerConstants.VideoType.VOD));
// 片尾广告
videos.add(new VideoModel(URL_AD, "", PlayerConstants.VideoType.END_AD));
mVideoView.fromSource(videos)
.videoId("123456")
.pauseAdUrl(pauseAdUrl)
.thumbUrl(pauseAdUrl2)
.watermark("我的水印", PlayerConstants.WatermarkTextPosition.BOTTOM_RIGHT)
.onPlay(new OnPlayListener() {
@Override
public void play() {
Log.d(TAG, "onPlay");
}
})
.onPause(new OnPauseListener() {
@Override
public void pause() {
Log.d(TAG, "onPause");
}
})
.onLoadStart(new OnLoadStartListener() {
@Override
public void loadStart() {
Log.d(TAG, "onLoadStart");
}
})
.onStop(new OnStopListener() {
@Override
public void stop() {
Log.d(TAG, "onStop");
}
})
.onError(new OnErrorListener() {
@Override
public void error() {
Log.d(TAG, "onError");
}
})
.onEnterFullScreen(new OnEnterFullScreenListener() {
@Override
public void enterFullScreen() {
Log.d(TAG, "onEnterFullScreen");
}
})
.onExitFullScreen(new OnExitFullScreenListener() {
@Override
public void exitFullScreen() {
Log.d(TAG, "onExitFullScreen");
}
})
.onMute(new OnMuteListener() {
@Override
public void mute() {
Log.d(TAG, "onMute");
}
})
.onResumeVolume(new OnResumeVolumeListener() {
@Override
public void resumeVolume() {
Log.d(TAG, "onResumeVolume");
}
})
.onSetVolume(new OnSetVolumeListener() {
@Override
public void setVolume() {
Log.d(TAG, "onSetVolume");
}
})
.onSeekTo(new OnSeekToListener() {
@Override
public void seekTo(long pos) {
Log.d(TAG, "onSeekTo : " + pos);
}
})
.load();
DanmakuModel danmakuModel = new DanmakuModel();
List danmakuDetails = new ArrayList<>();
danmakuModel.setDanmakuDetails(danmakuDetails);
danmakuModel.setScrollSpeed(1.2f);
DanmakuDetail danmakuDetail = new DanmakuDetail();
danmakuDetail.setType(1);
danmakuDetail.setRelativeTime(3.0f);
danmakuDetail.setText("啊啊啊啊啊啊啊啊啊啊啊啊");
danmakuDetail.setColor(16777215);
danmakuDetails.add(danmakuDetail);
DanmakuDetail danmakuDetail2 = new DanmakuDetail();
danmakuDetail2.setType(5);
danmakuDetail2.setRelativeTime(6.0f);
danmakuDetail2.setText("dsadasdsadadssd");
danmakuDetail2.setColor(16776960);
danmakuDetails.add(danmakuDetail2);
DanmakuDetail danmakuDetail3 = new DanmakuDetail();
danmakuDetail3.setType(4);
danmakuDetail3.setRelativeTime(3.5f);
danmakuDetail3.setText("弹幕来啦~~~~");
danmakuDetail3.setColor(16711680);
danmakuDetails.add(danmakuDetail3);
// 启用投屏
mVideoView.enableDLNA();
// 自动播放
mVideoView.start();
```
第四步:Activity中:
```java
@Override
protected void onPause() {
super.onPause();
ijkVideoView.pause();
}
@Override
protected void onResume() {
super.onResume();
ijkVideoView.resume();
}
@Override
protected void onDestroy() {
super.onDestroy();
ijkVideoView.release();
// 解决内存泄漏的问题
MemoryLeakUtil.fixLeak(this);
}
@Override
public void onBackPressed() {
if (!ijkVideoView.onBackPressed()) {
super.onBackPressed();
}
}
```
播放器其他接口使用说明,参照DemoActivity.java里面的代码