暖暖视频免费观**,国产免费美女被艹视频,毛片一级毛片,不卡三级

智慧服務(wù),成就美好體驗(yàn) 項(xiàng)目咨詢

主頁(yè) > 服務(wù)與支持 > 開發(fā)平臺(tái) > 客戶端SDK參考 > Android Native SDK > 附錄 事件通知

入門使用

事件通知

更新時(shí)間:2019-12-10

所有的事件通知都屬于TsdkNotify(業(yè)務(wù)事件通知接口類)。

表1 登錄事件通知

接口名稱

接口描述

onEvtAuthSuccess

鑒權(quán)成功。

onEvtAuthFailed

鑒權(quán)失敗。

onEvtAuthRefreshFailed

鑒權(quán)刷新失敗。

onEvtLoginSuccess

登錄成功。

onEvtLoginFailed

登錄失敗。

onEvtLogoutSuccess

登出成功。

onEvtLogoutFailed

登出失敗。

onEvtForceLogout

強(qiáng)制登出通知(帳號(hào)被踢)。

onEvtVoipAccountStatus

VoIP帳號(hào)狀態(tài)信息。

onEvtFirewallDetectFailed

防火墻探測(cè)失敗。

onEvtBuildStgTunnelFailed

創(chuàng)建stg通道失敗。

onEvtSecurityTunnelInfoInd

安全隧道信息通知。

onEvtModifyPasswordResult

密碼修改結(jié)果。

onEvtLoginResumingInd

登錄狀態(tài)恢復(fù)中通知。

onEvtLoginResumeResult

登錄狀態(tài)恢復(fù)結(jié)果。

表2 音視頻呼叫通知

接口名稱

接口描述

onEvtCallStartResult

呼叫結(jié)果

onEvtCallIncoming

來(lái)電事件

onEvtCallOutgoing

呼出事件

onEvtCallRingback

回鈴音事件

onEvtCallRtpCreated

RTP創(chuàng)建事件

onEvtCallConnected

通話建立事件

onEvtCallEnded

通話結(jié)束

onEvtCallDestroy

呼叫銷毀事件

onEvtOpenVideoReq

音頻轉(zhuǎn)視頻請(qǐng)求

onEvtRefuseOpenVideoInd

遠(yuǎn)端拒絕音頻轉(zhuǎn)視頻

onEvtCloseVideoInd

關(guān)閉視頻(視頻轉(zhuǎn)音頻)通知

onEvtOpenVideoInd

打開視頻(音頻轉(zhuǎn)視頻)通知

onEvtRefreshViewInd

刷新窗口信息通知

onEvtCallRouteChange

呼叫路由變更通知

onEvtPlayMediaEnd

音頻文件播放結(jié)束通知

onEvtSessionModified

會(huì)話修改完成通知

onEvtSessionCodec

會(huì)話正在使用的codec通知

onEvtHoldSuccess

呼叫保持成功事件

onEvtHoldFailed

呼叫保持失敗事件

onEvtUnholdSuccess

取消呼叫保持成功事件

onEvtUnholdFailed

取消呼叫保持失敗事件

onEvtEndcallFailed

結(jié)束呼叫失敗事件

onEvtDivertFailed

偏轉(zhuǎn)失敗事件

onEvtBldTransferSuccess

盲轉(zhuǎn)成功事件

onEvtBldTransferFailed

盲轉(zhuǎn)失敗事件

onEvtStatisticInfo

呼叫統(tǒng)計(jì)信息上報(bào)

表3 會(huì)議事件通知

接口名稱

接口描述

onEvtBookConfResult

預(yù)約會(huì)議結(jié)果

onEvtQueryConfListResult

查詢會(huì)議列表結(jié)果

onEvtQueryConfDetailResult

查詢會(huì)議詳情結(jié)果

onEvtJoinConfResult

加入會(huì)議結(jié)果

onEvtGetDataconfParamResult

獲取數(shù)據(jù)會(huì)議入會(huì)參數(shù)結(jié)果

onEvtConfctrlOperationResult

會(huì)控操作結(jié)果

onEvtInfoAndStatusUpdate

會(huì)議信息及狀態(tài)更新

onEvtSpeakerInd

獲取發(fā)言方通知

onEvtRequestConfRightFailed

申請(qǐng)會(huì)控權(quán)限失敗

onEvtConfIncomingInd

會(huì)議來(lái)電通知

onEvtConfEndInd

會(huì)議結(jié)束通知

onEvtJoinDataConfResult

加入數(shù)據(jù)會(huì)議結(jié)果

onEvtAsStateChange

應(yīng)用共享狀態(tài)通知

onEvtAsOwnerChange

共享者變更通知。

onEvtDsDocNew

新建共享文檔通知

onEvtDsDocDel

刪除共享文檔通知

onEvtWbDocNew

新建白板文檔通知

onEvtDsDocDel

刪除白板文檔通知

onEvtRecvChatMsg

聊天消息通知

onEvtGetTempUserResult

獲取臨時(shí)帳號(hào)結(jié)果

onEvtTransToConfResult

呼叫轉(zhuǎn)成會(huì)議結(jié)果

onEvtSvcWatchInfoInd

SVC(多流)會(huì)議下正在觀看畫面信息通知

onEvtShareStatisticInfo

共享統(tǒng)計(jì)信息上報(bào)

onEvtConfResumingInd

會(huì)議恢復(fù)中通知

onEvtConfResumeResult

會(huì)議恢復(fù)(重新加入)結(jié)果

表4 企業(yè)通訊錄事件通知

接口名稱

接口描述

onEvtSearchContactsResult

查詢聯(lián)系人結(jié)果。

onEvtGetIconResult

獲取頭像結(jié)果。

onEvtAuthSuccess

接口描述

鑒權(quán)成功。

注意事項(xiàng)

用于呈現(xiàn)登錄過(guò)程,應(yīng)用層一般無(wú)需處理。

方法定義

void onEvtAuthSuccess(long userId, TsdkImLoginParam imLoginParam); 
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

imLoginParam

TsdkImLoginParam

IM帳號(hào)信息參數(shù),用于支持原子級(jí)IM SDK兼容,只要鑒權(quán)結(jié)果中存在就返回。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtAuthSuccess(int userId, TsdkImLoginParam imAccountLoginParam) {
    LogUtil.e(TAG, "authorize success.");
    // 啟動(dòng)IM的登錄
    if (TsdkManager.getInstance().getAppInfo().getSupportIm() == 1 && null != imLoginParam) {
        ImAccountInfo imAccountInfo = new ImAccountInfo();
        imAccountInfo.setAccount(imLoginParam.getAccount());
        imAccountInfo.setToken(imLoginParam.getToken());
        String[] MaaUri = imLoginParam.getMaaServerUri().split(":");
        imAccountInfo.setMaaServer(MaaUri[0]);
        imAccountInfo.setMaaServerPort(Integer.valueOf(MaaUri[1]));
        imAccountInfo.setPassword(imLoginParam.getPassword());
        imAccountInfo.setPushServer(imLoginParam.getPushServerUri());

        sendHandlerMessage(LoginEvent.LOGIN_E_EVT_AUTH_SUCCESS.getIndex(), imAccountInfo);
    }
}
 

onEvtAuthFailed

接口描述

鑒權(quán)失敗。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtAuthFailed(long userId, TsdkCommonResult result); 
 

參數(shù)描述

參數(shù)名

類型

描述

result

TsdkCommonResult

結(jié)果。

userId

long

用戶ID。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtAuthFailed(int userId, TsdkCommonResult result) {
    LogUtil.e(TAG, "authorize failed: " + result.getReasonDescription());
    this.loginEventNotifyUI.onLoginEventNotify(LoginConstant.LoginUIEvent.LOGIN_FAILED, result.getResult(), result.getReasonDescription());
}
 

onEvtAuthRefreshFailed

接口描述

鑒權(quán)刷新失敗。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtAuthRefreshFailed(long userId, TsdkCommonResult result); 
 

參數(shù)描述

參數(shù)名

類型

描述

result

TsdkCommonResult

結(jié)果。

userId

long

用戶ID。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtAuthRefreshFailed(int userId, TsdkCommonResult result) {
    LogUtil.e(TAG, "refresh token failed:" + result.getReasonDescription());

    this.logout();
    this.loginEventNotifyUI.onLoginEventNotify(LoginConstant.LoginUIEvent.LOGOUT, 0, result.getReasonDescription());

}
 

onEvtLoginSuccess

接口描述

登錄成功。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtLoginSuccess(long userId, TsdkServiceAccountType serviceAccountType, TsdkLoginSuccessInfo loginSuccessInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

serviceAccountType

TsdkServiceAccountType

服務(wù)帳號(hào)類型。

loginSuccessInfo

TsdkLoginSuccessInfo

登錄成功信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtLoginSuccess(int userId, TsdkServiceAccountType serviceAccountType, TsdkLoginSuccessInfo loginSuccessInfo) {
        Log.i(TAG, "onEvtLoginSuccess notify.");
        LoginMgr.getInstance().handleLoginSuccess(userId, serviceAccountType, loginSuccessInfo);
    }
 

onEvtLoginFailed

接口描述

登錄失敗。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtLoginFailed(long userId, TsdkServiceAccountType serviceAccountType, TsdkLoginFailedInfo loginFailedInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

serviceAccountType

TsdkServiceAccountType

服務(wù)帳號(hào)類型。

loginFailedInfo

TsdkLoginFailedInfo

登錄失敗信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtLoginFailed(int userId, TsdkServiceAccountType serviceAccountType, TsdkLoginFailedInfo loginFailedInfo) {
        Log.i(TAG, "onEvtLoginFailed notify.");
        LoginMgr.getInstance().handleLoginFailed(userId, serviceAccountType, loginFailedInfo);
    }
 

onEvtLogoutSuccess

接口描述

登出成功。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtLogoutSuccess(long userId, TsdkServiceAccountType serviceAccountType); 
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

serviceAccountType

TsdkServiceAccountType

服務(wù)帳號(hào)類型。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtLogoutSuccess(int userId, TsdkServiceAccountType serviceAccountType) {
        Log.i(TAG, "onEvtLogoutSuccess notify.");
        LoginMgr.getInstance().handleLogoutSuccess(userId, serviceAccountType);
    }
 

onEvtLogoutFailed

接口描述

登出失敗。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtLogoutFailed(long userId, TsdkCommonResult result); 
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

result

TsdkCommonResult

結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
public void handleLogoutFailed(int userId, TsdkCommonResult result) {
        LogUtil.e(TAG, "logout failed: " + result.getReasonDescription());
    }
 

onEvtForceLogout

接口描述

強(qiáng)制登出通知(帳號(hào)被強(qiáng)制登出)。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtForceLogout(long userId, TsdkServiceAccountType serviceAccountType, TsdkForceLogoutInfo forceLogoutInfo); 
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

serviceAccountType

TsdkServiceAccountType

服務(wù)帳號(hào)類型。

forceLogoutInfo

TsdkForceLogoutInfo

強(qiáng)制登出信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtForceLogout(int userId, TsdkServiceAccountType serviceAccountType, TsdkForceLogoutInfo forceLogoutInfo) {
        Log.i(TAG, "onEvtForceLogout notify.");
        LoginMgr.getInstance().handleForceLogout(userId);
    }
 

onEvtVoipAccountStatus

接口描述

VoIP帳號(hào)狀態(tài)信息。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtVoipAccountStatus(long userId, TsdkVoipAccountInfo voipAccountInfo); 
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

voipAccountInfo

TsdkVoipAccountInfo

VoIP帳號(hào)信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtVoipAccountStatus(int userId, TsdkVoipAccountInfo voipAccountInfo ) {
    LogUtil.e(TAG, "voip account status: " );

    this.sipNumber = voipAccountInfo.getNumber();
    if (!voipAccountInfo.getTerminal().equals("")) {
        this.terminal = voipAccountInfo.getTerminal();
    }
}
 

onEvtFirewallDetectFailed

接口描述

防火墻探測(cè)失敗。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtFirewallDetectFailed(long userId, TsdkCommonResult result);
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

result

TsdkCommonResult

結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
public void handleFirewallDetectFailed(int userId, TsdkCommonResult result) {
        LogUtil.e(TAG, "firewall detect failed: " + result.getReasonDescription());
        this.loginEventNotifyUI.onLoginEventNotify(LoginConstant.LoginUIEvent.FIREWALL_DETECT_FAILED, result.getResult(), result.getReasonDescription());
    }
 

onEvtBuildStgTunnelFailed

接口描述

創(chuàng)建STG通道失敗。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtBuildStgTunnelFailed(long userId, TsdkCommonResult result);
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

result

TsdkCommonResult

結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
public void handleBuildStgTunnelFailed(int userId, TsdkCommonResult result) {
        LogUtil.e(TAG, "build stg failed: " + result.getReasonDescription());
        this.loginEventNotifyUI.onLoginEventNotify(LoginConstant.LoginUIEvent.BUILD_STG_FAILED, result.getResult(), result.getReasonDescription());
    }
 

onEvtSecurityTunnelInfoInd

接口描述

安全隧道信息通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtSecurityTunnelInfoInd(long userId, long firewallMode, TsdkSecurityTunnelInfo securityTunnelInfo); 
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

firewallMode

long

防火墻模式。

securityTunnelInfo

TsdkSecurityTunnelInfo

安全隧道信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleSecurityTunnelInfoInd(int userId, int firewallMode, TsdkSecurityTunnelInfo securityTunnelInfo) {
        LogUtil.i(TAG, "security tunnel info: " + userId + firewallMode);

    }
 

onEvtModifyPasswordResult

接口描述

密碼修改結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtModifyPasswordResult(long userId, TsdkCommonResult result);
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

result

TsdkCommonResult

結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
@Override
public void onEvtModifyPasswordResult(int userId, final TsdkCommonResult result) {
	Log.i(TAG, "onEvtModifyPasswordResult notify.");
	LoginMgr.getInstance().handModifyPasswordResult(result);
}
 

onEvtLoginResumingInd

接口描述

登錄狀態(tài)恢復(fù)中通知(一般在網(wǎng)絡(luò)發(fā)生變化時(shí)觸發(fā))。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtLoginResumingInd(long userId);
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

返回值

無(wú)。

代碼示例

//Java code
@Override
public void onEvtLoginResumingInd(long userId) {
	LogUtil.i(TAG, "onEvtLoginResumingInd notify.");
	LoginMgr.getInstance().handLoginResumingInd((int)userId);
}
 

onEvtLoginResumeResult

接口描述

登錄狀態(tài)恢復(fù)結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtLoginResumeResult(long userId, TsdkCommonResult result);
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

result

TsdkCommonResult

結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
@Override
public void onEvtLoginResumeResult(long userId, TsdkCommonResult result) {
	LogUtil.i(TAG, "onEvtLoginResumeResult notify.");
	LoginMgr.getInstance().handLoginResumeResult(result);
}
 

onEvtCallStartResult

接口描述

呼叫結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtCallStartResult(TsdkCall call, TsdkCommonResult result); 
 

參數(shù)描述

參數(shù)名

類型

描述

result

TsdkCommonResult

結(jié)果。

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
None
 

onEvtCallIncoming

接口描述

來(lái)電事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtCallIncoming(TsdkCall call, Boolean maybeVideoCall); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

maybeVideoCall

Boolean

是否是視頻。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtCallIncoming(TsdkCall call, Boolean maybeVideoCall){
    Log.i(TAG, "onCallComing");
    if (null == call)
    {
        Log.e(TAG, "onCallComing call is null");
        return;
    }
    Session newSession = new Session(call);
    putCallSessionToMap(newSession);

    CallInfo callInfo = getCallInfo(call);
    callInfo.setMaybeVideoCall(maybeVideoCall);

    mCallNotification.onCallEventNotify(CallConstant.CallEvent.CALL_COMING, callInfo);
}
 

onEvtCallOutgoing

接口描述

呼出事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtCallOutgoing(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtCallOutgoing(TsdkCall call){
    Log.i(TAG, "onCallGoing");
    if (null == call)
    {
        Log.e(TAG, "tupCall obj is null");
        return;
    }
    CallInfo callInfo = getCallInfo(call);
    mCallNotification.onCallEventNotify(CallConstant.CallEvent.CALL_GOING, callInfo);
}
 

onEvtCallRingback

接口描述

回鈴音事件。

注意事項(xiàng)

在需要APP播放回鈴音時(shí)上報(bào)。

方法定義

void onEvtCallRingback(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtCallRingback(TsdkCall call){
    Log.i(TAG, "onCallRingBack");
    if (null == call)
    {
        Log.e(TAG, "onCallRingBack call is null");
        return;
    }
        if (null != mCallNotification)
        {
            mCallNotification.onCallEventNotify(CallConstant.CallEvent.PLAY_RING_BACK_TONE, null);
        }
}
 

onEvtCallRtpCreated

接口描述

RTP創(chuàng)建事件。

注意事項(xiàng)

RTP通道已建立,可以進(jìn)行二次撥號(hào)。

方法定義

void onEvtCallRtpCreated(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtCallRtpCreated(TsdkCall call){
    Log.i(TAG, "onCallRTPCreated");
    if (null == call)
    {
        Log.e(TAG, "tupCall obj is null");
        return;
    }

    CallInfo callInfo = getCallInfo(call);

    mCallNotification.onCallEventNotify(CallConstant.CallEvent.RTP_CREATED, callInfo);
}
 

onEvtCallConnected

接口描述

通話建立事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtCallConnected(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtCallConnected(TsdkCall call){
    Log.i(TAG, "onCallConnected");
    if (null == call)
    {
        Log.e(TAG, "call obj is null");
        return;
    }

    CallInfo callInfo = getCallInfo(call);
    Session callSession = getCallSessionByCallID(call.getCallInfo().getCallId());
    if (callSession == null)
    {
        Log.e(TAG, "call session obj is null");
        return;
    }

    if (callInfo.isVideoCall())
    {
        callSession.setCallStatus(CallConstant.CallStatus.VIDEO_CALLING);
    }
    else
    {
        callSession.setCallStatus(CallConstant.CallStatus.AUDIO_CALLING);
    }

    mCallNotification.onCallEventNotify(CallConstant.CallEvent.CALL_CONNECTED, callInfo);
}
 

onEvtCallEnded

接口描述

通話結(jié)束。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtCallEnded(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtCallEnded(TsdkCall call){
    Log.i(TAG, "onCallEnded");
    if (null == call)
    {
        Log.e(TAG, "onCallEnded call is null");
        return;
    }
    CallInfo callInfo = getCallInfo(call);
    mCallNotification.onCallEventNotify(CallConstant.CallEvent.CALL_ENDED, callInfo);
}
 

onEvtCallDestroy

接口描述

呼叫銷毀事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtCallDestroy(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtCallDestroy(TsdkCall call){
    Log.i(TAG, "onCallDestroy");
    if (null == call)
    {
        Log.e(TAG, "call obj is null");
        return;
    }
    Session callSession = getCallSessionByCallID(call.getCallInfo().getCallId());
    if (callSession == null)
    {
        Log.e(TAG, "call session obj is null");
        return;
    }

    //從會(huì)話列表中移除一路會(huì)話
    removeCallSessionFromMap(callSession);
}
 

onEvtOpenVideoReq

接口描述

遠(yuǎn)端請(qǐng)求打開視頻(音頻通話升級(jí)為視頻通話)。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtOpenVideoReq(TsdkCall call, TsdkVideoOrientation orientType); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

orientType

TsdkVideoOrientation

視頻方向(橫豎屏狀態(tài))。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtOpenVideoReq(TsdkCall call, TsdkVideoOrientation orientType){
    Log.i(TAG, "onCallAddVideo");
    if (null == call)
    {
        Log.e(TAG, "onCallAddVideo tupCall is null");
        return;
    }

    //音頻轉(zhuǎn)視頻
    Session callSession = getCallSessionByCallID(call.getCallInfo().getCallId());
    if (callSession == null)
    {
        Log.e(TAG, "call session obj is null");
        return;
    }

    CallConstant.CallStatus callStatus = callSession.getCallStatus();
    boolean isSupportVideo = isSupportVideo();

    if ((!isSupportVideo) || (CallConstant.CallStatus.AUDIO_CALLING != callStatus))
    {
        callSession.rejectAddVideo();
        return;
    }

    mCallNotification.onCallEventNotify(CallConstant.CallEvent.RECEIVED_REMOTE_ADD_VIDEO_REQUEST, null);

}
 

onEvtRefuseOpenVideoInd

接口描述

遠(yuǎn)端拒絕音頻轉(zhuǎn)視頻。

注意事項(xiàng)

遠(yuǎn)端拒絕請(qǐng)求打開視頻通知(遠(yuǎn)端用戶拒絕或超時(shí)未響應(yīng))。

方法定義

void onEvtRefuseOpenVideoInd(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtRefuseOpenVideoInd(TsdkCall call){

    VideoMgr.getInstance().clearCallVideo();

    Session callSession = getCallSessionByCallID(call.getCallInfo().getCallId());
    callSession.setCallStatus(CallConstant.CallStatus.AUDIO_CALLING);

    CallInfo callInfo = getCallInfo(call);
    mCallNotification.onCallEventNotify(CallConstant.CallEvent.REMOTE_REFUSE_ADD_VIDEO_SREQUEST, callInfo);

}
 

onEvtCloseVideoInd

接口描述

關(guān)閉視頻(視頻轉(zhuǎn)音頻)通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtCloseVideoInd(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtCloseVideoInd(TsdkCall call){
    if (null == call)
    {
        Log.e(TAG, "onCallDelVideo tupCall is null");
        return;
    }

    Session callSession = getCallSessionByCallID(call.getCallInfo().getCallId());
    if (callSession == null)
    {
        Log.e(TAG, "call session obj is null");
        return;
    }

    callSession.setCallStatus(CallConstant.CallStatus.AUDIO_CALLING);

    //Clear video data
    VideoMgr.getInstance().clearCallVideo();

    if (null != mCallNotification)
    {
        CallInfo callInfo = getCallInfo(call);
        mCallNotification.onCallEventNotify(CallConstant.CallEvent.CLOSE_VIDEO, callInfo);
    }

    if (callSession.isVideoHold())
    {
        callSession.holdCall();
    }
}
 

onEvtOpenVideoInd

接口描述

打開視頻(音頻轉(zhuǎn)視頻)通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtOpenVideoInd(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtOpenVideoInd(TsdkCall call){
    int isVideo = call.getCallInfo().getIsVideoCall(); // 1:video, 0: audio
    int callId  = call.getCallInfo().getCallId();
    Log.i(TAG,  "isVideo: " + isVideo + "callId: " + callId);

    Session callSession = getCallSessionByCallID(callId);
    if (callSession == null)
    {
        return;
    }
    CallInfo callInfo = getCallInfo(call);//audio --> video success
    Log.i(TAG, "Upgrade To Video Call");
    VideoMgr.getInstance().setVideoOrient(callId, CallConstant.FRONT_CAMERA);

    callSession.setCallStatus(CallConstant.CallStatus.VIDEO_CALLING);
    mCallNotification.onCallEventNotify(CallConstant.CallEvent.OPEN_VIDEO, callInfo);
}
 

onEvtRefreshViewInd

接口描述

刷新窗口信息通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtRefreshViewInd(TsdkCall call, TsdkVideoViewRefresh refreshInfo); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

refreshInfo

TsdkVideoViewRefresh

視頻刷新事件信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtRefreshViewInd(TsdkCall call, TsdkVideoViewRefresh refreshInfo){
    Log.i(TAG, "refreshLocalView");
    int mediaType = refreshInfo.getViewType();
    int eventType = refreshInfo.getEvent();
    int callId = call.getCallInfo().getCallId();

    switch (mediaType)
    {
        case 1: //local video preview
        case 2: //general video
            if (eventType == 1) //add local view
            {
                //VideoDeviceManager.getInstance().refreshLocalVideo(true, callId);
                mCallNotification.onCallEventNotify(CallConstant.CallEvent.ADD_LOCAL_VIEW, callId);
            }
            else //remove local view
            {
                //VideoDeviceManager.getInstance().refreshLocalVideo(false, callId);
                mCallNotification.onCallEventNotify(CallConstant.CallEvent.DEL_LOCAL_VIEW, callId);
            }
            break;

        case 3: //auxiliary data
            break;

        default:
            break;
    }

}
 

onEvtCallRouteChange

接口描述

呼叫路由變更通知。

注意事項(xiàng)

主要用于iOS

方法定義

void onEvtCallRouteChange(TsdkCall call, long route); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

route

long

路由下標(biāo)。

返回值

無(wú)。

代碼示例

//Java code
None
 

onEvtPlayMediaEnd

接口描述

音頻文件播放結(jié)束通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtPlayMediaEnd(long handle); 
 

參數(shù)描述

參數(shù)名

類型

描述

handle

long

文件句柄。

返回值

無(wú)。

代碼示例

//Java code
None
 

onEvtSessionModified

接口描述

會(huì)話修改完成通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtSessionModified(TsdkCall call, TsdkSessionModified sessionInfo); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

sessionInfo

TsdkSessionModified

會(huì)話修改完成結(jié)果信息。

返回值

無(wú)。

代碼示例

//Java code
None
 

onEvtSessionCodec

接口描述

會(huì)話正在使用的codec通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtSessionCodec(TsdkCall call, TsdkSessionCodec codecInfo); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

codecInfo

TsdkSessionCodec

會(huì)話正在使用的編解碼器信息。

返回值

無(wú)。

代碼示例

//Java code
None
 

onEvtHoldSuccess

接口描述

呼叫保持成功事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtHoldSuccess(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtHoldSuccess(TsdkCall call){
    Log.i(TAG, "handleHoldSuccess");
    CallInfo callInfo = getCallInfo(call);
    Session callSession = getCallSessionByCallID(callInfo.getCallID());
    if (callSession.isVideoHold())
    {
        mCallNotification.onCallEventNotify(CallConstant.CallEvent.VIDEO_HOLD_SUCCESS, callInfo);
    }
    else
    {
        mCallNotification.onCallEventNotify(CallConstant.CallEvent.AUDIO_HOLD_SUCCESS, callInfo);
    }
}
 

onEvtHoldFailed

接口描述

呼叫保持失敗事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtHoldFailed(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtHoldFailed(TsdkCall call){
    Log.i(TAG, "handleHoldFailed");
    CallInfo callInfo = getCallInfo(call);
    Session callSession = getCallSessionByCallID(callInfo.getCallID());
    if (callSession.isVideoHold())
    {
        callSession.setVideoHold(false);
        //保持失敗,只直接通知UI失敗,不自動(dòng)恢復(fù)視頻
        mCallNotification.onCallEventNotify(CallConstant.CallEvent.VIDEO_HOLD_FAILED, callInfo);
    }
    else
    {
        mCallNotification.onCallEventNotify(CallConstant.CallEvent.AUDIO_HOLD_FAILED, callInfo);
    }
}
 

onEvtUnholdSuccess

接口描述

取消呼叫保持成功事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtUnholdSuccess(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtUnholdSuccess(TsdkCall call){
    Log.i(TAG, "handleUnholdSuccess");
    int callId = call.getCallInfo().getCallId();
    Session callSession = getCallSessionByCallID(callId);
    if (callSession == null)
    {
        Log.e(TAG, "call session obj is null");
        return;
    }

    //如果此保持發(fā)起時(shí)是“視頻保持”,則再在“保持恢復(fù)”后,請(qǐng)求遠(yuǎn)端“增加視頻”
    if (callSession.isVideoHold())
    {
        addVideo(callId);
        callSession.setVideoHold(false);
    }

    //調(diào)試音頻
    CallInfo callInfo = getCallInfo(call);
    mCallNotification.onCallEventNotify(CallConstant.CallEvent.UN_HOLD_SUCCESS, callInfo);
}
 

onEvtUnholdFailed

接口描述

取消呼叫保持失敗事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtUnholdFailed(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtUnholdFailed(TsdkCall call){
    Log.i(TAG, "handleUnholdFailed");

    CallInfo callInfo = getCallInfo(call);
    mCallNotification.onCallEventNotify(CallConstant.CallEvent.UN_HOLD_FAILED, callInfo);
}
 

onEvtEndcallFailed

接口描述

結(jié)束呼叫失敗事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtEndcallFailed(TsdkCall call, TsdkCommonResult result); 
 

參數(shù)描述

參數(shù)名

類型

描述

result

TsdkCommonResult

結(jié)果。

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
None
 

onEvtDivertFailed

接口描述

偏轉(zhuǎn)失敗事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtDivertFailed(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtDivertFailed(TsdkCall call){
    Log.i(TAG, "handleDivertFailed");

    CallInfo callInfo = getCallInfo(call);
    mCallNotification.onCallEventNotify(CallConstant.CallEvent.DIVERT_FAILED, callInfo);
}
 

onEvtBldTransferSuccess

接口描述

盲轉(zhuǎn)成功事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtBldTransferSuccess(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtBldTransferSuccess(TsdkCall call){
    Log.i(TAG, "handleBldTransferSuccess");

    CallInfo callInfo = getCallInfo(call);
    mCallNotification.onCallEventNotify(CallConstant.CallEvent.BLD_TRANSFER_SUCCESS, callInfo);
}
 

onEvtBldTransferFailed

接口描述

盲轉(zhuǎn)失敗事件。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtBldTransferFailed(TsdkCall call); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtBldTransferFailed(TsdkCall call){
    Log.i(TAG, "handleBldTransferFailed");

    CallInfo callInfo = getCallInfo(call);
    mCallNotification.onCallEventNotify(CallConstant.CallEvent.BLD_TRANSFER_FAILED, callInfo);
}
 

onEvtStatisticInfo

接口描述

呼叫統(tǒng)計(jì)信息上報(bào)。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtStatisticInfo(TsdkCall call, long signalStrength, TsdkCallStatisticInfo statisticInfo); 
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

signalStrength

long

信號(hào)強(qiáng)度。

statisticInfo

TsdkCallStatisticInfo

統(tǒng)計(jì)信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtStatisticInfo(TsdkCall call, long signalStrength, TsdkCallStatisticInfo statisticInfo) {
	CallMgr.getInstance().handleUpDateCallStatisticInfo(signalStrength, statisticInfo);
}
 

onEvtBookConfResult

接口描述

預(yù)約會(huì)議結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtBookConfResult(TsdkCommonResult result, TsdkConfBaseInfo confBaseInfo); 
 

參數(shù)描述

參數(shù)名

類型

描述

result

TsdkCommonResult

操作結(jié)果。

confBaseInfo

TsdkConfBaseInfo

會(huì)議信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleBookConfResult(TsdkCommonResult result, TsdkConfBaseInfo confBaseInfo){
    Log.i(TAG, "onBookReservedConfResult");
    if ((result == null) || (confBaseInfo == null))
    {
        Log.e(TAG, "book conference is failed, unknown error.");
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.BOOK_CONF_FAILED, -1);
        return;
    }
    if (result.getResult() != TupConfParam.CONF_RESULT.TUP_SUCCESS)
    {
        Log.e(TAG, "book conference is failed, return ->" + result.getResult());
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.BOOK_CONF_FAILED, result.getResult());
        return;
    }
    Log.i(TAG, "book conference is success.");
    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.BOOK_CONF_SUCCESS, result.getResult());
}
 

onEvtQueryConfListResult

接口描述

查詢會(huì)議列表結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtQueryConfListResult(TsdkCommonResult result, TsdkConfListInfo confList); 
 

參數(shù)描述

參數(shù)名

類型

描述

result

TsdkCommonResult

操作結(jié)果。

confList

TsdkConfListInfo

會(huì)議列表信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleQueryConfListResult(TsdkCommonResult result, TsdkConfListInfo confList){
    Log.i(TAG, "onGetConfListResult");
    if (result == null)
    {
        Log.e(TAG, "get conference list is failed, unknown error.");
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.QUERY_CONF_LIST_FAILED, -1);
        return;
    }
    else if (result.getResult() != 0)
    {
        Log.e(TAG, "get conference list is failed, return ->" + result.getReasonDescription());
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.QUERY_CONF_LIST_FAILED, result.getResult());
        return;
    }
    List<ConfBaseInfo> confBaseInfoList = new ArrayList<>();
    List<TsdkConfBaseInfo> tsdkConfBaseInfos = confList.getConfInfoList();
    if (null != tsdkConfBaseInfos) {
        for (TsdkConfBaseInfo confInfo : tsdkConfBaseInfos) {
            ConfBaseInfo confBaseInfo = new ConfBaseInfo();
            confBaseInfo.setSize(confInfo.getSize());
            confBaseInfo.setConfID(confInfo.getConfId());
            confBaseInfo.setSubject(confInfo.getSubject());
            confBaseInfo.setAccessNumber(confInfo.getAccessNumber());
            confBaseInfo.setChairmanPwd(confInfo.getChairmanPwd());
            confBaseInfo.setGuestPwd(confInfo.getGuestPwd());
            confBaseInfo.setSchedulerNumber(confInfo.getScheduserAccount());
            confBaseInfo.setSchedulerName(confInfo.getScheduserName());
            confBaseInfo.setStartTime(confInfo.getStartTime());
            confBaseInfo.setEndTime(confInfo.getEndTime());
            confBaseInfo.setMediaType(ConfConvertUtil.convertConfMediaType(confInfo.getConfMediaType()));
            confBaseInfo.setConfState(ConfConvertUtil.convertConfctrlConfState(confInfo.getConfState()));
            confBaseInfoList.add(confBaseInfo);
        }
    }
    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.QUERY_CONF_LIST_SUCCESS, confBaseInfoList);
}
 

onEvtQueryConfDetailResult

接口描述

查詢會(huì)議詳情結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtQueryConfDetailResult(TsdkCommonResult result, TsdkConfDetailInfo confDetailInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

result

TsdkCommonResult

操作結(jié)果。

confDetailInfo

TsdkConfDetailInfo

會(huì)議詳細(xì)信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleQueryConfDetailResult(TsdkCommonResult result, TsdkConfDetailInfo tsdkConfDetailInfo){
    Log.i(TAG, "onGetConfInfoResult");
    if ((result == null) || (tsdkConfDetailInfo == null))
    {
        Log.e(TAG, "get conference detail is failed, unknown error.");
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.QUERY_CONF_DETAIL_FAILED, -1);
        return;
    }
    if (result.getResult() != TupConfParam.CONF_RESULT.TUP_SUCCESS)
    {
        Log.e(TAG, "get conference detail is failed, return ->" + result.getResult());
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.QUERY_CONF_DETAIL_FAILED, result.getResult());
        return;
    }
    ConfDetailInfo confDetailInfo = new ConfDetailInfo();
    confDetailInfo.setSize(tsdkConfDetailInfo.getConfInfo().getSize());
    confDetailInfo.setConfID(tsdkConfDetailInfo.getConfInfo().getConfId());
    confDetailInfo.setSubject(tsdkConfDetailInfo.getConfInfo().getSubject());
    confDetailInfo.setAccessNumber(tsdkConfDetailInfo.getConfInfo().getAccessNumber());
    confDetailInfo.setChairmanPwd(tsdkConfDetailInfo.getConfInfo().getChairmanPwd());
    confDetailInfo.setGuestPwd(tsdkConfDetailInfo.getConfInfo().getGuestPwd());
    confDetailInfo.setSchedulerNumber(tsdkConfDetailInfo.getConfInfo().getScheduserAccount());
    confDetailInfo.setSchedulerName(tsdkConfDetailInfo.getConfInfo().getScheduserName());
    confDetailInfo.setStartTime(tsdkConfDetailInfo.getConfInfo().getStartTime());
    confDetailInfo.setEndTime(tsdkConfDetailInfo.getConfInfo().getEndTime());
    confDetailInfo.setMediaType(ConfConvertUtil.convertConfMediaType(tsdkConfDetailInfo.getConfInfo().getConfMediaType()));
    confDetailInfo.setConfState(ConfConvertUtil.convertConfctrlConfState(tsdkConfDetailInfo.getConfInfo().getConfState()));
    List<Member> memberList = ConfConvertUtil.convertAttendeeInfoList(tsdkConfDetailInfo.getAttendeeList());
    confDetailInfo.setMemberList(memberList);
    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.QUERY_CONF_DETAIL_SUCCESS, confDetailInfo);
}
 

 

onEvtJoinConfResult

接口描述

加入會(huì)議結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

 void onEvtJoinConfResult(TsdkConference conference, TsdkCommonResult result, TsdkJoinConfIndInfo info);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

result

TsdkCommonResult

操作結(jié)果。

info

TsdkJoinConfIndInfo

會(huì)議接通信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleJoinConfResult(TsdkConference tsdkConference, TsdkCommonResult commonResult, TsdkJoinConfIndInfo tsdkJoinConfIndInfo
    Log.i(TAG, "handleJoinConfResult");
    if ((tsdkConference == null) || (commonResult == null)) {
        return;
    }
    int result = commonResult.getResult();
    if (result == 0)
    {
        this.currentConference = tsdkConference;
        this.memberList = null;
        this.self = null;
        TsdkCall tsdkCall = tsdkConference.getCall();
        if (null != tsdkCall) {
            Session newSession = CallMgr.getInstance().getCallSessionByCallID(tsdkCall.getCallInfo().getCallId());
            if (null == newSession) {
                newSession = new Session(tsdkCall);
                CallMgr.getInstance().putCallSessionToMap(newSession);
            }
            if (tsdkCall.getCallInfo().getIsVideoCall() == 1) {
                VideoMgr.getInstance().initVideoWindow(tsdkCall.getCallInfo().getCallId());
            }
        }
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_SUCCESS, tsdkConference.getHandle() + "");
    }
    else
    {
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_CONF_FAILED, result);
    }
}
 

onEvtGetDataconfParamResult

接口描述

獲取數(shù)據(jù)會(huì)議入會(huì)參數(shù)結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtGetDataconfParamResult(TsdkConference conference, TsdkCommonResult result); 
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

result

TsdkCommonResult

操作結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
public void  handleGetDataConfParamsResult(TsdkConference tsdkConference, TsdkCommonResult commonResult){
    Log.i(TAG, "handleJoinConfResult");
    if ((tsdkConference == null) || (commonResult == null)) {
        return;
    }
    int result = commonResult.getResult();
    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.GET_DATA_CONF_PARAM_RESULT, result);
}
 

onEvtConfctrlOperationResult

接口描述

會(huì)控操作結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtConfctrlOperationResult(TsdkConference conference, TsdkConfOperationResult result);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

result

TsdkConfOperationResult

會(huì)控操作結(jié)果信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleConfctrlOperationResult(TsdkConference conference, TsdkConfOperationResult result)
{
    Log.i(TAG, "handleConfctrlOperationResult");
    int ret = result.getReasonCode();
    if (null == conference || null == result)
    {
        return;
    }
    if (ret != 0)
    {
        Log.e(TAG, "conf ctrl operation failed: " + result.getDescription());
        return;
    }
    int confOperationType = result.getOperationType();
    switch (confOperationType)
    {
        //閉音會(huì)場(chǎng)
        case 2:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.MUTE_CONF_RESULT, ret);
            break;
        //取消閉音
        case 3:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.UN_MUTE_CONF_RESULT, ret);
            break;
        //鎖定會(huì)議
        case 4:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.LOCK_CONF_RESULT, ret);
            break;
        //取消鎖定
        case 5:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.UN_LOCK_CONF_RESULT, ret);
            break;
        //添加與會(huì)者
        case 6:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.ADD_ATTENDEE_RESULT, ret);
            break;
        //刪除與會(huì)者
        case 7:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.DEL_ATTENDEE_RESULT, ret);
            break;
        //閉音與會(huì)者
        case 10:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.MUTE_ATTENDEE_RESULT, ret);
            break;
        //取消閉音與會(huì)者
        case 11:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.UN_MUTE_ATTENDEE_RESULT, ret);
            break;
        //設(shè)置舉手
        case 12:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.HAND_UP_RESULT, ret);
            break;
        //取消設(shè)置舉手
        case 13:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.CANCEL_HAND_UP_RESULT, ret);
            break;
        //申請(qǐng)主席權(quán)限
        case 18:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.REQUEST_CHAIRMAN_RESULT, ret);
            break;
        //釋放主席權(quán)限
        case 19:
            mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.RELEASE_CHAIRMAN_RESULT, ret);
            break;
        default:
            break;
    }
}
 

onEvtInfoAndStatusUpdate

接口描述

會(huì)議信息及狀態(tài)更新。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtInfoAndStatusUpdate(TsdkConference conference); 
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleInfoAndStatusUpdate(TsdkConference conference){
    Log.i(TAG, "onConfStatusUpdateInd");
    if ((currentConference == null) || (conference == null))
    {
        return;
    }
    if (currentConference.getHandle() != conference.getHandle())
    {
        return;
    }
    String handle = conference.getHandle()+"";
    this.updateConfInfo(conference);
    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.STATE_UPDATE, handle);
}
 

onEvtSpeakerInd

接口描述

發(fā)言方通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtSpeakerInd(TsdkConference conference, TsdkConfSpeakerInfo speakerList); 
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

speakerList

TsdkConfSpeakerInfo

發(fā)言方信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleSpeakerInd(TsdkConfSpeakerInfo speakerList) {
	Log.i(TAG, "onEvtSpeakerInd");

	if (null == speakerList)
	{
		return;
	}

	if (speakerList.getSpeakerNum() > 0)
	{
		this.updateSpeaker(speakerList);
	}

	mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.SPEAKER_LIST_IND, speakerList.getSpeakerNum());
}
 

onEvtRequestConfRightFailed

接口描述

申請(qǐng)會(huì)控權(quán)限失敗。

注意事項(xiàng)

與會(huì)者在會(huì)議中將無(wú)會(huì)控權(quán)限,但仍可參與會(huì)議。

方法定義

void onEvtRequestConfRightFailed(TsdkConference conference, TsdkCommonResult result); 
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

result

TsdkCommonResult

操作結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
None
 

onEvtConfIncomingInd

接口描述

會(huì)議來(lái)電通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtConfIncomingInd(TsdkConference conference);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleConfIncomingInd(TsdkConference conference){
    if (null == conference)
    {
        return;
    }
    currentConference = conference;
    TsdkCall tsdkCall = conference.getCall();
    if (null != tsdkCall) {
        Session newSession = CallMgr.getInstance().getCallSessionByCallID(tsdkCall.getCallInfo().getCallId());
        if (null == newSession) {
            newSession = new Session(tsdkCall);
            CallMgr.getInstance().putCallSessionToMap(newSession);
        }
    }
    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.CONF_INCOMING_TO_CALL_INCOMING, conference);
}
 

onEvtConfEndInd

接口描述

會(huì)議結(jié)束通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtConfEndInd(TsdkConference conference); 
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleConfEndInd(TsdkConference conference)
{
    Log.i(TAG, "handleConfEndInd" + conference.getHandle());
    currentConference = null;
}
 

onEvtJoinDataConfResult

接口描述

加入數(shù)據(jù)會(huì)議結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtJoinDataConfResult(TsdkConference conference, TsdkCommonResult result); 
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

result

TsdkCommonResult

操作結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
public void  handleJoinDataConfResult(TsdkConference tsdkConference, TsdkCommonResult commonResult){
    Log.i(TAG, "handleJoinDataConfResult");
    if ((tsdkConference == null) || (commonResult == null)) {
        return;
    }
    int result = commonResult.getResult();
    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.JOIN_DATA_CONF_RESULT, result);
}
 

onEvtAsStateChange

接口描述

應(yīng)用共享狀態(tài)通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtAsStateChange(TsdkConference conference, TsdkConfAppShareType shareType, TsdkConfAsStateInfo asStateInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

shareType

TsdkConfAppShareType

共享類型:屏幕或程序。

asStateInfo

TsdkConfAsStateInfo

共享狀態(tài)信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleAsStateChange(TsdkConfAsStateInfo asStateInfo)
{
	switch (asStateInfo.getState())
	{
		case 0:
			mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.END_AS_SHARE, asStateInfo);
			break;
		default:
			break;
	}
}
 

onEvtAsOwnerChange

接口描述

共享者變更通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtAsOwnerChange(TsdkConference conference, TsdkConfAsActionType actionType, TsdkAttendee owner);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

actionType

TsdkConfAsActionType

共享行為類型。

owner

TsdkAttendee

共享者。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtAsOwnerChange(TsdkConference conference,TsdkConfAsActionType actionType, TsdkAttendee owner){
        Log.i(TAG, "onEvtAsOwnerChange");
        
        for (Member member : getCurrentConferenceMemberList())
        {
            if (self == null && member.isSelf())
            {
                setSelf(member);
            }
        }
        if (owner==null||self==null){
            return;
        }
        switch (actionType){
            case TSDK_E_CONF_AS_ACTION_ADD:
                if (owner.getBaseInfo().getNumber().equals(self.getNumber())){
                    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.SCREEN_SHARE_STATE, actionType);
                }else {
                    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.SCREEN_SHARE_STATE, TsdkConfAsActionType.TSDK_E_CONF_AS_ACTION_MODIFY);
                }
                break;
            case TSDK_E_CONF_AS_ACTION_DELETE:
                mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.SCREEN_SHARE_STATE, actionType);
                break;

        }
    }
 

onEvtDsDocNew

接口描述

新建一個(gè)共享文檔通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtDsDocNew(TsdkConference conference, TsdkDocBaseInfo docBaseInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

docBaseInfo

TsdkDocBaseInfo

文檔基礎(chǔ)信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleDsDocNew(TsdkDocBaseInfo docBaseInfo)
{
	if (null == docBaseInfo)
	{
		return;
	}

	documentId.add(docBaseInfo.getDocumentId());
	mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.START_DATA_CONF_SHARE, docBaseInfo);
}
 

onEvtDsDocDel

接口描述

刪除一個(gè)共享文檔通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtDsDocDel(TsdkConference conference, TsdkDocShareDelDocInfo docShareDelDocInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

docShareDelDocInfo

TsdkDocShareDelDocInfo

文檔刪除信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleDsDocDel(TsdkDocShareDelDocInfo docShareDelDocInfo)
{
	if (null == docShareDelDocInfo)
	{
		return;
	}

	Iterator<Integer> iterator = documentId.iterator();
	while (iterator.hasNext())
	{
		if (iterator.next() == docShareDelDocInfo.getDocBaseInfo().getDocumentId())
		{
			iterator.remove();
		}
	}

	if (0 == documentId.size() && !isShareAs)
	{
		mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.END_DATA_CONF_SHARE, docShareDelDocInfo);
	}
}
 

onEvtWbDocNew

接口描述

新建一個(gè)白板文檔通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtWbDocNew(TsdkConference conference, TsdkDocBaseInfo docBaseInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

docBaseInfo

TsdkDocBaseInfo

文檔基礎(chǔ)信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleWbDocNew(TsdkDocBaseInfo docBaseInfo)
{
	if (null == docBaseInfo)
	{
		return;
	}

	documentId.add(docBaseInfo.getDocumentId());
	mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.START_DATA_CONF_SHARE, docBaseInfo);
}
 

onEvtWbDocDel

接口描述

刪除一個(gè)白板文檔通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtWbDocDel(TsdkConference conference, TsdkWbDelDocInfo wbDelDocInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

wbDelDocInfo

TsdkWbDelDocInfo

刪除的白板信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleWbDocDel(TsdkWbDelDocInfo wbDelDocInfo)
{
	if (null == wbDelDocInfo)
	{
		return;
	}

	Iterator<Integer> iterator = documentId.iterator();
	while (iterator.hasNext())
	{
		if (iterator.next() == wbDelDocInfo.getWbBaseInfo().getDocumentId())
		{
			iterator.remove();
		}
	}

	if (0 == documentId.size() && !isShareAs)
	{
		mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.END_DATA_CONF_SHARE, wbDelDocInfo);
	}
}
 

onEvtRecvChatMsg

接口描述

收到會(huì)議中的聊天消息通知。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtRecvChatMsg(TsdkConference conference, TsdkConfChatMsgInfo chatMsgInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

chatMsgInfo

TsdkConfChatMsgInfo

聊天信息。

返回值

無(wú)。

代碼示例

//Java code
 public void handleRecvChatMsg(TsdkConfChatMsgInfo confChatMsgInfo)
    {
        mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.CONF_CHAT_MSG, confChatMsgInfo);
    }
 

onEvtGetTempUserResult

接口描述

匿名入會(huì),獲取臨時(shí)帳號(hào)結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtGetTempUserResult(long userId, TsdkCommonResult result);
 

參數(shù)描述

參數(shù)名

類型

描述

userId

long

用戶ID。

result

TsdkCommonResult

結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
public void handleGetTempUserResult(int userId, TsdkCommonResult result)
{
    if(result == null){
        return;
    }
    mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.GET_TEMP_USER_RESULT, result);
}
 

onEvtTransToConfResult

接口描述

呼叫轉(zhuǎn)成會(huì)議結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtTransToConfResult(TsdkCall call,TsdkCommonResult result);
 

參數(shù)描述

參數(shù)名

類型

描述

call

TsdkCall

呼叫信息。

result

TsdkCommonResult

結(jié)果。

返回值

無(wú)。

代碼示例

//Java code
None
 

onEvtSvcWatchInfoInd

接口描述

SVC(多流)會(huì)議下正在觀看畫面信息通知。

注意事項(xiàng)

無(wú)。

方法定義

 void onEvtSvcWatchInfoInd(TsdkConference conference, TsdkConfSvcWatchInfo svWatchInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

svWatchInfo

TsdkConfSvcWatchInfo

SVC(多流)會(huì)議下正在觀看畫面信息。

返回值

無(wú)。

代碼示例

//Java code
@Override
public void onEvtSvcWatchInfoInd(TsdkConference conference, TsdkConfSvcWatchInfo svcWatchInfo) {
	LogUtil.i(TAG, "onEvtSvcWatchInfoInd notify.");
	MeetingMgr.getInstance().handleSvcWatchInfoInd(conference, svcWatchInfo);
}
 

onEvtShareStatisticInfo

接口描述

共享統(tǒng)計(jì)信息上報(bào)。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtShareStatisticInfo(TsdkConference conference, TsdkShareStatisticInfo statisticInfo);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

statisticInfo

TsdkShareStatisticInfo

共享統(tǒng)計(jì)信息。

返回值

無(wú)。

代碼示例

//Java code
public void onEvtShareStatisticInfo(TsdkConference conference, TsdkShareStatisticInfo statisticInfo) {
	MeetingMgr.getInstance().handleShareStatisticInfo(conference, statisticInfo);
}
 

onEvtConfResumingInd

接口描述

會(huì)議恢復(fù)中通知(一般在網(wǎng)絡(luò)發(fā)生變化時(shí)觸發(fā))。

注意事項(xiàng)

無(wú)。

方法定義

 void onEvtConfResumingInd(TsdkConference conference);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

返回值

無(wú)。

代碼示例

//Java code
@Override
public void onEvtConfResumingInd(TsdkConference conference) {
	LogUtil.i(TAG, "onEvtConfResumingInd notify.");
	MeetingMgr.getInstance().handleConfResumingInd();
}
 

onEvtConfResumeResult

接口描述

會(huì)議恢復(fù)(重新加入)結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

 void onEvtConfResumeResult(TsdkConference conference, TsdkCommonResult result, TsdkResumeConfIndInfo info);
 

參數(shù)描述

參數(shù)名

類型

描述

conference

TsdkConference

會(huì)議信息。

result

TsdkCommonResult

操作結(jié)果。

info

TsdkResumeConfIndInfo

會(huì)議恢復(fù)信息。

返回值

無(wú)。

代碼示例

//Java code
@Override
public void onEvtConfResumeResult(TsdkConference conference, TsdkCommonResult result, TsdkResumeConfIndInfo info) {
	LogUtil.i(TAG, "onEvtConfResumeResult notify.");
	MeetingMgr.getInstance().handleConfResumeResult(conference, result, info);
}
 

onEvtSearchContactsResult

接口描述

查詢聯(lián)系人信息返回結(jié)果。

注意事項(xiàng)

查詢到的聯(lián)系人信息包括:UC帳號(hào)、姓名、工號(hào)、IP號(hào)碼、部門名字、職務(wù)、郵箱、手機(jī)號(hào)碼、座機(jī)號(hào)碼、家庭電話、性別、郵編、地址、簽名和硬終端等。

方法定義

void onEvtSearchContactsResult(long querySeqNo, TsdkCommonResult result, TsdkSearchContactsResult searchContactResult); 
 

參數(shù)描述

參數(shù)名

類型

描述

querySeqNo

long

查詢序列號(hào)。

result

TsdkCommonResult

查詢結(jié)果。

searchContactResult

TsdkSearchContactsResult

查詢到的聯(lián)系人信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleSearchContactResult(int querySeqNo, TsdkCommonResult result, TsdkSearchContactsResult searchContactResult) 
{
    //獲取序列號(hào)-->和調(diào)用查詢方法返回的序列號(hào)相一致
    int seqNo = querySeqNo;
    int ret = result.getResult();
    //獲取聯(lián)系人成功返回0
    if (ret == 0)
    {
        //獲取查詢到的聯(lián)系人列表以及查詢到的聯(lián)系人總數(shù)
        List<TsdkContactsInfo> contactsInfos = searchContactResult.getContactInfo();
        int totalNum = searchContactResult.getTotalNum();
        //查詢到0個(gè)聯(lián)系人
        if (0 == totalNum)
        {
            notification.onEntAddressBookNotify(EntAddressBookConstant.Event.SEARCH_CONTACTS_NOT_FOUND, null);
        }
        //查詢的登錄的用戶信息
        else if (querySelfInfoSeq == seqNo)
        {
            notification.onEntAddressBookNotify(EntAddressBookConstant.Event.SEARCH_SELF_COMPLETE, contactsInfos);
        }
        //其余查詢結(jié)果
        else
        {
            list = contactsInfos;
            QueryContactsInfoResult queryContactsResult = new QueryContactsInfoResult();
            queryContactsResult.setQuerySeq(seqNo);
            List<EntAddressBookInfo> contactsList = new ArrayList<>();
            for (TsdkContactsInfo contactorInfo : contactsInfos)
            {
                EntAddressBookInfo entAddressBookInfo = new EntAddressBookInfo();
                entAddressBookInfo.setEaddrAccount(contactorInfo.getStaffAccount());
                if(contactorInfo.getStaffAccount().isEmpty() || contactorInfo.getStaffAccount() == null)
                {
                    break;
                }
                entAddressBookInfo.setTerminal(contactorInfo.getTerminal());
                entAddressBookInfo.setEaddrDept(contactorInfo.getDepartmentName());
                entAddressBookInfo.setSysIconID(10);
                contactsList.add(entAddressBookInfo);
            }
            queryContactsResult.setList(contactsList);
            notification.onEntAddressBookNotify(EntAddressBookConstant.Event.SEARCH_CONTACTS_COMPLETE, queryContactsResult);
        }
        Log.i(TAG, totalNum + "Get the total number of returned contacts");
    }
    else
    {
        Log.e(TAG, "Search contacts failed, result -->" + result);
        notification.onEntAddressBookNotify(EntAddressBookConstant.Event.SEARCH_CONTACTS_FAILED, null);
    }
}
 

onEvtGetIconResult

接口描述

查詢頭像信息返回結(jié)果。

注意事項(xiàng)

無(wú)。

方法定義

void onEvtGetIconResult(long querySeqNo, TsdkCommonResult result, TsdkGetIconResult getIconResult); 
 

參數(shù)描述

參數(shù)名

類型

描述

querySeqNo

long

查詢序列號(hào)。

result

TsdkCommonResult

查詢結(jié)果。

getIconResult

TsdkGetIconResult

查詢到的頭像信息。

返回值

無(wú)。

代碼示例

//Java code
public void handleGetIconResult(int querySeqNo, TsdkCommonResult result, TsdkGetIconResult getIconResult) {
    int ret = result.getResult();
    int seqNo = querySeqNo;
    //獲取到某個(gè)用戶的頭像
    String account = querySeqAccountMap.get(seqNo);
    //獲取頭像成功返回0
    if (ret == 0)
    {
        int sysId = getIconResult.getIconId();
        String avatarFile = getIconResult.getIconPath();
        //查詢的是登錄用戶的頭像
        if (querySelfIconSeq == seqNo)
        {
            EntAddressBookIconInfo selfIcon = new EntAddressBookIconInfo();
            selfIcon.setAccount(account);
            selfIcon.setIconFile(avatarFile);
            selfIcon.setIconId(sysId);
            selfIcon.setIconSeq(seqNo);
            notification.onEntAddressBookIconNotify(EntAddressBookConstant.Event.GET_SELF_ICON, selfIcon);
        }
        //獲取到的是系統(tǒng)頭像
        else if (sysId >= 0 && avatarFile.isEmpty())
        {
            EntAddressBookIconInfo iconInfo = new EntAddressBookIconInfo();
            iconInfo.setAccount(account);
            iconInfo.setIconId(sysId);
            iconInfo.setIconSeq(seqNo);
            notification.onEntAddressBookIconNotify(EntAddressBookConstant.Event.GET_CONTACTS_SYSTEM_ICON, iconInfo);
        }
        //獲取到的是自定義頭像
        else
        {
            EntAddressBookIconInfo iconInfo = new EntAddressBookIconInfo();
            iconInfo.setAccount(account);
            iconInfo.setIconFile(avatarFile);
            iconInfo.setIconSeq(seqNo);
            notification.onEntAddressBookIconNotify(EntAddressBookConstant.Event.GET_CONTACTS_CUSTOM_ICON, iconInfo);
        }
        Log.i(TAG, sysId + "System Avatar ID  " + avatarFile + "Custom Avatar filename");
    }
    else
    {
        //獲取頭像失敗
        EntAddressBookIconInfo iconInfo = new EntAddressBookIconInfo();
        iconInfo.setAccount(account);
        iconInfo.setIconSeq(seqNo);
        Log.e(TAG, "User get icon failed, result -->" + result);
        notification.onEntAddressBookIconNotify(EntAddressBookConstant.Event.GET_CONTACTS_ICON_FAILED, iconInfo);
    }
}