产品文档 回放技术文档 Android 回放 UI SDK

百家云Android回放UISDK集成文档

简介

带UI的回放SDK基于回放核心SDK,提供标准的UI实现,方便用户快速集成投入使用。此SDK代码开源,开发者可以自己建立分支进行开发,也欢迎给我们提issue
源码地址:https://github.com/baijia/BJPlaybackUI-Android(dev分支)

项目截图

竖屏 竖屏
apk文件位于apk_bin文件夹下

集成SDK

由于SDK开源,不再支持aar依赖方式,可以直接使用源码依赖

集成前的准备

1) 推荐使用最新版Android studio集成SDK 点击下载(需科学上网)
2)clone源码
确保电脑配置git命令行工具,执行如下指令,将源码clone到您的文件目录中

git clone -b dev git@github.com:baijia/BJPlaybackUI-Android.git

3)配置项目settings.gradle文件

include ':playbackui'  
...其他module

project(':playbackui').projectDir = new File('xxx(您的源码路径)/BJPlaybackUI-Android/VideoPlaybackUI/playbackui')

4)添加依赖
在需要的module的build.gradle文件中添加源码依赖:

compile project(path: ':playbackui')

快速集成

在合适的时机,比如按钮点击事件,进入回放房间,会跳转新的Activity界面(PBRoomUI类):

  /**
     * 进入回放标准UI界面
     *
     * @param context                     Activity
     * @param roomId                      房间id
     * @param roomToken                   token
     * @param sessionId                   sessionId 长期课才需要填,非长期课默认传-1
     * @param deployType                  服务器环境(默认正式服,客户集成时可以不传此参数)
     * @param onEnterPBRoomFailedListener 进房间错误监听,可为null
     */
    public static void enterPBRoom(Context context, String roomId, String roomToken, String sessionId, LPConstants.LPDeployType deployType, OnEnterPBRoomFailedListener onEnterPBRoomFailedListener)

说明

1)核心的页面为PBRoomActivity,整个页面由三个元素构成,ppt展示区域(LPPPTFragment)、视频展示区域(BJPlaerview)、聊天消息展示区域(PBChatFragment)。 顶部区域默认展示PPT,小窗口为DragFrameLayout,可以随意拖拽移动位置。调用switchPPTAndVideo实现大小窗口的切换,具体逻辑可以看源码。
2)视频区域占位图效果的实现 在xml布局中用Imageview盖住BJPlayerview,然后监听视频的状态,有视频则显示BJPlaerview,否则显示Imageview的占位图

mRoom.getObservableOfVideoStatus()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new LPErrorPrintSubscriber<Boolean>() {
                    @Override
                    public void call(Boolean aBoolean) {
                        if (isSmallView) {
                            if (!aBoolean) {
                                progressPresenter.forbidDefinitionChange();
                                smallPlaceHolder.setVisibility(View.VISIBLE);
                                nameMask.setVisibility(View.INVISIBLE);
                            } else {
                                progressPresenter.openDefinitionChange();
                                smallPlaceHolder.setVisibility(View.GONE);
                                nameMask.setVisibility(View.VISIBLE);
                            }
                        }
                });

由于带UI的回放SDK基于回放核心SDK,所有核心SDK特性此SDK都有。具体可参考回放核心SDK