Repository navigation
callback
zanxiaofei edited this page Dec 21, 2016
·
2 revisions
连麦的过程中有很多状态变化,可以获得是否注册成功、是否正常建立连接等事件。
通过注册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;
}
}
};通过注册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();
}
}