首先我们需要申请Android MeetingKit 源码Zip包,并解压缩到本地目录。
将libs/xymeetingkit 文件夹拷贝至项目目录下, 添加module引用, 可以根据实际文件目录修改projectDir.
include ':base', ':base:xyapp', ':base:uikit'
project(':base').projectDir = new File('xymeetingkit/base')
project(':base:xyapp').projectDir = new File('xymeetingkit/base/xyapp')
project(':base:uikit').projectDir = new File('xymeetingkit/base/uikit')
include ':common', ':common:effect', ':common:safekeyboard', ':common:fulllayer', ':common:addmore', ':common:nettest'
include ':common:labellayer', ':common:noticelayer', ':common:contentlayer', ':common:meetingmenu'
include ':common:whiteboard', ':common:meetinglayout', ':common:annotation', ':common:live', ':common:meetinglanguage'
include ':common:face', ':common:sharecontent', ':common:chat', ':common:signanswer',':common:settings'
include ':common:contact'
project(':common').projectDir = new File('xymeetingkit/common')
project(':common:effect').projectDir = new File('xymeetingkit/common/effect')
project(':common:safekeyboard').projectDir = new File('xymeetingkit/common/safekeyboard')
project(':common:fulllayer').projectDir = new File('xymeetingkit/common/fulllayer')
project(':common:addmore').projectDir = new File('xymeetingkit/common/addmore')
project(':common:nettest').projectDir = new File('xymeetingkit/common/nettest')
project(':common:labellayer').projectDir = new File('xymeetingkit/common/labellayer')
project(':common:noticelayer').projectDir = new File('xymeetingkit/common/noticelayer')
project(':common:contentlayer').projectDir = new File('xymeetingkit/common/contentlayer')
project(':common:meetingmenu').projectDir = new File('xymeetingkit/common/meetingmenu')
project(':common:whiteboard').projectDir = new File('xymeetingkit/common/whiteboard')
project(':common:meetinglayout').projectDir = new File('xymeetingkit/common/meetinglayout')
project(':common:annotation').projectDir = new File('xymeetingkit/common/annotation')
project(':common:live').projectDir = new File('xymeetingkit/common/live')
project(':common:meetinglanguage').projectDir = new File('xymeetingkit/common/meetinglanguage')
project(':common:face').projectDir = new File('xymeetingkit/common/face')
project(':common:sharecontent').projectDir = new File('xymeetingkit/common/sharecontent')
project(':common:chat').projectDir = new File('xymeetingkit/common/chat')
project(':common:signanswer').projectDir = new File('xymeetingkit/common/signanswer')
project(':common:settings').projectDir = new File('xymeetingkit/common/settings/')
project(':common:contact').projectDir = new File('xymeetingkit/common/contact/')
include ':meetingkit'
project(':meetingkit').projectDir = new File('xymeetingkit/meetingkit')
增加功能运行所需要的权限.
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission
android:name="android.permission.POST_NOTIFICATIONS"
android:minSdkVersion="33" />
<uses-permission
android:name="android.permission.READ_MEDIA_AUDIO"
android:minSdkVersion="33" />
<uses-permission
android:name="android.permission.READ_MEDIA_VIDEO"
android:minSdkVersion="33" />
<uses-permission
android:name="android.permission.READ_MEDIA_IMAGES"
android:minSdkVersion="33" />
<uses-permission
android:name="android.permission.WRITE_MEDIA"
android:minSdkVersion="33" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
XYRTCEngineEventHandler eventHandler = new XYRTCEngineEventHandler() {
@Override
public void onSDKInitSuccess() {
super.onSDKInitSuccess();
}
@Override
public void onSDKInitFail(String errorCode, String reason) {
super.onSDKInitFail(errorCode, reason);
}
};
Settings settings = new Settings.Builder()
.setExtId(enterpriseId) //企业ID
.setClientId(clientId) //
.setClientSecret(clientSecret) //
.setUiNeedSpeakers(true) //会中发言
.setVideoConfig(VideoConfig.VD_1280x720)
.setHost(server)
.setPort(port)
//... 多个设置项
.build();
XYRTCEngine.getInstance().create(context, settings, eventHandler);
XYRTCEngineEventHandler eventHandler = new XYRTCEngineEventHandler() {
@Override
public void onLoginFail(String errorCode, String reason) {
super.onLoginFail(errorCode, reason);
//登录失败
}
@Override
public void onLoginSuccess(UserInfo userInfo) {
super.onLoginSuccess(userInfo);
//登录成功
}
};
//注册登录回调
XYRTCEngine.getInstance().addHandler(eventHandler);
//登录
XYRTCEngine.getInstance().loginExternalAccount(String externalUserId, String displayName);
//登录完成,反注册登录回调
XYRTCEngine.getInstance().removeHandler(eventHandler);
1. 普通入会只需要配置音视频状态、会议号、会议密码、等参数.
String number = "xxxx"; //会议号
String password = ""; //入会密码
boolean micMute = true; //麦克风状态
boolean videoMute = true; //摄像头状态
XYMeetingKit.joinMeeting(activity, number, password, videoMute, micMute);
2. 自定义多属性配置入会
CallMeetingParam meetingParam = new CallMeetingParam();
meetingParam.setConferenceNo("xxx"); //会议号
meetingParam.setMeetingPwd("xxx");//入会密码
// ....设置多种参数
MeetingKitCallback meetingKitCallback = new MeetingKitCallback() {
@Override
public UserInfo getUserInfo() {
//用户信息
return null;
}
@Override
public MeetingKitUiConfig getMeetingKitUiConfig() {
//自定义ui配置
return null;
}
// ....实现自定义回调
};
MeetingKitEngine meetingKitEngine = new MeetingFactory().get(activity);
meetingKitEngine.setMeetingCallback(meetingKitCallback);
meetingKitEngine.startMeeting(activity, meetingParam);
3. 会外来电入会
XYRTCEngineEventHandler eventHandler= new XYRTCEngineEventHandler() {
@Override
public void onMeetingInvited(InvitationInfo info) {
super.onMeetingInvited(info);
XYMeetingKit.joinMeeting(activity, info);
}