通过阅读本文,您可以了解到屏幕分享的使用方法。

注意

Android 10.0 及以上版本,使用屏幕共享功能需要开启前台服务,并在AndroidManifest.xml中注册 Service,添加 foregroundServiceType 属性。

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<application>
    <service
            android:name="xxx.SimpleScreenShareService"
            android:enabled="true"
            android:foregroundServiceType="mediaProjection">
        </service>
</application>

推流端

启动屏幕分享。

// 配置屏幕分享推流
//获取DingRtcEngine实例
DingRtcEngine mRtcEngine = DingRtcEngine.create(getApplicationContext(),"");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
  startForegroundService(sharingService);
}
ret = mRtcEngine.startScreenShare();
.....
  1. 推流后通过回调判断屏幕共享是否发布成功。

    public void onScreenSharePublishStateChanged(DingRtcEngine.DingRtcPublishState oldState ,
                                                 DingRtcEngine.DingRtcPublishState newState,
                                                 int elapseSinceLastState, String channel);

    参数

    类型

    描述

    oldState

    DingRtcPublishState

    之前的推流状态。

    newState

    DingRtcPublishState

    当前的推流状态。

    elapseSinceLastState

    int

    状态变更时间间隔。单位:毫秒。

    channel

    String

    当前频道ID。

  2. 停止屏幕分享。

    // 配置屏幕分享停止
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
      stopService(sharingService);
    }
    int ret = mRtcEngine.stopScreenShare();;
  3. 停止屏幕共享后通过回调判断屏幕共享是否取消发布成功。

    public void onScreenSharePublishStateChanged(DingRtcEngine.DingRtcPublishState oldState ,
                                                 DingRtcEngine.DingRtcPublishState newState,
                                                 int elapseSinceLastState, String channel);

    参数

    类型

    描述

    oldState

    AliRtcPublishState

    之前的推流状态。

    newState

    AliRtcPublishState

    当前的推流状态。

    elapseSinceLastState

    int

    状态变更时间间隔。单位:毫秒。

    channel

    String

    当前频道ID。

订阅端

订阅端用户可通过自动或手动方式订阅推流端屏幕分享视频流,并设置对应View显示,详情请参见DingRtcEngine接口