实现基础功能

更新时间: 2023/04/14 07:19:45

本文为您介绍如何通过 NEMeetingKit 提供的一套简单易用的接口,快速地将音视频会议基础功能集成至现有应用中。

会议状态流程图

预约会议或即时会议的状态流转图如下所示。

会议状态.png

API 时序图

NEMeetingKit 实现在线会议的主要流程如下图所示。

meeting_flow_chart.jpg

初始化

在调用 SDK 其他接口之前,您首先需要完成初始化操作。

  1. 配置初始化相关参数。

    示例代码如下:

    NEMeetingKitConfig config = new NEMeetingKitConfig();
    config.appKey = Constants.APPKEY; //应用AppKey
    config.appName = context.getString(R.string.app_name); //应用AppName
    //配置会议时显示前台服务
    NEForegroundServiceConfig foregroundServiceConfig = new NEForegroundServiceConfig();
    foregroundServiceConfig.contentTitle = context.getString(R.string.app_name);
    config.foregroundServiceConfig = foregroundServiceConfig;
    
    
  2. 调用 initialize 方法完成初始化操作。该接口无额外回调结果数据。

    示例代码如下:

    NEMeetingKit.getInstance().initialize(getApplication(), config, new NECallback<Void>() {
        @Override
        public void onResult(int resultCode, String resultMsg, Void result) {
            if (resultCode == NEMeetingError.ERROR_CODE_SUCCESS) {
                //初始化成功
            } else {
                //初始化失败
            }
        }
    });
    
    • 请不要重复初始化,否则 SDK 会报错。
    • 请在初始化会议组件 SDK 时配置前台服务,防止会议进程退到后台时被系统杀死,且保证使用 Android 系统可以正常共享屏幕。详细配置参考 NEForegroundServiceConfig
    • 应用名称会显示在会议界面的顶部标题栏中。若不额外设置应用名称,则标题默认显示为“会议”。

登录鉴权

请求 SDK 进行登录鉴权,您只有完成 SDK 登录鉴权才可以创建会议。

NEMeetingKit 提供了多种登录方式供您选择,调用不同的登录接口需要传入不同的参数,具体说明如下表。

登录方式 说明 接口 参数 其他
Token 登录 - NEMeetingKit#login accountId、accountToken 账号信息需要从网易会议服务端获取,由您自行实现相关业务逻辑。
自动登录 SDK 尝试使用最近一次成功登录过的账号信息进行登录。 NEMeetingKit#tryAutoLogin - -

以下就 Token 登录方式说明 NEMeetingKit 的登录鉴权逻辑,其他登录方式同理。

  1. 请在登录前先获取账号 ID 和 Token。账号信息由网易会议的应用服务器下发,但 SDK 不提供对应接口获取该信息,需要您自行实现相关业务逻辑。

    SDK 不提供账号注册机制。您在自己的应用中集成 SDK 时,需要将用户账号与网易会议系统中的账号(accountId)进行绑定。

    示例代码如下:

    String accountId = "accountId";
    String accountToken = "accountToken";
    
  2. 调用 login 方法登录并进行回调处理,该接口无额外回调结果数据。

    示例代码如下:

    NEMeetingKit.getInstance().login(accountId, accountToken, new NECallback<Void>() {
        @Override
        public void onResult(int resultCode, String resultMsg, Void result) {
            if (resultCode == NEMeetingError.ERROR_CODE_SUCCESS) {
                //登录成功
            } else {
                //登录失败
            }
        }
    });
    

创建会议

在已经完成 SDK 登录鉴权的状态下,创建并开始一个新的会议。

  1. 配置创建会议相关参数。

    示例代码如下:

    NEStartMeetingParams params = new NEStartMeetingParams();   //会议参数
    params.meetingNum = "123456789";                             //会议号。若创建个人会议,则此处应传调用服务端创建会议接口时返回的 meetingNum(10 位数字的个人会议码);若创建随机会议,则置空,SDK 会使用 9 位数字的随机会议码
    params.displayName = "我的会议昵称";                         //会议昵称,长度最大为 20 字符
    Map<String, NEMeetingRoleType> roleBinds = new HashMap<>(); //指定用户角色类型,可以设置为 host,cohost,member
    // 设置 userUuid1 的会议角色为 COHOST
    roleBinds.put("accountId-1", NEMeetingRoleType.COHOST);
    // 设置 userUuid2 的会议角色为 COHOST
    roleBinds.put("accountId-2", NEMeetingRoleType.COHOST);
    NEStartMeetingOptions options = new NEStartMeetingOptions(); //会议选项,可自定义会中的 UI 显示、菜单、行为等
    options.noVideo = true;                                      //入会时关闭视频,默认为 true
    options.noAudio = true;                                      //入会时关闭音频,默认为 true
    options.noInvite = false;                                    //入会隐藏"邀请"按钮,默认为 false
    options.noChat = false;                                      //入会隐藏"聊天"按钮,默认为 false
    options.noWhiteBoard = false;                                //入会隐藏白板入口,默认为 false
    options.noGallery = false;                                   //入会隐藏设置"画廊模式"入口,默认为 false
    options.noSwitchCamera = false;                              //入会隐藏"切换摄像头"功能入口,默认为 false
    options.noSwitchAudioMode = false;                           //入会隐藏"切换音频模式"功能入口,默认为 false
    options.noRename = false;                                    //入会隐藏"改名"功能入口,默认为 false
    options.showMeetingTime = false;                             //设置入会后是否显示会议持续时间,默认为 false
    options.noCloudRecord = true;                                //入会隐藏"录制中"显示,默认为 true
    options.noMinimize = true;                                   //入会是否允许最小化会议页面,默认为 true
    options.defaultWindowMode = NEWindowMode.normal;             //入会默认会议视图模式
    options.meetingIdDisplayOption = NEMeetingIdDisplayOption.DISPLAY_ALL;   //设置会议中会议 ID 的显示规则,默认为全部显示
    options.noSip = false;                                        //会议是否支持 SIP 用户入会,默认为 false
    options.showMeetingRemainingTip = false;                      //会议中是否开启剩余时间(秒)提醒,默认为 false
    options.chatroomConfig = new NEMeetingChatroomConfig();       //配置聊天室
    chatroomConfig.enableFileMessage = true //是否允许发送/接收文件消息,默认为 true
    chatroomConfig.enableImageMessage = true; //是否允许发送/接收图片消息,默认为 true
    
    //options.fullToolbarMenuItems = configToolbarMenuItems();    //自定义【Toolbar】菜单。
    //options.fullMoreMenuItems = configMoreMenuItems();    //自定义【更多】菜单。
    
    • 创建会议时,您可以将会议号配置为个人会议号(可登录后通过 AccountService 获取);您也可以选择置空会议号,并由服务器随机分配会议号。
    • 会议组件 SDK 提供多个创会选项供您配置,您可根据需要自定义会中的 UI 显示、菜单、行为等。若您设置 NEStartMeetingOptions 参数为 null,SDK 会使用会议设置服务中已保存的相关配置进行创会/入会。
    • 若您入会前配置了允许最小化会议界面,则在会中进行此操作时,SDK 会返回会议状态 NEMeetingStatus#MEETING_STATUS_INMEETING_MINIMIZED 的回调通知。若您需要返回会议界面,请调用 NEMeetingKit.getInstance().getMeetingService().returnToMeeting(this) 方法。
    • 具体如何自定义 Toolbar更多菜单请参考自定义菜单
  2. 调用 startMeeting 方法创建会议并进行回调处理。该接口无额外回调结果数据,您可根据错误码判断接口是否调用成功。

    该接口仅支持在登录鉴权成功后调用,其他情况下会调用失败。

    示例代码如下:

    NEMeetingKit.getInstance().getMeetingService().startMeeting(getActivity(), params, options, new NECallback<Void>() {
        @Override
        public void onResult(int resultCode, String resultMsg, Void result) {
            if (resultCode == NEMeetingError.ERROR_CODE_SUCCESS) {
                //创建会议成功
            } else {
                //创建会议失败
            }
        }
    });
    
  3. 会议成功创建后,SDK 会拉起会议界面并接管会议逻辑:创建会议的用户会自动成为该会议的主持人,可以进行相关的会议控制操作;其他用户可以通过该会议号入会。

    若用户在会中修改密码,SDK 会返回 NEMeetingCode#MEETING_DISCONNECTING_AUTH_INFO_EXPIRED 错误码。

加入会议

在已经完成 SDK 登录鉴权的状态下,加入一个当前正在进行中的会议。

  1. 配置加入会议相关参数。

    示例代码如下:

    NEJoinMeetingParams params = new NEJoinMeetingParams();     //会议参数
    params.meetingNum = "123456789";                             //会议号,此处应传调用服务端创建会议接口时返回的 meetingNum
    params.displayName = "我的会议昵称";                          //会议昵称,长度最大为 20 字符
    params.password = "123456";                                 //会议密码
    
    NEJoinMeetingOptions options = new NEJoinMeetingOptions();   //会议选项,可自定义会中的 UI 显示、菜单、行为等
    options.noVideo = true;                                      //入会时关闭视频,默认为 true
    options.noAudio = true;                                      //入会时关闭音频,默认为 true
    options.noInvite = false;                                    //入会隐藏"邀请"按钮,默认为 false
    options.noChat = false;                                      //入会隐藏"聊天"按钮,默认为 false
    options.noWhiteBoard = false;                                //入会隐藏白板入口,默认为 false
    options.noGallery = false;                                //入会隐藏设置"画廊模式"入口,默认为 false
    options.noSwitchCamera = false;                                //入会隐藏"切换摄像头"功能入口,默认为 false
    options.noSwitchAudioMode = false;                               //入会隐藏"切换音频模式"功能入口,默认为 false
    options.noRename = false;                                //入会隐藏"改名"功能入口,默认为 false
    options.showMeetingTime = false;                                //设置入会后是否显示会议持续时间,默认为 false
    options.noCloudRecord = true;                                //入会隐藏"录制中"显示,默认为 true
    options.noMinimize = true;                                   //入会是否允许最小化会议页面,默认为 true
    options.defaultWindowMode = NEWindowMode.normal;             //入会默认会议视图模式
    options.meetingIdDisplayOption = NEMeetingIdDisplayOption.DISPLAY_ALL;   //设置会议中会议 ID 的显示规则,默认为全部显示
    options.noSip = false;                                        //会议是否支持 SIP 用户入会,默认为 false
    options.showMeetingRemainingTip = false;                      //会议中是否开启剩余时间(秒)提醒,默认为 false
    options.chatroomConfig = new NEMeetingChatroomConfig();       //配置聊天室
    chatroomConfig.enableFileMessage = true //是否允许发送/接收文件消息,默认为 true
    chatroomConfig.enableImageMessage = true; //是否允许发送/接收图片消息,默认为 true
        
    //options.fullToolbarMenuItems = configToolbarMenuItems();    //自定义【Toolbar】菜单
    //options.fullToolbarMenuItems = configMoreMenuItems();    //自定义【更多】菜单
    
    • 会议号不能为空,需要配置为正在进行中的会议的真实 ID。
    • 会议组件 SDK 提供多个创会选项供您配置,您可根据需要自定义会中的 UI 显示、菜单、行为等。若您设置 NEJoinMeetingOptions 参数为 null,SDK 会使用会议设置服务中已保存的相关配置进行创会/入会。
    • 若您入会前配置了允许最小化会议界面,则在会中进行此操作时,SDK 会返回会议状态 NEMeetingStatus#MEETING_STATUS_INMEETING_MINIMIZED 的回调通知。若您需要返回会议界面,请调用 NEMeetingKit.getInstance().getMeetingService().returnToMeeting(context) 方法。
    • 具体如何自定义 Toolbar更多菜单请参考自定义菜单
  2. 调用 joinMeeting 方法加入会议并进行回调处理。该接口无额外回调结果数据,您可根据错误码判断接口是否调用成功。

    • 该接口仅支持在登录鉴权成功后调用,其他情况下会调用失败。
    • 若用户在会中修改密码,SDK 会返回 NEMeetingCode#MEETING_DISCONNECTING_AUTH_INFO_EXPIRED 错误码。

    示例代码如下:

    NEMeetingKit.getInstance().getMeetingService().joinMeeting(context, params, options, new NECallback<Void>() {
        @Override
        public void onResult(int resultCode, String resultMsg, Void result) {
            if (resultCode == NEMeetingError.ERROR_CODE_SUCCESS) {
                //加入会议成功
            } else {
                //加入会议失败
            }
        }
    });
    

匿名入会

在已完成初始化的状态下,匿名加入一个当前正在进行中的会议。

  1. 配置匿名入会相关参数。

    示例代码如下:

    NEJoinMeetingParams params = new NEJoinMeetingParams();     //会议参数
    params.meetingNum = "123456789";                             //会议号
    params.displayName = "我的会议昵称";                          //会议昵称,长度最大为 20 字符
    params.password = "123456";                                 //会议密码
    
    NEJoinMeetingOptions options = new NEJoinMeetingOptions();   //会议选项,可自定义会中的 UI 显示、菜单、行为等
    options.noVideo = true;                                      //入会时关闭视频,默认为 true
    options.noAudio = true;                                      //入会时关闭音频,默认为 true
    options.noInvite = false;                                    //入会隐藏"邀请"按钮,默认为 false
    options.noChat = false;                                      //入会隐藏"聊天"按钮,默认为 false
    options.noWhiteBoard = false;                                //入会隐藏白板入口,默认为 false
    options.noGallery = false;                                //入会隐藏设置"画廊模式"入口,默认为 false
    options.noSwitchCamera = false;                                //入会隐藏"切换摄像头"功能入口,默认为 false
    options.noSwitchAudioMode = false;                               //入会隐藏"切换音频模式"功能入口,默认为 false
    options.noRename = false;                                //入会隐藏"改名"功能入口,默认为 false
    options.showMeetingTime = false;                                //设置入会后是否显示会议持续时间,默认为 false
    options.noCloudRecord = true;                                //入会隐藏"录制中"显示,默认为 true
    options.noMinimize = true;                                   //入会是否允许最小化会议页面,默认为 true
    options.defaultWindowMode = NEWindowMode.normal;             //入会默认会议视图模式
    options.meetingIdDisplayOption = NEMeetingIdDisplayOption.DISPLAY_ALL;   //设置会议中会议 ID 的显示规则,默认为全部显示
    
    //options.fullToolbarMenuItems = configToolbarMenuItems();    //自定义【Toolbar】菜单
    //options.fullToolbarMenuItems = configMoreMenuItems();    //自定义【更多】菜单
    
    • 会议号不能为空,需要配置为正在进行中的会议的真实 ID。
    • 会议组件 SDK 提供多个创会选项供您配置,您可根据需要自定义会中的 UI 显示、菜单、行为等。若您设置 NEJoinMeetingOptions 参数为 null,SDK 会使用会议设置服务中已保存的相关配置进行创会/入会。
    • 若您入会前配置了允许最小化会议界面,则在会中进行此操作时,SDK 会返回会议状态 NEMeetingStatus#MEETING_STATUS_INMEETING_MINIMIZED 的回调通知。若您需要返回会议界面,请调用 NEMeetingKit.getInstance().getMeetingService().returnToMeeting(context) 方法。
    • 具体如何自定义 Toolbar更多菜单请参考自定义菜单
  2. 调用 anonymousJoinMeeting 方法匿名加入会议并进行回调处理。该接口无额外回调结果数据,您可根据错误码判断接口是否调用成功。

    该接口在完成登录鉴权前后均可调用

    示例代码如下:

    NEMeetingKit.getInstance().getMeetingService().anonymousJoinMeeting(context, params, options, new NECallback<Void>() {
        @Override
        public void onResult(int resultCode, String resultMsg, Void result) {
            if (resultCode == NEMeetingError.ERROR_CODE_SUCCESS) {
                //加入会议成功
            } else {
                //加入会议失败
            }
        }
    });
    

预约会议

在已经完成 SDK 登录鉴权的状态下,预约一个新的会议。

调用 scheduleMeeting 方法预约会议并进行回调处理,您可根据错误码判断接口是否调用成功。

  • 该接口仅支持在登录鉴权成功后调用,其他情况下会调用失败。
  • 预约会议时,scheduleMeeting 接口中的参数 NEMeetingItem,必须是 createMeetingItemLive 返回的 createScheduleMeetingItem 对象。

示例代码如下:

Map<String, NEMeetingRoleType> roleBinds = new HashMap<>(); //指定用户角色类型,可以设置为 host,cohost,member
// 设置 userUuid1 的会议角色为 COHOST
roleBinds.put("accountId-1", NEMeetingRoleType.COHOST);
// 设置 userUuid2 的会议角色为 COHOST
roleBinds.put("accountId-2", NEMeetingRoleType.COHOST);

NEMeetingItem.setSubject("会议主题")	   //预约会议主题
            .setStartTime("startTime")   //预约会议开始时间
            .setEndTime("endTime")	      //预约会议结束时间								
            .setPassword("passWord")   //预约会议配置密码
            .setRoleBinds(roleBinds)   //设置角色绑定
            .setNoSip(true);            //会议是否支持 SIP 用户入会,默认为 false
NEMeetingItemSetting setting = new NEMeetingItemSetting();
setting.isAttendeeAudioOff = false; //是否使用入会时音频开关
setting.cloudRecordOn = false; //是否开启云端录制
NEMeetingItemLive live = NEMeetingKit.getInstance().getPreMeetingService().createMeetingItemLive();
live.setEnable(isLiveOn);
live.setLiveWebAccessControlLevel(isLiveLevelOpen? NEMeetingLiveAuthLevel.appToken:NEMeetingLiveAuthLevel.token);
neMeetingItem.setLive(live);
neMeetingItem.setSetting(setting);

NEMeetingKit.getInstance().getPreMeetingService().scheduleMeeting(NeMeetingItem, new ToastCallback<NEMeetingItem>() {
                    @Override
                    public void onResult(int resultCode, String resultMsg, NEMeetingItem resultData) {
                        if (resultCode == NEMeetingError.ERROR_CODE_SUCCESS) {
                            //TODO do something
                        }
                    }
                );

编辑预约会议

在已经完成 SDK 登录鉴权的状态下,编辑一个已经预约的会议。

调用 editMeeting 方法编辑会议并进行回调处理,您可根据错误码判断接口是否调用成功。

该接口仅支持在登录鉴权成功后调用,其他情况下会调用失败。

示例代码如下:

meetingItem.setSubject("新的会议主题");
NEMeetingKit.getInstance().getPreMeetingService().editMeeting(meetingItem, new ToastCallback<NEMeetingItem>() {
    @Override
    public void onResult(int resultCode, String resultMsg, NEMeetingItem resultData) {
        if (resultCode == NEMeetingError.ERROR_CODE_SUCCESS) {
            //TODO do something
        }
    }
});

取消预约会议

在已经完成 SDK 登录鉴权的状态下,取消一个已经预约的会议。

调用 cancelMeeting 方法取消预约会议并进行回调处理,您可根据错误码判断接口是否调用成功。

  • 该接口仅支持在登录鉴权成功后调用,其他情况下会调用失败。
  • 取消预约会议时,cancelMeeting 接口中的参数 meetingId 是服务端返回的唯一码,请从 NEMeetingItem#getMeetingId 处获取。
  • 您无法取消正在进行中的、处于回收状态的或已经结束的会议。

示例代码如下:

NEMeetingKit.getInstance().getPreMeetingService().cancelMeeting(meetingId, new ToastCallback<Void>() {
            @Override
            public void onResult(int resultCode, String resultMsg, Void resultData) {
                //TODO  do something
            }
        });

查询预约会议信息

在已经完成 SDK 登录鉴权的状态下,查询一个已经预约的会议的信息。

调用 getMeetingItemById 方法查询预约会议信息并进行回调处理,您可根据错误码判断接口是否调用成功。

  • 该接口仅支持在登录鉴权成功后调用,其他情况下会调用失败。
  • 查询预约会议的信息时,getMeetingItemById 接口中的参数 meetingNum 是服务端返回的会议号,请从 NEMeetingItem#getMeetingNum 处获取。

示例代码如下:

NEMeetingKit.getInstance().getPreMeetingService().getMeetingItemById(meetingNum, new ToastCallback<NEMeetingItem>() {
            @Override
            public void onResult(int resultCode, String resultMsg, NEMeetingItem resultData) {
                //TODO  do something
            }
        });

查询指定状态下的预约会议列表

在已经完成 SDK 登录鉴权的状态下,根据指定的一种或多种会议状态在已预约的所有会议基础上筛选出会议列表。

调用 getMeetingList 方法查询指定状态下的预约会议列表并进行回调处理,您可根据错误码判断接口是否调用成功。

  • 该接口仅支持在登录鉴权成功后调用,其他情况下会调用失败。
  • 调用此接口时,默认返回最近一周的指定会议列表。

示例代码如下:

List<NEMeetingItemStatus> status = new ArrayList<>();
    status.add(NEMeetingItemStatus.init);
    status.add(NEMeetingItemStatus.started);
    status.add(NEMeetingItemStatus.ended);

NEMeetingKit.getInstance().getPreMeetingService().getMeetingList(status, new ToastCallback< List<NEMeetingItem> >() {
            @Override
            public void onResult(int resultCode, String resultMsg, List<NEMeetingItem> resultData) {
                //TODO  do something
            }
        });

监听预约会议状态

通过注册预约会议状态回调接口,获取预约会议状态变更的通知。

  1. 注册回调接口 registerScheduleMeetingStatusListener 开始监听,并在回调方法中根据您的需求处理相应事件。

    该接口在初始化 SDK 成功后即可调用。

    示例代码如下:

        NEScheduleMeetingStatusListener listener = new NEScheduleMeetingStatusListener() {
    
        @Override
        public void onScheduleMeetingStatusChange(List<NEMeetingItem> changedMeetingItemList, boolean incremental) {
        //TODO do something        
        }
    };
    NEMeetingKit.getInstance().getPreMeetingService().registerScheduleMeetingStatusListener(listener);
    
  2. 反注册回调接口 unRegisterScheduleMeetingStatusListener 停止监听。

    示例代码如下:

    NEMeetingKit.getInstance().getPreMeetingService().unRegisterScheduleMeetingStatusListener(listener);
    

监听会议状态

通过注册会议状态回调接口,获取会议状态变更的通知。

  1. 注册回调接口 addMeetingStatusListener 开始监听,并在回调方法中根据您的需求处理相应事件。

    • 当回调参数 incremental 为 false 时,会议的状态为全量变更。
    • 当回调参数 incremental 为 true 时,会议的状态为增量变更。
    • 该接口在初始化 SDK 成功后即可调用。
    • 一次会议状态变更回调可能包含多个会议信息的变更。

    示例代码如下:

    NEMeetingStatusListener listener = new NEMeetingStatusListener() {
        @Override
        public void onMeetingStatusChanged(Event event) {
        //处理会议状态变更事件          
        }
    };
    NEMeetingKit.getInstance().getMeetingService().addMeetingStatusListener(listener);
    
  2. 反注册回调接口 removeMeetingStatusListener 停止监听。

    示例代码如下:

    NEMeetingKit.getInstance().getMeetingService().removeMeetingStatusListener(listener);
    

监听全局事件

通过注册全局事件回调接口,获取相应事件通知,目前支持监听 RTC 初始化和销毁相关的事件。

  1. 注册回调接口 addGlobalEventListener 开始监听,并在回调方法中根据您的需求处理相应事件。

    该接口在初始化 SDK 成功后即可调用。

    示例代码如下:

    NEMeetingKit.getInstance().addGlobalEventListener(new NEGlobalEventListener() {
    @Override
    public void beforeRtcEngineInitialize(String meetingNum, NERtcWrapper rtcWrapper) {
        //引擎初始化前回调
    }
    
    @Override
    public void afterRtcEngineInitialize(String meetingNum, NERtcWrapper rtcWrapper) {
        //引擎初始化后回调
    }
    
    @Override
    public void beforeRtcEngineRelease(String meetingNum, NERtcWrapper rtcWrapper) {
        //引擎销毁前回调
    }
    });
    
  2. 反注册回调接口 removeGlobalEventListener 停止监听。

    示例代码如下:

    NEMeetingKit.getInstance().removeGlobalEventListener(listener);
    

获取当前会议信息

在已经完成 SDK 登录鉴权的状态下,获取当前会议信息。

调用 getCurrentMeetingInfo 方法获取当前会议信息并进行回调处理。该接口的回调结果的数据类型为 NEMeetingInfo 对象类型。

请确认已经通过一种入会方式(加入会议/创建会议/匿名入会)加入到会议内,否则回调数据对象为空。

示例代码如下:

NEMeetingKit.getInstance().getMeetingService().getCurrentMeetingInfo(new NECallback<NEMeetingInfo>() {
    @Override
    public void onResult(int resultCode, String resultMsg, NEMeetingInfo resultData) {
        Log.d("OnCustomMenuListener", "getCurrentMeetingInfo:resultCode " + resultCode + "#resultData " + resultData.toString());
    }
});

监听登录状态

通过注册登录状态回调接口,获取登录状态变更的通知。

  1. 注册回调接口 addAuthListener 开始监听,并在回调方法中根据您的需求处理相应事件。

    示例代码如下:

    NEAuthListener authListener = new NEAuthListener() {
        @Override
        public void onKickOut() {
            //当前账号已在其他设备上登录
        }
    
        @Override
        public void onAuthInfoExpired() {
            //账号信息过期通知,原因为用户修改了密码,应用层随后应该重新登录
        }
    };
    NEMeetingKit.getInstance().addAuthListener(authListener);    //添加监听
    
  2. 反注册回调接口 removeAuthListener 停止监听。

    示例代码如下:

    NEMeetingKit.getInstance().removeAuthListener(authListener); //移除监听
    

注销登录

注销当前已登录的账号,返回未登录状态。

调用 logout 方法注销当前账号并进行回调处理。该接口无额外回调结果数据,您可根据错误码判断接口是否调用成功。

账号注销后,登录状态会被清空,且无法再使用该账号创建会议。

示例代码如下:

NEMeetingKit.getInstance().logout(new NECallback<Void>() {
    @Override
    public void onResult(int resultCode, String resultMsg, Void result) {
        if (resultCode == NEMeetingError.ERROR_CODE_SUCCESS) {
            //注销登录成功
        } else {
            //注销登录失败
        }
    }
});

使用会议设置服务

通过会议设置服务,设置和查询用户的当前会议设置,例如入会时的音视频开关状态、会议持续时间的显示等。

  • 每个已登录的用户有自己独立的一份会议设置项;其他所有未登录用户、匿名用户共享一份会议设置项。
  • 会议设置项仅在当前设备上保存,不会漫游。
  • 调用创建会议或加入会议方法时,若您设置 NEMeetingOptions 参数为 null,SDK 会使用会议设置服务中已保存的相关配置进行创会/入会。
  1. 调用 getSettingService 方法获取会议设置服务。

    示例代码如下:

    NESettingsService settingsService = NEMeetingKit.getInstance().getSettingsService();
    
  2. 调用不同方法设置或查询会议设置项。

    • 设置或查询通用入会设置项

      示例代码如下:

      // 设置并保存会议设置
      settingsService.enableShowMyMeetingElapseTime(true);
      settingsService.setTurnOnMyAudioWhenJoinMeeting(true);
      settingsService.setTurnOnMyVideoWhenJoinMeeting(true);
      
      //查询会议设置
      boolean showMeetingElapseTimeEnabled = settingsService.isShowMyMeetingElapseTimeEnabled();
      boolean audioEnabled = settingsService.isTurnOnMyAudioWhenJoinMeetingEnabled();
      boolean videoEnabled = settingsService.isTurnOnMyVideoWhenJoinMeetingEnabled();
      
    • 查询直播开通状态

      示例代码如下:

      /**
      * 查询直播开通状态
      * @return true-打开,false-关闭
      */
      NEMeetingKit.getInstance().getSettingsService().isMeetingLiveEnabled();
      
此文档是否对你有帮助?
有帮助
去反馈
  • 会议状态流程图
  • API 时序图
  • 初始化
  • 登录鉴权
  • 创建会议
  • 加入会议
  • 匿名入会
  • 预约会议
  • 编辑预约会议
  • 取消预约会议
  • 查询预约会议信息
  • 查询指定状态下的预约会议列表
  • 监听预约会议状态
  • 监听会议状态
  • 监听全局事件
  • 获取当前会议信息
  • 监听登录状态
  • 注销登录
  • 使用会议设置服务