>>官网最新SDK下载地址

>>历史版本SDK版本下载地址

## 目录

- 目录
- Release4.19.1
- Release4.19.0
- Release4.18.0
- Release4.17.0
- Release4.16.0
- Release4.14.0
- Release4.12.0
- Release4.11.0
- Release4.10.0
- Release4.9.0
- Release4.8.0
- Release4.7.0
- Release4.6.1
- Release4.6.0
- Release4.5.0
- Release4.3.0
- Release4.2.0
- Release4.1.0
- Release4.0.0

## Release4.19.1

1. 更新日志

   1. 修复无延迟多人连麦无法上麦问题

2. 远端集成

       //下述两种方式集成：//1. UI sdk集成，demo源码aar，内部依赖docsdk与dwlivesdk，套用demoUI，不可修改api 'com.bokecc:CCLiveUILib:4.19.1'//2. doc sdk集成，内部依赖dwlivesdk，可参考demo源码自定义界面api 'com.bokecc.doc:docsdk:4.19.1'

## Release4.19.0

1. 更新日志

   1. 在线回放新增文档跟随功能

2. 远端集成

       //下述两种方式集成：//1. UI sdk集成，demo源码aar，内部依赖docsdk与dwlivesdk，套用demoUI，不可修改api 'com.bokecc:CCLiveUILib:4.19.0'//2. doc sdk集成，内部依赖dwlivesdk，可参考demo源码自定义界面api 'com.bokecc.doc:docsdk:4.19.0'

## Release4.18.0

1. 更新日志

   1. 新增课件下载功能

2. 远端集成

       //下述两种方式集成：//1. UI sdk集成，demo源码aar，内部依赖docsdk与dwlivesdk，套用demoUI，不可修改api 'com.bokecc:CCLiveUILib:4.18.0'//2. doc sdk集成，内部依赖dwlivesdk，可参考demo源码自定义界面api 'com.bokecc.doc:docsdk:4.18.0'

3. 课件下载功能说明：见 直播课件下载功能 和 回放课件下载功能

## Release4.17.0

1. 更新日志

   1. 新增直播带货商品回调
   2. 修复已知问题

2. 远端集成

       //下述两种方式集成：//1. UI sdk集成，demo源码aar，内部依赖docsdk与dwlivesdk，套用demoUI，不可修改api 'com.bokecc:CCLiveUILib:4.17.0'//2. doc sdk集成，内部依赖dwlivesdk，可参考demo源码自定义界面api 'com.bokecc.doc:docsdk:4.17.0'

## Release4.16.0

1. 更新日志

   1. 直播文档显示支持跟随讲师模式
   2. 聊天区长图显示长图图标
   3. 修复已知问题

2. 远端集成

       //下述两种方式集成：//1. UI sdk集成，demo源码aar，内部依赖docsdk与dwlivesdk，套用demoUI，不可修改api 'com.bokecc:CCLiveUILib:4.16.0'//2. doc sdk集成，内部依赖dwlivesdk，可参考demo源码自定义界面api 'com.bokecc.doc:docsdk:4.16.0'

## Release4.14.0

1. 更新日志

   1. 支持 UI SDK方式对接
   2. 适配 pad
   3. 升级聊天室组件
   4. 优化UI体验

2. 远端集成

       //下述两种方式集成：//1. UI sdk集成，demo源码aar，内部依赖docsdk与dwlivesdk，套用demoUI，不可修改api 'com.bokecc:CCLiveUILib:4.14.0'//2. doc sdk集成，内部依赖dwlivesdk，可参考demo源码自定义界面api 'com.bokecc.doc:docsdk:4.14.0'

3. 新增混淆策略

       -dontwarn com.badlogic.gdx.**-keep class com.aliyun.ams.ipdetector.Inet64Util{*;}-keep class com.alibaba.sdk.android.**{*;}-keep class com.ut.**{*;}-keep class com.ta.**{*;}

4. API 变动

   模块 | 调整 | API | 描述
   --- | --- | --- | ---
   直播 | 新增 | `LiveDigestBean.getLiveScene()` | 0大班课、1研讨课，目前聊天组件需要使用

## Release4.12.0

1. 更新日志

   1. 新增支持研讨会模式观看
   2. 权限申请逻辑优化
   3. 新增防录屏开关
   4. 修复已知bug

2. 远端集成

       //文档sdk内部引用直播sdk：'com.bokecc:dwlivesdk:4.12.0，如果使用直播间带有文档的模板，建议使用文档 sdkapi 'com.bokecc.doc:docsdk:4.12.0'

## Release4.11.0

1. 更新日志

   1. 新增VR直播功能
   2. 新增在线回放支持VR播放功能

2. 远端集成

       xxxxxxxxxx//文档sdk内部引用直播sdk：'com.bokecc:dwlivesdk:4.11.0api 'com.bokecc.doc:docsdk:4.11.0'

3. 注意事项

       xxxxxxxxxx1. VR 直播、VR 回放功能仅支持具有 GPU 的设备（需要开启硬件加速）2. VR 直播、VR 回放功能需要设备支持陀螺仪传感器

4. API 变动

   模块 | 调整 | API | 描述
   --- | --- | --- | ---
   直播 | 新增 | enableVrSensorControl(boolean enable) | 设置 vr 重力感应开关，默认开启
   直播 | 新增 | enableVrSplitView(boolean enable) | 设置 vr 分屏开关，默认关闭
   直播 | 新增 | LiveDigestBean.isVrLive() | 获取是否是 vr 直播，通过DWLive.getInstance().getLiveDigestInfo()获取
   回放 | 新增 | enableVrSensorControl(boolean enable) | 设置 vr 重力感应开关，默认开启
   回放 | 新增 | enableVrSplitView(boolean enable) | 设置 vr 分屏开关，默认关闭
   回放 | 新增 | boolean getIsVr() | 获取是否是 vr 视频

## Release4.10.0

1. 更新日志

   新增：

   1. SDK支持免登录、主次验证和白名单验证登录方式

   优化：

   1. Demo 应用市场审核自启动问题处理

   修复：

   1. 修复文档 ppt 特殊字符名称导致文档白屏问题

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc.doc:docsdk:4.10.0'

3. api变动

   模块 | 调整 | API | 描述 | 备注
   --- | --- | --- | --- | ---
   直播 | 过时 | TemplateInfo-name、description、status | 模版信息名称、描述、状态不再对外提供 |
   直播 | 删除 | RoomInfo.id | 删除此字段，使用 encryptId 替代 |
   直播 | 修改类型 int-->long | LiveInfo.liveDuration | 增加精度 |
   直播/回放 | 新增 | LoginInfo.secondaryVerify/ReplayLoginInfo.secondaryVerify | startLogin-主次验证场景设置字段 |
   直播 | 新增 | Viewer.avatar、customInfo、updateNameSwitch | 直播用户头像、自定义信息、修改昵称开关 |
   回放 | 新增 | Viewer.avatar | 回放用户头像 |
   直播 | 过时 | DWLiveLoginListener.onException | 使用DWLiveLoginListener.onLoginFailed |
   直播 | 新增 | DWLiveLoginListener.onLoginFailed | 替代DWLiveLoginListener.onException |
   回放 | 过时 | DWLiveReplayLoginListener.onException | 使用DWLiveReplayLoginListener.onLoginFailed |
   回放 | 新增 | DWLiveReplayLoginListener.onLoginFailed | 替代DWLiveReplayLoginListener.onException |
   文档 | 过时 | IDocView.captureBitmap() | 文档截图（不带画笔） |
   文档 | 新增 | IDocView.captureBitmap(BaseDocCallback<Bitmap,String> callback) | 文档截图（带画笔） |

4. 对接说明

   - 新增登录方式对接

         ​x本期迭代新增加支持：免登录验证（不输入昵称、密码）、新白名单验证、主次验证登录方式
         其中主次验证登录方式，如果为次验证登录，则需要设置`LoginInfo.secondaryVerify/ReplayLoginInfo.secondaryVerify` 字段的值为 1

   - 直播与回放登录方法 `startLogin` 新增 `onLoginFailed` 回调，回调错误码与错误描述，如下：

     错误码 | 描述 | 备注
     --- | --- | ---
     10000000 | 请求参数不正确，请检查后重试。 |
     20270008 | 您的Token不存在，请重新登录。 |
     10000001 | 系统出现异常，请稍后再试。 |
     20200002 | 您的账户已过期，请联系客服处理。 |
     10000034 | 您还未登录，请先登录后再试。 |
     10000005 | 该回放不存在或已被删除，请检查后重试。 |
     10000007 | 该直播不存在或已被删除，请检查后重试。 |
     10000006 | 该直播间不存在或已被删除，请检查后重试。 |
     20290005 | 请求参数错误，请检查后重试。 |
     20270000 | api登录调用失败，请检查网络连接后重试。 |
     20270011 | api登录调用超时，请检查网络连接后重试。 |
     20270002 | 名称或密码错误，请检查后重试。 |
     20270001 | 请求参数错误，请检查后重试。 |
     20270003 | 登录失败，请联系管理员添加你至白名单 |
     20270004 | 该视频不属于当前账户，请联系客服。 |
     20270005 | 该视频不可用，请联系客服。 |
     20270006 | 获取播放地址失败，请检查网络连接后重试。 |
     20270010 | 获取打点信息失败，请联系客服。 |
     20270007 | 该播放地址不存在或已被删除，请联系客服。 |
     20290009 | 不合法的产品线，请联系客服。 |
     20270012 | 手机号验证失败，请检查输入后重试。 |
     20270013 | 登记观看失败，请联系客服。 |
     20270014 | 手机号验证失败，请检查输入后重试。 |
     20270015 | 发送短信失败，请稍后再试。 |
     20270016 | 该直播间未开启直播转回放功能，请联系客服。 |
     20270017 | 回放直播间与登录直播间不符，请联系客服。 |
     20270018 | 批量获取视频信息失败，请联系客服。 |
     20270019 | 视频信息错误，请联系客服。 |
     20270020 | 该极速回放视频没有内容，请联系客服。 |
     20290015 | 企微绑定已失效，请重新绑定。 |
     20290016 | 非法的企微绑定关系，请重新绑定。 |
     20290017 | 该企微用户未在当前直播间下被授权，请联系管理员授权。 |
     20290001 | - | 接口验证返回 message，直接展示

## Release4.9.0

1. 更新日志

   1. 问答功能支持图文问答
   2. 聊天新增自定义表情，优化基础表情
   3. 修复部分已知bug
   4. demo兼容AndroidX

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc.doc:docsdk:4.9.0'

3. api变动

   模块 | 调整 | API | 描述 | 备注
   --- | --- | --- | --- | ---
   直播 | 新增 | `sendQuestionMsg(String question, List<String> imgPathList, BaseLiveCallback<String, QaSendErrorBean> callback)` | 发送带有图片的问答（兼容纯文字问答），question：问答文字，必填；imgPathList：图片本地地址（可读取地址），callback：回调 |
   直播/在线回放 | 新增 | `boolean isOpenCustomEmoji()` | 获取是否开启自定义表情功能 |
   直播/在线回放 | 新增 | `boolean isCustomEmojiDownloadComplete()` | 自定义表情是否下载完成 |
   直播/在线回放 | 新增 | `String getEmojiByName(String name)` | 通过表情名获取单个表情，返回表情本地路径 |
   直播/在线回放 | 新增 | `ArrayList<CustomEmoji> getCustomEmojis()` | 获取所有的自定义表情 |
   直播 | 新增 | `Question.ExtraDTO` | 新增extra数据字段，包含图片链接地址 |
   直播 | 新增 | `Answer.ExtraDTO` | 新增extra数据字段，包含图片链接地址 |
   直播 | 过时 | `Question.time` | 此字段返回相对时间，单位为s，不利于扩展，使用millsTime字段替代，绝对时间，ms单位 |
   直播 | 过时 | `Answer.receiveTime` | 此字段返回相对时间，单位为s，不利于扩展，使用millsTime字段替代，绝对时间，ms单位 |

4. 参数说明

   QaSendErrorBean

       xxxxxxxxxx    /**     * 错误码     */    private int errorCode;    /**     * 错误信息     */    private String errorMsg;//状态码含义：//图片文件校验失败，包括 文件不存在、接口返回文件不合法QaSendErrorBean.ERROR_FILE_INVALID  //输入内容为空，或者输入内容长度大于1000QaSendErrorBean.ERROR_CONTENT_INVALID  //图片数量超出6张QaSendErrorBean.ERROR_IMG_NUMBER_INVALID  //1s防抖QaSendErrorBean.ERROR_DEBOUNCE  //直播未开始QaSendErrorBean.ERROR_NOT_LIVING  //网络请求失败QaSendErrorBean.ERROR_REQUEST_FAILED  //图片上传oss 失败QaSendErrorBean.ERROR_FILE_UPLOAD_FAILED  //发送问答失败，socket抛出错误QaSendErrorBean.ERROR_JSON_PARSE_FAILED  //房间没有问答模板QaSendErrorBean.ERROR_TEMPLATE_INVALID  //网络错误QaSendErrorBean.ERROR_NETWORK_ERROR  //单个文件错误码：  //图片过大，请上传小于20M的图片  QaSendErrorBean.QaSendImgError.ERROR_IMAGE_SIZE_INVALID  //格式不支持，请选择JPG、PNG、GIF、JPEG、BMP格式的图片  QaSendErrorBean.QaSendImgError.ERROR_IMAGE_SUFFIX_INVALID  //上传文件时出现了错误，请重试  QaSendErrorBean.QaSendImgError.ERROR_IMAGE_UPLOAD_FAILED  //登录异常，请重新登录或者刷新后重试  QaSendErrorBean.QaSendImgError.ERROR_LOGIN_FAILED  //参数错误，请稍后重试，或联系客服  QaSendErrorBean.QaSendImgError.ERROR_PARAMS_INVALID  //哎呀，出了点问题。请稍后重试，或联系客服  QaSendErrorBean.QaSendImgError.ERROR_UNSPECIFIED  //图片校验失败，请重试  QaSendErrorBean.QaSendImgError.ERROR_FILE_INVALID  //图片文件不存在，请重试  QaSendErrorBean.QaSendImgError.ERROR_FILE_NOT_EXISTS

   CustomEmoji

       xxxxxxxxxx    /**     * 表情名称     */    private String name;    /**     * 表情本地路径     */    private String img;

   ExtraDTO

       xxxxxxxxxx/**  * 图片数组  */private List<ImgDTO> img;

   ImgDTO

       xxxxxxxxxx/**  * 图片排序编号  */private int order;/**  * 图片链接地址  */private String url;

## Release4.8.0

1. 更新日志

   1. 新增竖屏观看功能
   2. 加入聊天置顶功能
   3. 优化公告的显示和阅读
   4. 直播带货支持多平台链接
   5. 优化播放器和回放文档画笔下载

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc.doc:docsdk:4.8.0'

3. api变动

   模块 | 调整 | API | 描述 | 备注
   --- | --- | --- | --- | ---
   直播 | 新增 | LiveDigestBean getLiveDigestInfo | 获取直播相关信息 | startLogin成功后调用，需要判空，LiveDigestBean：icon-直播间logo
   直播 | 新增 | DWLiveListener.onChatTop(ArrayList ccChatTopBeanList) | 回调聊天置顶列表 | CCChatTopBean：属性定义见参数说明
   直播 | 新增 | DWLiveListener.onUnChatTop(ArrayList chatIdList) | 回调取消聊天置顶列表 |

4. 参数说明

   CCChatTopBean

       xxxxxxxxxx    /**     * 置顶消息id     */    private String id;    /**     * 置顶消息内容     */    private String content;    /**     * 置顶消息发送者id     */    private String fromViewerId;    /**     * 置顶消息发送者昵称     */    private String fromViewerName;    /**     * 置顶消息发送者头像     */    private String fromViewerAvatar;    /**     * 置顶消息发送者分组id     */    private String fromViewerGroupId;    /**     * 值为1  主讲、推流端角色（publisher）     * 值为2  助教端角色（teacher）     * 值为3  主持人角色（host）     * 值为4  学生、观看端角色（student）     * 值为0  其它角色（other）     */    private int fromViewerRole;

## Release4.7.0

1. 更新日志

   1. 新增直播文档重试功能
   2. 新增直播低延迟与多人连麦解耦
   3. 新增在线回放文档重试功能
   4. 新增抽奖老虎机样式
   5. 新增红包雨自定义封面
   6. 修复其他已知问题
   7. 优化Demo层UI

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc.doc:docsdk:4.7.0'

3. 注意事项

   对外api改动（直播和回放模块）： docLoadCompleteFailedWithIndex(int index) 修改部分状态值含义，所有状态值及含义如下：

   index 状态值 | 状态定义 | 操作
   --- | --- | ---
   0 | 文档组件加载完成 | 无
   3 | 文档组件加载失败（SDK内部已做重试逻辑，但仍失败需要退出重新进入房间） | 退出重进
   1 | 动态文档翻页成功 | 无
   5 | 动态文档翻页超时（展示文档刷新按钮，用户可手动触发文档重载） | 手动重试
   2 | 非动画文档(白板 图片)文档翻页完成 | 无
   4 | 静态文档翻页失败（展示文档刷新按钮，用户可手动触发文档重载） | 手动重试
   6 | 画板翻页失败（展示文档刷新按钮，用户可手动触发文档重载） | 手动重试
   9 | 文档翻页超时 | 无
   10 | 静态文档翻页超时（展示文档刷新按钮，用户可手动触发文档重载） | 手动重试
   11 | 动态文档动画执行成功 | 无
   12 | 动态文档动画执行超时（内部重试） | 无
   13 | 动态文档加载成功 | 无
   14 | 动态文档加载失败（展示文档刷新按钮，用户可手动触发文档重载） | 手动重试

   对外API新增：

   模块 | 调整 | API | 描述 | 备注
   --- | --- | --- | --- | ---
   直播 | 新增 | reloadPageChange(BaseCallback callback) | 刷新当前页文档 | callback回调onSuccess为调用成功，回调onError为调用失败
   回放 | 新增 | reloadPageChange(BaseCallback callback) | 刷新当前页文档 | callback回调onSuccess为调用成功，回调onError为调用失败
   回放 | 新增 | IDocManagerListener.onPageInfoList(ArrayList infoList) | 回调当前回放翻页信息 | 4.7.0之前版本DWLiveReplayListener的onPageInfoList方法不再回调，使用此方法替代
   回放 | 新增 | IDocManagerListener.onMetaDataLoadSuccess | 回调回放元数据下载完成 | 回放翻页、画笔等数据下载完成回调
   回放 | 废弃 | DWLiveReplayListener.onPageInfoList | 回放翻页信息 | 使用docsdk的回放文档功能时，此方法废弃不再使用

## Release4.6.1

1. 更新日志

   1. 新增隐私协议弹窗
   2. 新增权限申请弹窗
   3. 修复多人连麦流异常问题
   4. 修复音频模式播放失败问题
   5. 修复1v1声网连麦切换网络窗口消失问题
   6. 修复切换视图文档显示不全问题

2. 远端集成

       xxxxxxxxxx//文档sdk内部引用直播sdk，单独引入：api 'com.bokecc:dwlivesdk:4.6.1'api 'com.bokecc.doc:docsdk:4.6.1'

3. 注意事项

       xxxxxxxxxx1. CCBasePlayer.CCPlayerStatus中去除了RenderingStart状态2. DWLiveEngine的init方法由于权限合规修改，去除了非主进程调用检查，需要确保此方法调用是在主进程3. 全局混淆增加：-keep class com.tencent.tbs.** {    *;}

## Release4.6.0

1. 更新日志

   1. 文档模块优化及升级
   2. 优化回放画笔数据加载
   3. 修复横屏观看直播顶部样式问题
   4. 修复网络重连后文档及音频状态异常问题

2. 远端集成

       xxxxxxxxxx//文档sdk内部引用直播sdk，单独引入：api 'com.bokecc:dwlivesdk:4.6.0'api 'com.bokecc.doc:docsdk:4.6.0'

3. 因类路径变化，module中ELog等类报错，请重新导入类

## Release4.5.0

1. 更新日志

   1. 新增直播带货功能

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc:dwlivesdk:4.5.0'

## Release4.3.0

1. 更新日志

   1. 新增直播邀请卡功能
   2. 新增直播问卷功能
   3. 优化已知问题

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc:dwlivesdk:4.3.0'

## Release4.2.0

1. 更新日志

   1. 直播新增投票功能
   2. 直播新增红包雨功能
   3. 新增鉴黄直播结束提示
   4. 优化画笔流畅度

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc:dwlivesdk:4.2.0'

3. api变动

   1. 新增DWLive.getInteractiveOngoing（获取正在进行的组件活动，直播登录后调用）
   2. 新增DWLiveListener.onLiveStop(boolean isNormal, String msg)，替代原DWLiveListener.onStreamEnd(boolean isNormal) 方法，增加返回结束直播提示语
   3. 过时DWLiveListener.onStreamEnd(boolean isNormal) 方法

## Release4.1.0

1. 更新日志

   1. 直播新增打赏功能
   2. 直播新增点赞功能
   3. 直播新增连麦网络状态回调
   4. 回放新增试看功能
   5. 修复视频宽高回调无效问题
   6. 文档加载失败优化
   7. 修复离线回放崩溃问题
   8. 修复抽奖统计问题

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc:dwlivesdk:4.1.0'

3. 直播DWLive新增API

       xxxxxxxxxx//获取互动组件配置信息public InteractionConfigure getInteractionConfigure()//获取互动组件tokenpublic void getInteractiveToken(BaseCallback<String> callback);
       //互动组件的配置public class InteractionConfigure {    //点赞  0:关闭 1:直播间配置 2:全局配置    private int likeSwitch = 0;    //礼物配置    private GiftConfigure giftConfigure;}//打赏组件的配置public class GiftConfigure {    //0:关闭 1:直播间配置 2:全局配置    private int giftSwitch = 0;    //0:关闭 1: 左侧特效 2：全局特效    private int specialEffects;}

4. 直播连麦RTCConnectListener中新增回调

       xxxxxxxxxx   /**     * 推流网络状态     * @param hdStreamQuality     */    void onPublishQuality(HDStreamQuality hdStreamQuality);    /**     * 拉流网络状态     * @param userId 用户id     * @param hdStreamQuality  网络信息     */    void onPlayQuality(String userId, HDStreamQuality hdStreamQuality);
       public class HDStreamQuality {    /** 本机到服务器的往返时延(ms) */    private int rtt;    /**上行丢包(0~255)，数值越大丢包越高，丢包率 = pktLostRate/255 */    private int pktLostRate;    /**下行丢包率*/    private int downLostRate;    /** 上行综合网络质量(0~3)，分别对应优、良、中、差 */    private int txQuality;    /** 下行综合网络质量(0~3)，分别对应优、良、中、差*/    private int rxQuality;    /**音频码率*/    private double akbps;    /**视频码率*/    private double vkbps;}

5. 在线回放DWLiveReplayListener新增回调

       xxxxxxxxxx/** * 回调回放试看时长 * @param trialDuration 单位秒 */public void onTrialDuration(int trialDuration);

6. 修复直播普通模式(非连麦状态)、在线回放、离线回放视频宽高回调问题

       xxxxxxxxxxpublic abstract class LiveRtmpPlayerCallBack {   ...       /**     * 检测到视频宽高发生变化     *     * @param width  宽     * @param height 高     */    public void onVideoSizeChanged(int width, int height) {    }
          ...}
       public abstract class PlaybackPlayerListener {   ...    /**     * 检测到视频宽高发生变化     *     * @param width  宽     * @param height 高     */    public void onVideoSizeChanged(int width, int height) {    }
           ...}

## Release4.0.0

1. 更新日志

   1. 在线回放新增自定义字段
   2. 直播、在线回放新增视频LOGO
   3. 修复以及优化一些已知问题
   4. 新增红包雨功能
   5. sdk内的图片地址链接HTTP换成HTTPS
   6. 登陆字符限制为40
   7. 解决频繁获取androidID导致审核不通过

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc:dwlivesdk:4.0.0'

3. 4.0.0开始不再提供本地jar包支持

4. 新增方法

       xxxxxxxxxx
         // region -------------------- 在线回放 ---------------------//设置播放器监听public void setReplayPlayerListener(ReplayPlayerListener replayPlayerListener)//设置防录屏public void setAntiRecordScreen(Activity activity)//设置播放器显示模式public void setVideoType(CCBasePlayer.VideoType videoType)//获取视频总时长public long getDuration()//获取播放状态public CCBasePlayer.CCPlayerStatus getPlayStatus()//获取当前播放进度public long getCurrentPosition()//是否是播放中public boolean isPlaying()// endregion  // region -------------------- 离线回放 ---------------------//设置离线回放播放器回调public void setReplayPlayerListener(ReplayPlayerListener replayPlayerListener)//设置视频拉伸模式public void setVideoType(CCBasePlayer.VideoType type)//获取当前播放状态public CCBasePlayer.CCPlayerStatus getPlayerStatus()//当前是否是播放中public boolean isPlaying()//是否处于可播放状态public boolean isInPlaybackState()//设置播放进度public void seekTo(long progress)//获取当前播放进度public long getCurrentPosition()//获取视频总时长public long getDuration()// endregion

5. 修改方法

       xxxxxxxxxx// region -------------------- 在线回放 ---------------------//设置在线回放回调监听public void setReplayParams(DWLiveReplayListener replayListener)//开始播放public void start(Context context)// endregion  // region -------------------- 离线回放 ---------------------//设置离线回放参数public void setReplayParams(DWLiveLocalReplayListener replayListener, DocView docView, String dir)//开始播放public void start(Context context)  // endregion

6. 废弃或删除方法

       xxxxxxxxxx// region -------------------- 在线回放 ---------------------//设置在线回放的参数public void setReplayParams(DWLiveReplayListener replayListener, Context         context, DWReplayPlayer player, DocView docView)//设置播放器public void setReplayPlayer(DWReplayPlayer player)//开始播放public void start(Surface surface)// endregion  // region -------------------- 离线回放 ---------------------//开始播放public void start(Surface surface)  //释放播放器public void releasePlayer()// endregion

7. 在线回放功能升级指南

   1. 播放器修改

      4.0.0版本之前，需要在布局里面声明 `com.bokecc.livemodule.view.ResizeTextureView` ，并在代码层创建 `DWReplayPlayer` 对象。从4.0.0版本开始，您不需要再声明 `DWReplayPlayer` 播放器对象，在 `DWLiveReplayListener` 中，通过 `public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView)` 方法，返回播放器视图，您需要创建容器，并将返回的 `hdMediaView` 视图添加进容器即可，并在适当的回调方法中操作移除 `hdMediaView` 。

   2. 播放器事件监听修改

          xxxxxxxxxx//在DWLiveReplayListener中新增重写以下回调@Overridepublic void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) {    //返回的 hdMediaView 为直播播放器布局}//播放器注册监听修改DWReplayPlayer.setPlayerEventListener(PlayerEvent event);-->DWLiveReplay.getInstance().setReplayPlayerListener(ReplayPlayerListener replayPlayerListener);

   3. 开始播放修改

          xxxxxxxxxxDWLiveCoreHandler.getInstance().start();-->DWLiveCoreHandler.getInstance().start(context);

   4. 防录屏修改

          xxxxxxxxxxDWReplayPlayer.setAntiRecordScreen(activity);--> DWLiveReplay.getInstance().setAntiRecordScreen(activity);

   5. 其他修改

      所有播放器相关的操作将放到DWLiveReplay中进行调用

8. 离线回放升级指南

   1. 播放器修改

   4.0.0版本之前，需要在布局里面声明 `com.bokecc.livemodule.view.ResizeTextureView` ，并在代码层创建 `DWReplayPlayer` 对象。从4.0.0版本开始，您不需要再声明 `DWReplayPlayer` 播放器对象，在 `DWLiveLocalReplayListener` 中，通过 `public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView)` 方法，返回播放器视图，您需要创建容器，并将返回的 `hdMediaView` 视图添加进容器即可，并在适当的回调方法中操作移除 `hdMediaView` 。

   2. 播放器事件监听修改

          xxxxxxxxxx//在DWLiveLocalReplayListener中新增重写以下回调@Overridepublic void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) {    //返回的 hdMediaView 为直播播放器布局}//播放器注册监听修改DWReplayPlayer.setPlayerEventListener(PlayerEvent event);-->DWLiveLocalReplay.getInstance().setReplayPlayerListener(ReplayPlayerListener replayPlayerListener);

   3. 开始播放修改

          xxxxxxxxxxDWLiveCoreHandler.getInstance().start();-->DWLiveCoreHandler.getInstance().start(context);

   4. 防录屏修改

          xxxxxxxxxxDWReplayPlayer.setAntiRecordScreen(activity);--> DWLiveReplay.getInstance().setAntiRecordScreen(activity);

   5. 其他修改

      所有播放器相关的操作将放到DWLiveReplay中进行调用 另外播放完成不需要调用stop

## Release3.18.0

1. 更新日志

   1. 支持多人连麦功能
   2. 支持适配直播观看模式
   3. 修复在线回放画笔重叠问题

2. 远端集成

       xxxxxxxxxxapi 'com.bokecc:dwlivesdk:3.18.0'

3. 本地集成

       xxxxxxxxxx删除旧版本dwlivesdk.jar，导入dwlivesdk-3.18.0.jarCommonLib-1.1.3.jar替换为CommonLib-1.1.4.jar删除旧版本的rtc.jar新增CCStreamALib-1.0.9.jar新增CCStreamPlayerLib-1.0.5.jar新增CCStreamTLib-1.0.9.jar新增ClassBaseLib-6.9.3.jar新增liteavsdk-8.8.10263.jar新增MqttService-1.1.1.jar新增mqttv3-1.2.0.jar新增RtsNetSDK-1.6.1.jarjniLibs新增 libliteavsdk.so libRtsSDK.so libsoundtouch.so libtraeimp-rtmp.so libtxffmpeg.so

4. 新增方法

       xxxxxxxxxx
         // region -------------------- 直播对外设置相关 ---------------------//设置播放器显示模式public void setVideoType(CCBasePlayer.VideoType videoType)// endregion  // region -------------------- 连麦对外设置相关 ---------------------//设置流监听public void setPublishStreamListener(LiveRtmpPlayerCallBack callBack)//设置防录屏public void setAntiRecordScreen(Activity activity)//是否是多人连麦public boolean isMultiMediaCall()//发起多人连麦public void callInPreviewWithType(RtcCallBack rtcCallBack,BaseRtcClient.RtcConnectType type)//通过流id拉取远端流public void pullRemoteStream(String userId, PullRemoteStreamCallBack baseCallback)//通过id移除远端流public void removeRemoteStream(String userId,BaseCallback baseCallback)//拒绝连麦public void rejectCall()//同意连麦public void agreeCallInPreview(RtcCallBack rtcCallBack,BaseRtcClient.RtcConnectType audiovideo)//连麦过程中开启或者关闭麦克风public void setLocalAudioEnable(boolean enable)//连麦过程中开启或者关闭摄像头public void setLocalVideoEnable(boolean enable)//连麦过程中切换摄像头public void switchLocalCamera()// endregion

5. 修改方法

       xxxxxxxxxx// region -------------------- 直播对外设置相关 ---------------------//开始直播public void start()-->public void start(Context context)//设置播放参数public void setDWLivePlayParams(DWLiveListener dwLiveListener, Context context, DocView docView, DWLivePlayer player)-->public void setDWLivePlayParams(DWLiveListener dwLiveListener, Context context, DocView docView)    // endregion
       // region -------------------- 连麦对外设置相关 ---------------------//断开连麦public void disConnectSpeak()-->public void hangup()//拒绝连麦public void disConnectApplySpeak()-->public void rejectCall()//设置连麦回调监听public void setRtcClientListener(RtcClientListener rtcClientListener)-->public void setRtcClientListener(RTCConnectListener rtcClientListener)  //设置直播播放音量大小public void setVolume(float left, float right)-->public void setVolume(float volume)// endregion

6. 废弃或删除方法

       xxxxxxxxxx// region -------------------- 连麦对外设置相关 ---------------------//移除本地摄像头预览。废弃原因：连麦重构，断开连麦自动停止预览，用户手动从视图树移除HDMediaView即可public void removeLocalRender()  //关闭资源。废弃原因：连麦重构，底层自动处理，不需要用户手动调用public void closeCamera()  //发起连麦。废弃原因：连麦重构，使用callInPreView方法替代public void startVoiceRTCConnect()public void startRtcConnect()  //设置预览。废弃原因：连麦重构，在发起连麦callback中返回预览视图，用户可选择性添加进视图树public void setLocalRender(CCRTCRender localRender)public void setRemoteRender(CCRTCRender remoteRender)public void setRtcClientParameters(RtcClientListener rtcClientListener, CCRTCRender            localRender, CCRTCRender remoteRender)// endregion  // region -------------------- 直播对外设置相关 ---------------------  //直播设置播放view。废弃原因：重构在Callback里返回HDMediaView视图public void start(Surface surface)  // endregion

7. 直播功能升级指南

   1. 播放器修改

      3.18.0版本之前，需要在布局里面声明 `com.bokecc.livemodule.view.ResizeTextureView` ，并在代码层创建 `DWLivePlayer` 对象。从3.18.0版本开始，您不需要再声明 `DWLivePlayer` 播放器对象，在 `DWLiveListener` 中，通过 `public void onLiveStreamViewPrepared(HDMediaView hdMediaView)` 方法，返回播放器视图，您需要创建容器，并将返回的 `hdMediaView` 视图添加进容器即可，并在适当的回调方法中操作移除 `hdMediaView` 。

   2. 播放器事件监听修改

          xxxxxxxxxx//在DWLiveListener中新增重写以下回调@Overridepublic void onLiveStreamViewPrepared(HDMediaView hdMediaView) {    //返回的 hdMediaView 为直播播放器布局}//播放器注册监听修改DWLivePlayer.setPlayerEventListener(PlayerEvent event);-->DWLive.getInstance().setPublishStreamListener(LiveRtmpPlayerCallBack event);

   3. 开始播放修改

          xxxxxxxxxxDWLiveCoreHandler.getInstance().start();-->DWLiveCoreHandler.getInstance().start(mContext);

   4. 防录屏修改

          xxxxxxxxxxDWLivePlayer.setAntiRecordScreen(activity);-->DWLive.getInstance().setAntiRecordScreen(activity);

   5. 其他修改

          xxxxxxxxxx//不再需要在onStreamEnd(final boolean isNormal)回调中调用以下代码段// 暂停播放DWLive.getInstance().pause();

8. 连麦功能升级指南

   3.18.0版本加入了多人连麦的功能，并将单人连麦的API使用与多人连麦进行统一。如果您希望新接入多人连麦功能，在直播间管理后台开启多人连麦的功能后，您可以通过

   `连麦接入文档` 进行多人连麦功能的对接。如果您已经使用了单人连麦的功能，也需要根据文档进行单人连麦功能的修改

9. 无连麦功能接入或者依赖冲突解决

   如果您不使用sdk提供的多人连麦功能突，建议排除连麦库。如果您在使用sdk的过程中出现依赖冲突问题，也可以根据下面代码所示排除方案进行冲突依赖的排除。

       xxxxxxxxxx        api('com.bokecc:dwlivesdk:' + rootProject.ext.android.SDK_VERSION) {//            // drm冲突//            exclude group: 'com.bokecc', module: 'drm'//            // webrtc冲突//            exclude group: 'com.bokecc', module: 'hdwebrtc'//            // 播放器冲突//            exclude group: 'com.bokecc', module: 'CCStreamPlayerLib'//            // 云课堂sdk冲突（多人连麦，不使用多人连麦可以排除）            exclude group: 'com.bokecc', module: 'ClassBaseLib'//            // tbs冲突（不使用x5内核，可以在初始化sdk关闭x5开关，并排除此库）//            exclude group: 'com.tencent.tbs.tbssdk', module: 'sdk'        }