快速集成
环境配置
- Android studio 4.2+
- Android API 21+
- JDK 8+
- 有效的摩云平台环境与登录账号,用户自有平台必须和摩云平台账号进行绑定后才能使用
工程配置
gradle配置
注:目前仅支持静态集成aar
- 将mosdk.aar复制到
app module
的libs
目录里 - 同时在
app module
的build.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" />
调用流程
初始化SDK,建议在
Application
onCreate
中执行登录SDK进行认证连接摩云会议平台
设置好全局监听,
MoNtfListener
中所有监听都是平台主动推送的通知,只需要设置一次不要重复设置,建议在登录成功后的主界面初始化时设置,不建议在会议界面设置监听,因为这样做可能会错过某些消息创建或加入会议,注:入会成功之后会通过第3步的
ConfListener
回调其他成员与会状态核心步骤:入会成功后通过
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);会控操作,如哑音、静音、申请管理权等
离会或结会,离会仅自己退出,会议还在;结会是会议结束所有人退出,结会只有主席才能操作