###### 本文档用于研讨会观众切换至嘉宾以及嘉宾切换到观众的功能

**1.默认您接入时已经对接好了直播观众的H5页面**
**2.本功能需要集成SaasRoomUILib的6.34.0版本，集成方法参照README**

###### 实现步骤

以下为示例代码，**需要根据实际业务场景自行调整实现逻辑**，完整代码可以在以下目录找到，cloudclass_android_demo/demo/HDSSKT_Android_New/CCClassDemo/src/main/java/com/bokecc/cloudclass/demo/activity/HomeActivity.java
cloudclass_android_demo/demo/HDSSKT_Android_New/CCClassDemo/src/main/java/com/bokecc/cloudclass/demo/activity/LiveActivity.java

###### 步骤一：

在跳转进入直播H5页面添加如下实现，

```
				import java.util.Observable;
				import java.util.Observer;
				...
        //当用户由嘉宾角色变成观众时需要重新打开直播H5的观众页面
				//true 需要打开直播H5页面
				private boolean needOpenLive = false;
				...
        @Override
      	protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          initObserver();
    		}
				...
				//用于监听需要重新打开直播H5页面的事件
        AudRemoveObservable.getInstance().addObserver(new Observer() {
            @Override
            public void update(Observable o, Object arg) {
                needOpenLive = true;
            }
        });
        ...
        @Override
        protected void onResume() {
            super.onResume();
            //从嘉宾页面返回时，对needOpenLive做判断，为true需要重新打开直播页面
            if (needOpenLive) {
                needOpenLive = false;
                openLive();
            }
        }
        ...
        //打开直播H5页面
        private void openLive(){
          Intent intent = new Intent(this, LiveActivity.class);
          intent.putExtra("liveUrl",liveUrl);
          startActivity(intent);
    		}
    		...
```
###### 步骤二：

直播H5页面添加这部分逻辑

```
public class LiveActivity extends Activity {
    private WebView webView;

    private void initWebView(String url) {
        WebSettings settings = webView.getSettings();
        //添加js方法调用支持
        settings.setJavaScriptEnabled(true);
        //interfaceName为“android”
        webView.addJavascriptInterface(new JavascriptHandler(), "android");
    }

    class JavascriptHandler {
        @JavascriptInterface
        public String isAppWebView() {
        		//返回true时直播H5页面支持观众连麦
            return "true";
        }

        @JavascriptInterface
        public void onLeaveAndOpenNative(final String json) {
        		//用户主动申请连麦或者被邀请上麦时会回调这个方法
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    openNative(json);
                }
            });
        }
    }
	
		//跳转进入嘉宾页面
    private void openNative(String json) {
				记得参照README集成和初始化SaasRoomUILib
        try {
            JSONObject object = new JSONObject(json);
            String roomId = object.optString("roomId");
            String accontId = object.optString("accontId");
            String token = object.optString("token");
            Intent intent = new Intent();
            intent.setClass(this, SaasMeetingStudentRoomActivity.class);
            intent.putExtra(CCRoomActivity.SeesionidKey, token);
            intent.putExtra(CCRoomActivity.RoomIdKey, roomId);
            intent.putExtra(CCRoomActivity.UserAccountKey, accontId);
            intent.putExtra(CCRoomActivity.AreaCodeKey, "0");
            intent.putExtra(CCRoomActivity.KeyLayoutMode, 5);
            intent.putExtra(CCRoomActivity.ShowAudienceBtn, true);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivityForResult(intent, 0x1);
            //跳转进入到嘉宾页之后关闭观众页面
            finish();
        } catch (Exception e) {
            Tools.log(TAG, e.toString());
        }
    }
}
```

