跳到主要内容

快速集成

环境配置

  • Android studio 4.2+
  • Android API 21+
  • JDK 8+
  • 有效的摩云平台环境与登录账号,用户自有平台必须和摩云平台账号进行绑定后才能使用

工程配置

gradle配置

注:目前仅支持静态集成aar

  1. mosdk.aar复制到app modulelibs目录里
  2. 同时在app modulebuild.gradle中添加如下配置
dependencies {
implementation fileTree(dir: 'libs', includes: ['*.aar'])
implementation 'com.google.code.gson:gson:2.10.1'
implementation 'com.squareup.okhttp3:okhttp:3.14.9'
}

权限声明

AndroidManifest.xml中添加以下权限

<uses-feature
android:name="android.hardware.camera"
android:required="false" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />

调用流程

  1. 初始化SDK,建议在Application onCreate中执行

  2. 登录SDK进行认证连接摩云会议平台

  3. 设置好全局监听,MoNtfListener中所有监听都是平台主动推送的通知,只需要设置一次不要重复设置建议在登录成功后的主界面初始化时设置,不建议在会议界面设置监听,因为这样做可能会错过某些消息

  4. 创建或加入会议,注:入会成功之后会通过第3步的ConfListener回调其他成员与会状态

  5. 核心步骤:入会成功后通过Conferee对象的showDisplay方法来控制预览或订阅,会议界面初始化时通过MoSDK.getAllConferees()获取到所有成员列表用成员变量自行维护,见代码示例:

    MainActiviy

    //收到通知后利用自定义或第三方消息框架推送给所有需要感知该消息的界面
    MoSDK.setConfNtfListener(new MoNtfListener.ConfListener() {
    @Override
    public void onConfereeJoined(Conferee conferee) {
    //成员入会
    }

    @Override
    public void onConfereeLeft(Conferee conferee) {
    //成员离会
    }

    @Override
    public void onConfereePublishStream(Conferee conferee) {
    //成员发布码流
    }

    @Override
    public void onConfereeUnPublishStream(Conferee conferee) {
    //成员取消发布码流
    }

    @Override
    public void onRemoteCameraState(String s, boolean b) {
    //与会方摄像头状态
    }

    @Override
    public void onRemoteSlience(String s, boolean b) {
    //与会方扬声器状态
    }

    @Override
    public void onRemoteMute(String s, boolean b) {
    //与会方麦克风状态
    }

    @Override
    public void onConfFinished(int i) {
    //会议结束通知
    }

    @Override
    public void onLocalDual(Conferee conferee, boolean b, int i) {
    //本地双流发送状态
    }

    @Override
    public void onConfStatistics(ConfStatistics confStatistics) {
    //会议统计信息
    }

    @Override
    public void onVoiceIndication(Conferee conferee) {
    //语音激励
    }

    @Override
    public void onMeetingBroadCastConferee(Conferee conferee) {
    //会议广播
    }

    @Override
    public void onVmpParam(List<Conferee> list, int i, boolean b, int i1) {
    //画面合成参数
    }

    @Override
    public void onSpeakerChanged(@Nullable Conferee conferee) {
    //发言人变更
    }
    });

    MeetingActivity

    //进入会议界面初始时
    List<Conferee> list = MoSDK.getAllConferees();

    //收到有人入会通知
    conferee.setDisplay(new MDisplay(MainActivity.this));
    viewGroup.addView(conferee.getDisplay());
    list.add(conferee);

    //开启预览或订阅,无论是自己还是别人都调用此方法,SDK内部做了处理,上层调用只需关注是看还是不看
    conferee.showDisplay(true, Conferee.VideoQuality.HIGH);

    //收到有人离会通知
    conferee.showDisplay(false, null);
    viewGroup.removeView(conferee.getDisplay());
    list.remove(conferee);
  6. 会控操作,如哑音、静音、申请管理权等

  7. 离会或结会,离会仅自己退出,会议还在;结会是会议结束所有人退出,结会只有主席才能操作