容联云通讯的学习笔记一

容联云通讯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类:主界面类,更改内容,已达到自己所需的功能

这几天事太多,需要安静的休息两天,继续努力

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值