目录
- 目录
- 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.9.0
-
更新日志
-
问答功能支持图文问答
-
聊天新增自定义表情,优化基础表情
-
修复部分已知bug
-
demo兼容AndroidX
-
-
远端集成
api 'com.bokecc.doc:docsdk:4.9.0'
-
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单位 -
参数说明
QaSendErrorBean
/** * 错误码 */ private int errorCode; /** * 错误信息 */ private String errorMsg; //状态码含义: //图片文件校验失败,包括 文件不存在、接口返回文件不合法 QaSendErrorBean.ERROR_FILE_INVALID //输入内容为空,或者输入内容长度大于1000 QaSendErrorBean.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
/** * 表情名称 */ private String name; /** * 表情本地路径 */ private String img;
ExtraDTO
/** * 图片数组 */ private List<ImgDTO> img;
ImgDTO
/** * 图片排序编号 */ private int order; /** * 图片链接地址 */ private String url;
Release4.8.0
-
更新日志
-
新增竖屏观看功能
-
加入聊天置顶功能
-
优化公告的显示和阅读
-
直播带货支持多平台链接
-
优化播放器和回放文档画笔下载
-
-
远端集成
api 'com.bokecc.doc:docsdk:4.8.0'
-
api变动
模块 调整 API 描述 备注 直播 新增 LiveDigestBean getLiveDigestInfo 获取直播相关信息 startLogin成功后调用,需要判空,LiveDigestBean:icon-直播间logo 直播 新增 DWLiveListener.onChatTop(ArrayList ccChatTopBeanList) 回调聊天置顶列表 CCChatTopBean:属性定义见参数说明 直播 新增 DWLiveListener.onUnChatTop(ArrayList chatIdList) 回调取消聊天置顶列表 -
参数说明
CCChatTopBean
/** * 置顶消息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
-
更新日志
-
新增直播文档重试功能
-
新增直播低延迟与多人连麦解耦
-
新增在线回放文档重试功能
-
新增抽奖老虎机样式
-
新增红包雨自定义封面
-
修复其他已知问题
-
优化Demo层UI
-
-
远端集成
api 'com.bokecc.doc:docsdk:4.7.0'
-
注意事项
对外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
-
更新日志
-
新增隐私协议弹窗
-
新增权限申请弹窗
-
修复多人连麦流异常问题
-
修复音频模式播放失败问题
-
修复1v1声网连麦切换网络窗口消失问题
-
修复切换视图文档显示不全问题
-
-
远端集成
//文档sdk内部引用直播sdk,单独引入:api 'com.bokecc:dwlivesdk:4.6.1' api 'com.bokecc.doc:docsdk:4.6.1'
-
注意事项
1. CCBasePlayer.CCPlayerStatus中去除了RenderingStart状态 2. DWLiveEngine的init方法由于权限合规修改,去除了非主进程调用检查,需要确保此方法调用是在主进程 3. 全局混淆增加: -keep class com.tencent.tbs.** { *; }
Release4.6.0
-
更新日志
-
文档模块优化及升级 文档模块参考文档
-
优化回放画笔数据加载
-
修复横屏观看直播顶部样式问题
-
修复网络重连后文档及音频状态异常问题
-
-
远端集成
//文档sdk内部引用直播sdk,单独引入:api 'com.bokecc:dwlivesdk:4.6.0' api 'com.bokecc.doc:docsdk:4.6.0'
-
因类路径变化,module中ELog等类报错,请重新导入类
Release4.5.0
Release4.3.0
Release4.2.0
-
更新日志
-
远端集成
api 'com.bokecc:dwlivesdk:4.2.0'
-
api变动
-
新增DWLive.getInteractiveOngoing(获取正在进行的组件活动,直播登录后调用)
-
新增DWLiveListener.onLiveStop(boolean isNormal, String msg),替代原DWLiveListener.onStreamEnd(boolean isNormal) 方法,增加返回结束直播提示语
-
过时DWLiveListener.onStreamEnd(boolean isNormal) 方法
-
Release4.1.0
-
更新日志
-
远端集成
api 'com.bokecc:dwlivesdk:4.1.0'
-
直播DWLive新增API
//获取互动组件配置信息 public InteractionConfigure getInteractionConfigure() //获取互动组件token public 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; }
-
直播连麦RTCConnectListener中新增回调
/** * 推流网络状态 * @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; }
-
在线回放DWLiveReplayListener新增回调
/** * 回调回放试看时长 * @param trialDuration 单位秒 */ public void onTrialDuration(int trialDuration);
-
修复直播普通模式(非连麦状态)、在线回放、离线回放视频宽高回调问题
public 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
-
更新日志
- 在线回放新增自定义字段
- 直播、在线回放新增视频LOGO
- 修复以及优化一些已知问题
- 新增红包雨功能
- sdk内的图片地址链接HTTP换成HTTPS
- 登陆字符限制为40
- 解决频繁获取androidID导致审核不通过
-
远端集成
api 'com.bokecc:dwlivesdk:4.0.0'
-
4.0.0开始不再提供本地jar包支持
-
新增方法
// 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
-
修改方法
// 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
-
废弃或删除方法
// 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
-
在线回放功能升级指南
-
播放器修改
4.0.0版本之前,需要在布局里面声明
com.bokecc.livemodule.view.ResizeTextureView
,并在代码层创建DWReplayPlayer
对象。从4.0.0版本开始,您不需要再声明DWReplayPlayer
播放器对象,在DWLiveReplayListener
中,通过public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView)
方法,返回播放器视图,您需要创建容器,并将返回的hdMediaView
视图添加进容器即可,并在适当的回调方法中操作移除hdMediaView
。 -
播放器事件监听修改
//在DWLiveReplayListener中新增重写以下回调 @Override public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) { //返回的 hdMediaView 为直播播放器布局 } //播放器注册监听修改 DWReplayPlayer.setPlayerEventListener(PlayerEvent event); -->DWLiveReplay.getInstance().setReplayPlayerListener(ReplayPlayerListener replayPlayerListener);
-
开始播放修改
DWLiveCoreHandler.getInstance().start(); -->DWLiveCoreHandler.getInstance().start(context);
-
防录屏修改
DWReplayPlayer.setAntiRecordScreen(activity); --> DWLiveReplay.getInstance().setAntiRecordScreen(activity);
-
其他修改
所有播放器相关的操作将放到DWLiveReplay中进行调用
-
-
离线回放升级指南
- 播放器修改
4.0.0版本之前,需要在布局里面声明
com.bokecc.livemodule.view.ResizeTextureView
,并在代码层创建DWReplayPlayer
对象。从4.0.0版本开始,您不需要再声明DWReplayPlayer
播放器对象,在DWLiveLocalReplayListener
中,通过public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView)
方法,返回播放器视图,您需要创建容器,并将返回的hdMediaView
视图添加进容器即可,并在适当的回调方法中操作移除hdMediaView
。-
播放器事件监听修改
//在DWLiveLocalReplayListener中新增重写以下回调 @Override public void onPlayBackStreamViewPrepared(HDMediaView hdMediaView) { //返回的 hdMediaView 为直播播放器布局 } //播放器注册监听修改 DWReplayPlayer.setPlayerEventListener(PlayerEvent event); -->DWLiveLocalReplay.getInstance().setReplayPlayerListener(ReplayPlayerListener replayPlayerListener);
-
开始播放修改
DWLiveCoreHandler.getInstance().start(); -->DWLiveCoreHandler.getInstance().start(context);
-
防录屏修改
DWReplayPlayer.setAntiRecordScreen(activity); --> DWLiveReplay.getInstance().setAntiRecordScreen(activity);
-
其他修改
所有播放器相关的操作将放到DWLiveReplay中进行调用 另外播放完成不需要调用stop
Release3.18.0
-
更新日志
- 支持多人连麦功能
- 支持适配直播观看模式
- 修复在线回放画笔重叠问题
-
远端集成
api 'com.bokecc:dwlivesdk:3.18.0'
-
本地集成
删除旧版本dwlivesdk.jar,导入dwlivesdk-3.18.0.jar CommonLib-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.jar jniLibs新增 libliteavsdk.so libRtsSDK.so libsoundtouch.so libtraeimp-rtmp.so libtxffmpeg.so
-
新增方法
// 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
-
修改方法
// 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
-
废弃或删除方法
// 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
-
直播功能升级指南
-
播放器修改
3.18.0版本之前,需要在布局里面声明
com.bokecc.livemodule.view.ResizeTextureView
,并在代码层创建DWLivePlayer
对象。从3.18.0版本开始,您不需要再声明DWLivePlayer
播放器对象,在DWLiveListener
中,通过public void onLiveStreamViewPrepared(HDMediaView hdMediaView)
方法,返回播放器视图,您需要创建容器,并将返回的hdMediaView
视图添加进容器即可,并在适当的回调方法中操作移除hdMediaView
。 -
播放器事件监听修改
//在DWLiveListener中新增重写以下回调 @Override public void onLiveStreamViewPrepared(HDMediaView hdMediaView) { //返回的 hdMediaView 为直播播放器布局 } //播放器注册监听修改 DWLivePlayer.setPlayerEventListener(PlayerEvent event); -->DWLive.getInstance().setPublishStreamListener(LiveRtmpPlayerCallBack event);
-
开始播放修改
DWLiveCoreHandler.getInstance().start(); -->DWLiveCoreHandler.getInstance().start(mContext);
-
防录屏修改
DWLivePlayer.setAntiRecordScreen(activity); -->DWLive.getInstance().setAntiRecordScreen(activity);
-
其他修改
//不再需要在onStreamEnd(final boolean isNormal)回调中调用以下代码段 // 暂停播放 DWLive.getInstance().pause();
-
-
连麦功能升级指南
3.18.0版本加入了多人连麦的功能,并将单人连麦的API使用与多人连麦进行统一。如果您希望新接入多人连麦功能,在直播间管理后台开启多人连麦的功能后,您可以通过
连麦接入文档
进行多人连麦功能的对接。如果您已经使用了单人连麦的功能,也需要根据文档进行单人连麦功能的修改 -
无连麦功能接入或者依赖冲突解决
如果您不使用sdk提供的多人连麦功能突,建议排除连麦库。如果您在使用sdk的过程中出现依赖冲突问题,也可以根据下面代码所示排除方案进行冲突依赖的排除。
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' }