Skip to content

callback

zanxiaofei edited this page Dec 21, 2016 · 2 revisions

连麦的过程中有很多状态变化,可以获得是否注册成功、是否正常建立连接等事件。

vRTC1.5.0版本

通过注册RTCClient.RTCErrorListener和RTCClient.RTCEventChangedListener

  • RTCClient.RTCEventChangedListener回调,状态变更的回调
名称 数值 含义 arg1
RTCClient.RTC_EVENT_REGISTED 1 连麦注册成功 N/A
RTCClient.RTC_EVENT_STARTED 3 连麦call成功 N/A
RTCClient.RTC_EVENT_CALL_COMMING 5 远端发起连麦call N/A
RTCClient.RTC_EVENT_STOPPED 4 断开连麦结束 断开状态码
RTCClient.RTC_EVENT_UNREGISTED 2 反注册结束 反注册状态码
  • RTCClient.RTCErrorListener回调,错误回调
名称 数值 含义 arg1
RTCClient.RTC_ERROR_AUTH_FAILED -1 连麦Auth信息获取失败,注册失败 N/A
RTCClient.RTC_ERROR_REGISTED_FAILED -2 注册失败 失败错误码
RTCClient.RTC_ERROR_SERVER_ERROR -4 连麦异常断开 N/A
RTCClient.RTC_ERROR_CONNECT_FAIL -5 连麦异常超时断开 N/A
RTCClient.RTC_ERROR_STARTED_FAILED -3 连麦call失败 call失败错误码
  • 常见状态及错误码
名称 数值 含义
RTCClient.RTC_RESPOSE_SUCCESS 200 成功
RTCClient.RTC_RESPOSE_ERROR_REGISTER_AUTH_FAILED -1001 获取auth信息错误
RTCClient.RTC_RESPOSE_ERROR_REGISTER_AUTH_PARSE_FAILED -1002 auth解析失败
RTCClient.RTC_RESPOSE_ERROR_STARTED_FAILED_PARSE_FAILED -1003 获取被call信息失败
RTCClient.RTC_RESPOSE_ERROR_CALL_BREAK -1004 连麦call断开
RTCClient.RTC_RESPOSE_ERROR_CALL_TIME_OUT -1005 连麦call断开
RTCClient.RTC_RESPOSE_ERROR_NO_USER 404 NOT Found, the destination user is not existed
RTCClient.RTC_RESPOSE_ERROR_TIMER_OUT 408 Request timeout, could not find the destination in time.
RTCClient.RTC_RESPOSE_ERROR_USER_NO_ONLINE 420 Bad extension, the destination user is not online
RTCClient.RTC_RTC_RESPOSE_ERROR_NETWORK_DISCONNECT 477 Send fail, socket error, the network is disconnected
RTCClient.RTC_RESPOSE_ERROR_CAN_NOT_CONNECT_CALLEE 486 Busy Here, the callee is busy
RTCClient.RTC_RESPOSE_ERROR_SERVER_ERROR 500 Server internal error
RTCClient.RTC_RESPOSE_ERROR_SERVER_TIMEOUT 504 Server timeout
 private RTCClient.RTCEventChangedListener mRTCEventListener = new RTCClient.RTCEventChangedListener() {
        @Override
        public void onEventChanged(int event, Object arg1) {
            switch (event) {
                case RTCClient.RTC_EVENT_REGISTED:
                    doRegisteredSuccess();
                    break;
                case RTCClient.RTC_EVENT_STARTED:
                    doStartCallSuccess();
                    break;
                case RTCClient.RTC_EVENT_CALL_COMMING:
                    doReceiveRemoteCall(String.valueOf(arg1));
                    break;
                case RTCClient.RTC_EVENT_STOPPED:
                    Log.d(TAG, "stop result:" + arg1);
                    doStopCallResult();
                    break;
                case RTCClient.RTC_EVENT_UNREGISTED:
                    Log.d(TAG, "unregister result:" + arg1);
                    doUnRegisteredResult();
                    break;
                default:
                    break;
            }

        }
    };

    private RTCClient.RTCErrorListener mRTCErrorListener = new RTCClient.RTCErrorListener() {
        @Override
        public void onError(int errorType, int arg1) {
            switch (errorType) {
                case RTCClient.RTC_ERROR_AUTH_FAILED:
                    doAuthFailed();
                    break;
                case RTCClient.RTC_ERROR_REGISTED_FAILED:
                    doRegisteredFailed(arg1);
                    break;
                case RTCClient.RTC_ERROR_SERVER_ERROR:
                case RTCClient.RTC_ERROR_CONNECT_FAIL:
                    doRTCCallBreak();
                    break;
                case RTCClient.RTC_ERROR_STARTED_FAILED:
                    doStartCallFailed(arg1);
                    break;
                default:
                    break;
            }
        }
    };

v3.x版本

通过注册RTCEngineEventListener,

   
   mStreamer.registerRTCEventListener(this);

   @Override
    public void onRegister(int status) {
        //注册的回调,status为200表示注册成功
        mHandler.obtainMessage(MSG_MAIN_REGISTER, status, 0).sendToTarget();
    }

    @Override
    public void onUnregister(int status) {
        //反注册的回调,status为200表示注册成功
    }


    @Override
    public void onCallStart(int status) {
        //通话开始的回调,status为200表示注册成功
        if (status == 200) {
            mRTCConnecting = true;
        }
        mHandler.obtainMessage(MSG_MAIN_START_CALL, status, 0).sendToTarget();
    }


    @Override
    public void onCallStop(int status) {
        //通话结束的回调,status为200表示注册成功
        mRTCConnecting = false;
        mHandler.obtainMessage(MSG_MAIN_STOP_CALL, status, 0).sendToTarget();
    }


    @Override
    public void onIncomingCall(String remoteURI) {
       //来电的回调,status为200表示注册成功
       mHandler.obtainMessage(MSG_MAIN_INCOMMING_CALL, remoteURI).sendToTarget();
    }

    @Override
    public void onServiceError() {
       //对方断网的回调
        mRTCConnecting = false;
        mHandler.obtainMessage(MSG_MAIN_RTC_BREAK, 0).sendToTarget();
    }

    @Override
    public void onDataChannelConnectChange(int status) {
       //数据通路连接状态变化的回调
        Log.d(TAG,"--------onDataChannelConnectChange status = " + status);
    }

    @Override
    public void onAuthFailed() {
        //认证的回调
        if (mHandler != null) {
            mHandler.obtainMessage(MSG_MAIN_AUTH_FAILED).sendToTarget();
        }
    }

Clone this wiki locally