Android点播UI SDK 2.0集成文档
简介
带UI的点播SDK基于点播Core SDK,提供标准的UI实现,方便用户快速集成投入使用。此SDK代码开源,开发者可以自己建立分支进行开发,也欢迎给我们提issue
源码地址:http://git2.baijiashilian.com/open-android/VideoplayerUI2.0Demo(master分支)
项目截图


集成SDK
远程依赖
implementation 'com.baijia.player:VideoplayerUI:3.19.3'
源码依赖
1)IDE
推荐使用最新版Android studio集成SDK点击下载(需科学上网)
2)clone源码
确保电脑配置git命令行工具,执行如下指令,将源码clone到您的文件目录中
git clone -b master http://git2.baijiashilian.com/open-android/VideoplayerUI2.0Demo.git
3)配置项目settings.gradle文件
include ':videoplayer-ui'
...其他module
project(':videoplayer-ui').projectDir = new File('xxx(您的源码路径)/VideoPlayerUI/videoplayer-ui')
4)添加依赖
在需要的module的build.gradle文件中添加源码依赖:
compile project(path: ':videoplayer-ui')
快速集成
1)在Application初始化sdk
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
new BJYPlayerSDK.Builder(this)
.setDevelopMode(true)
//如果没有个性域名请注释
.setCustomDomain("demo123")
.setEncrypt(true)
.build();
}
}
通过BJYPlayerSDK.Builder配置参数,可配置的参数有
- 设置开发者模式。开发者模式开启后会打印关键日志、显示播放器调试模板,方便开发,正式发版建议关掉
/**
* 设置开发者模式
* @param isDevelopMode true 设置为开发者模式
* @return
*/
public Builder setDevelopMode(boolean isDevelopMode)
- 设置专属域名。专属域名从百家云账号中心获取,传入规则:例如专属域名为
demo123.at.baijiayun.com
,则前缀为 demo123
,参考 专属域名说明。
/**
* 设置专属域名
*
* @param domain 专属域名
*/
public Builder setCustomDomain(String domain)
/**
* 设置加密
* @param isEncrypt true 加密,对在线和下载均有效
* @return
*/
public Builder setEncrypt(boolean isEncrypt)
2)请先阅读点播core2.0 sdk快速集成文档,电梯直达
点播
VideoPlayActivity为标准的点播播放界面,该布局为全屏居中播放,用户可以参考实现任意组合下的点播播放。
Intent intent = new Intent(VideoLauncherActivity.this, VideoPlayActivity.class);
intent.putExtra("videoId", Long.parseLong(videoId));
intent.putExtra("token", videoToken);
intent.putExtra("isOffline", false);
startActivity(intent);
Intent intent = new Intent(VideoLauncherActivity.this, VideoPlayActivity.class);
intent.putExtra("videoPath", videoPath);
intent.putExtra("isOffline", true);
startActivity(intent);
功能介绍
包结构

自定义点播UI
component包下提供一系列标准播放器UI组件,用户可以在ComponentManager管理类中配置需要显示的组件。
/**
* 默认组合的组件
*/
public void generateDefaultComponentList(){
componentMap.clear();
componentChangeListeners.clear();
addComponent(UIEventKey.KEY_LOADING_COMPONENT, new LoadingComponent(context));
addComponent(UIEventKey.KEY_GESTURE_COMPONENT, new GestureComponent(context));
//controller 需在gesture布局上方,否则会有事件冲突
addComponent(UIEventKey.KEY_CONTROLLER_COMPONENT, new ControllerComponent(context));
addComponent(UIEventKey.KEY_ERROR_COMPONENT, new ErrorComponent(context));
addComponent(UIEventKey.KEY_MENU_COMPONENT, new MenuComponent(context));
if(BJYPlayerSDK.IS_DEVELOP_MODE){
addComponent(UIEventKey.KEY_VIDEO_INFO_COMPONENT, new MediaPlayerDebugInfoComponent(context));
}
}
自定义组件
1)ComponentContainer
ComponentContainer extends FrameLayout,持有ComponentManager初始化各个播放器组件,实现手势监听,并且控制自定义事件和触摸事件的分发。
2)BaseVideoView
BaseVideoView extends FrameLayout,持有IBJYVideoPlayer引用获取播放器回调,持有ComponentContainer通知各个component组件更新状态,内部实现网络监听逻辑。
3)BJYVideoView
BJYVideoView extends BaseVideoView,初始化BJYPlayerView和各个component,监听播放器回调通知各个component。
评论
点播是否支持评论由enable_video_comment
控制,可通过调用IBJYVideoPlayer.isEnableVideoComment()
方法确认是否启用了评论功能。
必须获取token参数,参考点播评论获取token接口自定义网络请求获取。使用VideoPlayActivity则只需将token赋给传入的VideoPlayerConfig的loginToken字段即可,内部会调用isEnableVideoComment判断是否启用评论。
token传递给CommentPresenter并结合CommentFragment即可使用评论功能。CommentPresenter支持传递一个自己的头像url参数,发送评论时会自动携带该参数。获取评论时若头像字段为空则使用本地默认头像。
presenter的接口如下:
// 刷新评论列表
void refreshComments();
// 加载更多评论,每次加载10条
void loadMoreComments();
// 是否有更多评论
boolean hasMore();
// 获取已获得的评论列表
List<LPCommentDataModel.LPCommentItemModel> getComments();
List<LPExpressionModel> getExpressions();
// 发送评论
void sendComment(String comment);
// 点赞评论
void likeComment(String commentId, boolean isLike, int position);
// 删除评论
void deleteComment(String commentId, int position);
也可参考Core SDK的评论网络接口,从而实现自己的评论功能方法。