容联云通讯demo下载
1、登陆类LoginActivity,一个界面,没有太多解释
2、初始化及登陆
✾ 在程序入口初始化SDK并设置代理—初始化应该在程序完全启动(Android Application 创建完成)之后才能调用。
初始化及登录建议在一个函数体中处理,这样比较简单。在初始化及登录的过程中要做三件事:
(1)初始化sdk
(2)设置”通知回调”的监听
(3)登录
具体代码如下:(参考Demo中的SDKCoreHelper.java)
特别提醒:在初始化SDK的步骤中,第二步(设置注册参数、设置通知回调监听)和第三步(验证参数是否正确,注册)需要在第一步(初始化SDK的初始化成功的方法onInitialized中实现)
第一步:初始化SDK
// 判断SDK是否已经初始化,如果已经初始化则可以直接调用登陆接口
// 没有初始化则先进行初始化SDK,然后调用登录接口注册SDK
if(!ECDevice.isInitialized()) {
ECDevice.initial(Context, new ECDevice.InitListener() {
@Override
public void onInitialized() {
// SDK已经初始化成功
}
@Override
public void onError(Exception exception) {
// SDK 初始化失败,可能有如下原因造成
// 1、可能SDK已经处于初始化状态
// 2、SDK所声明必要的权限未在清单文件(AndroidManifest.xml)里配置、
// 或者未配置服务属性android:exported="false";
// 3、当前手机设备系统版本低于ECSDK所支持的最低版本(当前ECSDK支持
// Android Build.VERSION.SDK_INT 以及以上版本)
}
});
}
第二步:设置注册参数、设置通知回调监听
// 构建注册所需要的参数信息
//5.0.3的SDK初始参数的方法:ECInitParams params = new ECInitParams();5.1.*以上版本如下:
ECInitParams params = ECInitParams.createParams();
//自定义登录方式:
//测试阶段Userid可以填写手机
params.setUserid("用户开发的app的登录账号");
params.setAppKey("应用ID");
params.setToken("应用Token");
// 设置登陆验证模式(是否验证密码)NORMAL_AUTH-自定义方式
params.setAuthType(ECInitParams.LoginAuthType.NORMAL_AUTH);
// 1代表用户名+密码登陆(可以强制上线,踢掉已经在线的设备)
// 2代表自动重连注册(如果账号已经在其他设备登录则会提示异地登陆)
// 3 LoginMode(强制上线:FORCE_LOGIN 默认登录:AUTO)
params.setMode(ECInitParams.LoginMode.FORCE_LOGIN);
//voip账号+voip密码方式:
params.setUserid("voip账号");
params.setPwd("voip密码");
params.setAppKey("应用ID");
params.setToken("应用Token");
// 设置登陆验证模式(是否验证密码)PASSWORD_AUTH-密码登录方式
params.setAuthType(ECInitParams.LoginAuthType.PASSWORD_AUTH);
// 1代表用户名+密码登陆(可以强制上线,踢掉已经在线的设备)
// 2代表自动重连注册(如果账号已经在其他设备登录则会提示异地登陆)
// 3 LoginMode(强制上线:FORCE_LOGIN 默认登录:AUTO)
params.setMode(ECInitParams.LoginMode.FORCE_LOGIN);
// 设置登陆状态回调
params.setOnDeviceConnectListener(new ECDevice.OnECDeviceConnectListener() {
public void onConnect() {
// 兼容4.0,5.0可不必处理
}
@Override
public void onDisconnect(ECError error) {
// 兼容4.0,5.0可不必处理
}
@Override
public void onConnectState(ECDevice.ECConnectState state, ECError error) {
if(state == ECDevice.ECConnectState.CONNECT_FAILED ){
if(error.errorCode == SdkErrorCode.SDK_KICKED_OFF) {
//账号异地登陆
}
else
{
//连接状态失败
}
return ;
}
else if(state == ECDevice.ECConnectState.CONNECT_SUCCESS) {
// 登陆成功
}
}
});
// 设置SDK接收消息回调
params.setOnChatReceiveListener(new OnChatReceiveListener() {
@Override
public void OnReceivedMessage(ECMessage msg) {
// 收到新消息
}
@Override
public void OnReceiveGroupNoticeMessage(ECGroupNoticeMessage notice) {
// 收到群组通知消息(有人加入、退出...)
// 可以根据ECGroupNoticeMessage.ECGroupMessageType类型区分不同消息类型
}
@Override
public void onOfflineMessageCount(int count) {
// 登陆成功之后SDK回调该接口通知账号离线消息数
}
@Override
public void onReceiveOfflineMessage(List msgs) {
// SDK根据应用设置的离线消息拉去规则通知应用离线消息
}
@Override
public void onReceiveOfflineMessageCompletion() {
// SDK通知应用离线消息拉取完成
}
@Override
public void onServicePersonVersion(int version) {
// SDK通知应用当前账号的个人信息版本号
}
});
// 获得SDKVoIP呼叫接口
// 注册VoIP呼叫事件回调监听
ECVoIPCallManager callInterface = ECDevice.getECVoIPCallManager();
if(callInterface != null) {
callInterface.setOnVoIPCallListener(new ECVoIPCallManager.OnVoIPListener() {
@Override
public void onCallEvents(ECVoIPCallManager.VoIPCall voipCall) {
// 处理呼叫事件回调
if(voipCall == null) {
Log.e("SDKCoreHelper", "handle call event error , voipCall null");
return ;
}
// 根据不同的事件通知类型来处理不同的业务
ECVoIPCallManager.ECCallState callState = voipCall.callState;
switch (callState) {
case ECCALL_PROCEEDING:
// 正在连接服务器处理呼叫请求
break;
case ECCALL_ALERTING:
// 呼叫到达对方客户端,对方正在振铃
break;
case ECCALL_ANSWERED:
// 对方接听本次呼叫
break;
case ECCALL_FAILED:
// 本次呼叫失败,根据失败原因播放提示音
break;
case ECCALL_RELEASED:
// 通话释放[完成一次呼叫]
break;
default:
Log.e("SDKCoreHelper", "handle call event error , callState " + callState);
break;
}
}
});
}
// 注册会议消息处理监听
if(ECDevice.getECMeetingManager() != null) {
ECDevice.getECMeetingManager().setOnMeetingListener(new OnMeetingListener() {
@Override
public void onReceiveInterPhoneMeetingMsg(ECInterPhoneMeetingMsg msg) {
// 处理实时对讲消息Push
}
@Override
public void onReceiveVoiceMeetingMsg(ECVoiceMeetingMsg msg) {
// 处理语音会议消息push
}
@Override
public void onReceiveVideoMeetingMsg(ECVideoMeetingMsg msg) {
// 处理视频会议消息Push(暂未提供)
}
});
}
第三步:验证参数是否正确,注册SDK
if(params.validate()) {
// 判断注册参数是否正确
ECDevice.login(params);
}
3、LauncherActivity类:主界面类,更改内容,已达到自己所需的功能
这几天事太多,需要安静的休息两天,继续努力