Ohos
通过阅读本文,您可以了解到屏幕分享的使用方法。
注意
1)从应用安全考虑,移动端默认未开通屏幕共享功能。如果您想开通移动端屏幕共享功能,请提交工单申请。
2)申请需要提供:1. 阿里云UID 2.需要开通移动端屏幕共享的RTC的AppId (请用公司正式账号申请)
发布端
启动屏幕分享。
// 配置屏幕分享推流
//获取DingRtcEngine实例
let dingRtc = DingRtcSDK.create(context);
let ret = dingRtc.startScreenShare(DingRtcConstants.RtcScreenShareMode.RtcScreenShareAll);
.....
推流后通过回调判断屏幕共享是否发布成功。
onScreenSharePublishStateChanged(oldState: DingRtcConstants.RtcEnginePublishState, newState: DingRtcConstants.RtcEnginePublishState, elapseSinceLastState: number, channel: string): void {};
参数
类型
描述
oldState
RtcEnginePublishState
之前的发布状态。
newState
RtcEnginePublishState
当前的发布状态。
elapseSinceLastState
number
状态变更时间间隔。单位:毫秒。
channel
String
当前频道ID。
停止屏幕分享。
let ret = dingRtc.stopScreenShare();;
停止屏幕共享后通过回调判断屏幕共享是否取消发布成功。
onScreenSharePublishStateChanged(oldState: DingRtcConstants.RtcEnginePublishState, newState: DingRtcConstants.RtcEnginePublishState, elapseSinceLastState: number, channel: string): void {};
参数
类型
描述
oldState
RtcEnginePublishState
之前的发布状态。
newState
RtcEnginePublishState
当前的发布状态。
elapseSinceLastState
int
状态变更时间间隔。单位:毫秒。
channel
String
当前频道ID。
异常状态监听,通过实现onOccurError 回调,兼容屏幕共享过程中发生的错误
onOccurError(error: number, msg: string): void { Prompt.showToast({ duration: 2000, message: 'onOccurError: ' + error + " ," + msg }); if (error == DingRtcConstants.ErrorCode.ScreenShareNoPermission) { Prompt.showToast({ duration: 2000, message: '录屏权限未开启' }); this.local.isScreenOn = false; this.chat.pubScreen(this.local.isScreenOn, this.local.screenMode); } else if (error == DingRtcConstants.ErrorCode.ScreenShareStopByUser) { Prompt.showToast({ duration: 2000, message: '录屏被用户手动关闭' }); this.local.isScreenOn = false; this.chat.pubScreen(this.local.isScreenOn, this.local.screenMode); } else if (error == DingRtcConstants.ErrorCode.ScreenShareStopByOther) { Prompt.showToast({ duration: 2000, message: '录屏被系统关闭' }); this.local.isScreenOn = false; this.chat.pubScreen(this.local.isScreenOn, this.local.screenMode); }};
订阅端
订阅端用户可通过自动或手动方式订阅发布端屏幕分享视频流,并设置对应View显示,详情请参见DingRtcEngine接口。