主頁(yè) > 服務(wù)與支持 > 開(kāi)發(fā)平臺(tái) > 客戶端SDK參考 > Android Native SDK > 附錄 事件通知
更新時(shí)間:2019-12-10
所有的事件通知都屬于TsdkNotify(業(yè)務(wù)事件通知接口類(lèi))。
接口名稱(chēng) |
接口描述 |
---|---|
鑒權(quán)成功。 |
|
鑒權(quán)失敗。 |
|
鑒權(quán)刷新失敗。 |
|
登錄成功。 |
|
登錄失敗。 |
|
登出成功。 |
|
登出失敗。 |
|
強(qiáng)制登出通知(帳號(hào)被踢)。 |
|
VoIP帳號(hào)狀態(tài)信息。 |
|
防火墻探測(cè)失敗。 |
|
創(chuàng)建stg通道失敗。 |
|
安全隧道信息通知。 |
|
密碼修改結(jié)果。 |
|
登錄狀態(tài)恢復(fù)中通知。 |
|
登錄狀態(tài)恢復(fù)結(jié)果。 |
接口名稱(chēng) |
接口描述 |
---|---|
呼叫結(jié)果 |
|
來(lái)電事件 |
|
呼出事件 |
|
回鈴音事件 |
|
RTP創(chuàng)建事件 |
|
通話建立事件 |
|
通話結(jié)束 |
|
呼叫銷(xiāo)毀事件 |
|
音頻轉(zhuǎn)視頻請(qǐng)求 |
|
遠(yuǎn)端拒絕音頻轉(zhuǎn)視頻 |
|
關(guān)閉視頻(視頻轉(zhuǎn)音頻)通知 |
|
打開(kāi)視頻(音頻轉(zhuǎn)視頻)通知 |
|
刷新窗口信息通知 |
|
呼叫路由變更通知 |
|
音頻文件播放結(jié)束通知 |
|
會(huì)話修改完成通知 |
|
會(huì)話正在使用的codec通知 |
|
呼叫保持成功事件 |
|
呼叫保持失敗事件 |
|
取消呼叫保持成功事件 |
|
取消呼叫保持失敗事件 |
|
結(jié)束呼叫失敗事件 |
|
偏轉(zhuǎn)失敗事件 |
|
盲轉(zhuǎn)成功事件 |
|
盲轉(zhuǎn)失敗事件 |
|
呼叫統(tǒng)計(jì)信息上報(bào) |
接口名稱(chēng) |
接口描述 |
---|---|
預(yù)約會(huì)議結(jié)果 |
|
查詢會(huì)議列表結(jié)果 |
|
查詢會(huì)議詳情結(jié)果 |
|
加入會(huì)議結(jié)果 |
|
獲取數(shù)據(jù)會(huì)議入會(huì)參數(shù)結(jié)果 |
|
會(huì)控操作結(jié)果 |
|
會(huì)議信息及狀態(tài)更新 |
|
獲取發(fā)言方通知 |
|
申請(qǐng)會(huì)控權(quán)限失敗 |
|
會(huì)議來(lái)電通知 |
|
會(huì)議結(jié)束通知 |
|
加入數(shù)據(jù)會(huì)議結(jié)果 |
|
應(yīng)用共享狀態(tài)通知 |
|
共享者變更通知。 |
|
新建共享文檔通知 |
|
刪除共享文檔通知 |
|
新建白板文檔通知 |
|
刪除白板文檔通知 |
|
聊天消息通知 |
|
獲取臨時(shí)帳號(hào)結(jié)果 |
|
呼叫轉(zhuǎn)成會(huì)議結(jié)果 |
|
SVC(多流)會(huì)議下正在觀看畫(huà)面信息通知 |
|
共享統(tǒng)計(jì)信息上報(bào) |
|
會(huì)議恢復(fù)中通知 |
|
會(huì)議恢復(fù)(重新加入)結(jié)果 |
接口名稱(chēng) |
接口描述 |
---|---|
查詢聯(lián)系人結(jié)果。 |
|
獲取頭像結(jié)果。 |
接口描述
鑒權(quán)成功。
注意事項(xiàng)
用于呈現(xiàn)登錄過(guò)程,應(yīng)用層一般無(wú)需處理。
方法定義
void onEvtAuthSuccess(long userId, TsdkImLoginParam imLoginParam); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
imLoginParam |
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); } } |
接口描述
鑒權(quán)失敗。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtAuthFailed(long userId, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
result |
結(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()); } |
接口描述
鑒權(quán)刷新失敗。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtAuthRefreshFailed(long userId, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
result |
結(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()); } |
接口描述
登錄成功。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtLoginSuccess(long userId, TsdkServiceAccountType serviceAccountType, TsdkLoginSuccessInfo loginSuccessInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
serviceAccountType |
服務(wù)帳號(hào)類(lèi)型。 |
|
loginSuccessInfo |
登錄成功信息。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtLoginSuccess(int userId, TsdkServiceAccountType serviceAccountType, TsdkLoginSuccessInfo loginSuccessInfo) { Log.i(TAG, "onEvtLoginSuccess notify."); LoginMgr.getInstance().handleLoginSuccess(userId, serviceAccountType, loginSuccessInfo); } |
接口描述
登錄失敗。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtLoginFailed(long userId, TsdkServiceAccountType serviceAccountType, TsdkLoginFailedInfo loginFailedInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
serviceAccountType |
服務(wù)帳號(hào)類(lèi)型。 |
|
loginFailedInfo |
登錄失敗信息。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtLoginFailed(int userId, TsdkServiceAccountType serviceAccountType, TsdkLoginFailedInfo loginFailedInfo) { Log.i(TAG, "onEvtLoginFailed notify."); LoginMgr.getInstance().handleLoginFailed(userId, serviceAccountType, loginFailedInfo); } |
接口描述
登出成功。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtLogoutSuccess(long userId, TsdkServiceAccountType serviceAccountType); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
serviceAccountType |
服務(wù)帳號(hào)類(lèi)型。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtLogoutSuccess(int userId, TsdkServiceAccountType serviceAccountType) { Log.i(TAG, "onEvtLogoutSuccess notify."); LoginMgr.getInstance().handleLogoutSuccess(userId, serviceAccountType); } |
接口描述
登出失敗。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtLogoutFailed(long userId, TsdkCommonResult result);
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
result |
結(jié)果。 |
返回值
無(wú)。
代碼示例
//Java code public void handleLogoutFailed(int userId, TsdkCommonResult result) { LogUtil.e(TAG, "logout failed: " + result.getReasonDescription()); } |
接口描述
強(qiáng)制登出通知(帳號(hào)被強(qiáng)制登出)。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtForceLogout(long userId, TsdkServiceAccountType serviceAccountType, TsdkForceLogoutInfo forceLogoutInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
serviceAccountType |
服務(wù)帳號(hào)類(lèi)型。 |
|
forceLogoutInfo |
強(qiáng)制登出信息。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtForceLogout(int userId, TsdkServiceAccountType serviceAccountType, TsdkForceLogoutInfo forceLogoutInfo) { Log.i(TAG, "onEvtForceLogout notify."); LoginMgr.getInstance().handleForceLogout(userId); } |
接口描述
VoIP帳號(hào)狀態(tài)信息。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtVoipAccountStatus(long userId, TsdkVoipAccountInfo voipAccountInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
voipAccountInfo |
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(); } } |
接口描述
防火墻探測(cè)失敗。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtFirewallDetectFailed(long userId, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
result |
結(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()); } |
接口描述
創(chuàng)建STG通道失敗。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtBuildStgTunnelFailed(long userId, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
result |
結(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()); } |
接口描述
安全隧道信息通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtSecurityTunnelInfoInd(long userId, long firewallMode, TsdkSecurityTunnelInfo securityTunnelInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
firewallMode |
long |
防火墻模式。 |
securityTunnelInfo |
安全隧道信息。 |
返回值
無(wú)。
代碼示例
//Java code public void handleSecurityTunnelInfoInd(int userId, int firewallMode, TsdkSecurityTunnelInfo securityTunnelInfo) { LogUtil.i(TAG, "security tunnel info: " + userId + firewallMode); } |
接口描述
密碼修改結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtModifyPasswordResult(long userId, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
result |
結(jié)果。 |
返回值
無(wú)。
代碼示例
//Java code @Override public void onEvtModifyPasswordResult(int userId, final TsdkCommonResult result) { Log.i(TAG, "onEvtModifyPasswordResult notify."); LoginMgr.getInstance().handModifyPasswordResult(result); } |
接口描述
登錄狀態(tài)恢復(fù)中通知(一般在網(wǎng)絡(luò)發(fā)生變化時(shí)觸發(fā))。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtLoginResumingInd(long userId); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
返回值
無(wú)。
代碼示例
//Java code @Override public void onEvtLoginResumingInd(long userId) { LogUtil.i(TAG, "onEvtLoginResumingInd notify."); LoginMgr.getInstance().handLoginResumingInd((int)userId); } |
接口描述
登錄狀態(tài)恢復(fù)結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtLoginResumeResult(long userId, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
result |
結(jié)果。 |
返回值
無(wú)。
代碼示例
//Java code @Override public void onEvtLoginResumeResult(long userId, TsdkCommonResult result) { LogUtil.i(TAG, "onEvtLoginResumeResult notify."); LoginMgr.getInstance().handLoginResumeResult(result); } |
接口描述
呼叫結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtCallStartResult(TsdkCall call, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
result |
結(jié)果。 |
|
call |
呼叫信息。 |
返回值
無(wú)。
代碼示例
//Java code None |
接口描述
來(lái)電事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtCallIncoming(TsdkCall call, Boolean maybeVideoCall); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
|
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); } |
接口描述
呼出事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtCallOutgoing(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } |
接口描述
回鈴音事件。
注意事項(xiàng)
在需要APP播放回鈴音時(shí)上報(bào)。
方法定義
void onEvtCallRingback(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } } |
接口描述
RTP創(chuàng)建事件。
注意事項(xiàng)
RTP通道已建立,可以進(jìn)行二次撥號(hào)。
方法定義
void onEvtCallRtpCreated(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } |
接口描述
通話建立事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtCallConnected(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } |
接口描述
通話結(jié)束。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtCallEnded(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } |
接口描述
呼叫銷(xiāo)毀事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtCallDestroy(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } |
接口描述
遠(yuǎn)端請(qǐng)求打開(kāi)視頻(音頻通話升級(jí)為視頻通話)。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtOpenVideoReq(TsdkCall call, TsdkVideoOrientation orientType); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
|
orientType |
視頻方向(橫豎屏狀態(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); } |
接口描述
遠(yuǎn)端拒絕音頻轉(zhuǎn)視頻。
注意事項(xiàng)
遠(yuǎn)端拒絕請(qǐng)求打開(kāi)視頻通知(遠(yuǎn)端用戶拒絕或超時(shí)未響應(yīng))。
方法定義
void onEvtRefuseOpenVideoInd(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } |
接口描述
關(guān)閉視頻(視頻轉(zhuǎn)音頻)通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtCloseVideoInd(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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(); } } |
接口描述
打開(kāi)視頻(音頻轉(zhuǎn)視頻)通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtOpenVideoInd(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } |
接口描述
刷新窗口信息通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtRefreshViewInd(TsdkCall call, TsdkVideoViewRefresh refreshInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
|
refreshInfo |
視頻刷新事件信息。 |
返回值
無(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; } } |
接口描述
呼叫路由變更通知。
注意事項(xiàng)
主要用于iOS。
方法定義
void onEvtCallRouteChange(TsdkCall call, long route); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
|
route |
long |
路由下標(biāo)。 |
返回值
無(wú)。
代碼示例
//Java code None |
接口描述
音頻文件播放結(jié)束通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtPlayMediaEnd(long handle); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
handle |
long |
文件句柄。 |
返回值
無(wú)。
代碼示例
//Java code None |
接口描述
會(huì)話修改完成通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtSessionModified(TsdkCall call, TsdkSessionModified sessionInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
|
sessionInfo |
會(huì)話修改完成結(jié)果信息。 |
返回值
無(wú)。
代碼示例
//Java code None |
接口描述
會(huì)話正在使用的codec通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtSessionCodec(TsdkCall call, TsdkSessionCodec codecInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
|
codecInfo |
會(huì)話正在使用的編解碼器信息。 |
返回值
無(wú)。
代碼示例
//Java code None |
接口描述
呼叫保持成功事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtHoldSuccess(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } } |
接口描述
呼叫保持失敗事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtHoldFailed(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } } |
接口描述
取消呼叫保持成功事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtUnholdSuccess(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(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); } |
接口描述
取消呼叫保持失敗事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtUnholdFailed(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtUnholdFailed(TsdkCall call){ Log.i(TAG, "handleUnholdFailed"); CallInfo callInfo = getCallInfo(call); mCallNotification.onCallEventNotify(CallConstant.CallEvent.UN_HOLD_FAILED, callInfo); } |
接口描述
結(jié)束呼叫失敗事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtEndcallFailed(TsdkCall call, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
result |
結(jié)果。 |
|
call |
呼叫信息。 |
返回值
無(wú)。
代碼示例
//Java code None |
接口描述
偏轉(zhuǎn)失敗事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtDivertFailed(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtDivertFailed(TsdkCall call){ Log.i(TAG, "handleDivertFailed"); CallInfo callInfo = getCallInfo(call); mCallNotification.onCallEventNotify(CallConstant.CallEvent.DIVERT_FAILED, callInfo); } |
接口描述
盲轉(zhuǎn)成功事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtBldTransferSuccess(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtBldTransferSuccess(TsdkCall call){ Log.i(TAG, "handleBldTransferSuccess"); CallInfo callInfo = getCallInfo(call); mCallNotification.onCallEventNotify(CallConstant.CallEvent.BLD_TRANSFER_SUCCESS, callInfo); } |
接口描述
盲轉(zhuǎn)失敗事件。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtBldTransferFailed(TsdkCall call); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtBldTransferFailed(TsdkCall call){ Log.i(TAG, "handleBldTransferFailed"); CallInfo callInfo = getCallInfo(call); mCallNotification.onCallEventNotify(CallConstant.CallEvent.BLD_TRANSFER_FAILED, callInfo); } |
接口描述
呼叫統(tǒng)計(jì)信息上報(bào)。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtStatisticInfo(TsdkCall call, long signalStrength, TsdkCallStatisticInfo statisticInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
|
signalStrength |
long |
信號(hào)強(qiáng)度。 |
statisticInfo |
統(tǒng)計(jì)信息。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtStatisticInfo(TsdkCall call, long signalStrength, TsdkCallStatisticInfo statisticInfo) { CallMgr.getInstance().handleUpDateCallStatisticInfo(signalStrength, statisticInfo); } |
接口描述
預(yù)約會(huì)議結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtBookConfResult(TsdkCommonResult result, TsdkConfBaseInfo confBaseInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
result |
操作結(jié)果。 |
|
confBaseInfo |
會(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()); } |
接口描述
查詢會(huì)議列表結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtQueryConfListResult(TsdkCommonResult result, TsdkConfListInfo confList); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
result |
操作結(jié)果。 |
|
confList |
會(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); } |
接口描述
查詢會(huì)議詳情結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtQueryConfDetailResult(TsdkCommonResult result, TsdkConfDetailInfo confDetailInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
result |
操作結(jié)果。 |
|
confDetailInfo |
會(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); } |
接口描述
加入會(huì)議結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtJoinConfResult(TsdkConference conference, TsdkCommonResult result, TsdkJoinConfIndInfo info); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
result |
操作結(jié)果。 |
|
info |
會(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); } } |
接口描述
獲取數(shù)據(jù)會(huì)議入會(huì)參數(shù)結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtGetDataconfParamResult(TsdkConference conference, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
result |
操作結(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); } |
接口描述
會(huì)控操作結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtConfctrlOperationResult(TsdkConference conference, TsdkConfOperationResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
result |
會(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; } } |
接口描述
會(huì)議信息及狀態(tài)更新。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtInfoAndStatusUpdate(TsdkConference conference); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(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); } |
接口描述
發(fā)言方通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtSpeakerInd(TsdkConference conference, TsdkConfSpeakerInfo speakerList); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
speakerList |
發(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()); } |
接口描述
申請(qǐng)會(huì)控權(quán)限失敗。
注意事項(xiàng)
與會(huì)者在會(huì)議中將無(wú)會(huì)控權(quán)限,但仍可參與會(huì)議。
方法定義
void onEvtRequestConfRightFailed(TsdkConference conference, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
result |
操作結(jié)果。 |
返回值
無(wú)。
代碼示例
//Java code None |
接口描述
會(huì)議來(lái)電通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtConfIncomingInd(TsdkConference conference); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(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); } |
接口描述
會(huì)議結(jié)束通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtConfEndInd(TsdkConference conference); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
返回值
無(wú)。
代碼示例
//Java code public void handleConfEndInd(TsdkConference conference) { Log.i(TAG, "handleConfEndInd" + conference.getHandle()); currentConference = null; } |
接口描述
加入數(shù)據(jù)會(huì)議結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtJoinDataConfResult(TsdkConference conference, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
result |
操作結(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); } |
接口描述
應(yīng)用共享狀態(tài)通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtAsStateChange(TsdkConference conference, TsdkConfAppShareType shareType, TsdkConfAsStateInfo asStateInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
shareType |
共享類(lèi)型:屏幕或程序。 |
|
asStateInfo |
共享狀態(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; } } |
接口描述
共享者變更通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtAsOwnerChange(TsdkConference conference, TsdkConfAsActionType actionType, TsdkAttendee owner); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
actionType |
共享行為類(lèi)型。 |
|
owner |
共享者。 |
返回值
無(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; } } |
接口描述
新建一個(gè)共享文檔通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtDsDocNew(TsdkConference conference, TsdkDocBaseInfo docBaseInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
docBaseInfo |
文檔基礎(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); } |
接口描述
刪除一個(gè)共享文檔通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtDsDocDel(TsdkConference conference, TsdkDocShareDelDocInfo docShareDelDocInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
docShareDelDocInfo |
文檔刪除信息。 |
返回值
無(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); } } |
接口描述
新建一個(gè)白板文檔通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtWbDocNew(TsdkConference conference, TsdkDocBaseInfo docBaseInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
docBaseInfo |
文檔基礎(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); } |
接口描述
刪除一個(gè)白板文檔通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtWbDocDel(TsdkConference conference, TsdkWbDelDocInfo wbDelDocInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
wbDelDocInfo |
刪除的白板信息。 |
返回值
無(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); } } |
接口描述
收到會(huì)議中的聊天消息通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtRecvChatMsg(TsdkConference conference, TsdkConfChatMsgInfo chatMsgInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
chatMsgInfo |
聊天信息。 |
返回值
無(wú)。
代碼示例
//Java code public void handleRecvChatMsg(TsdkConfChatMsgInfo confChatMsgInfo) { mConfNotification.onConfEventNotify(ConfConstant.CONF_EVENT.CONF_CHAT_MSG, confChatMsgInfo); } |
接口描述
匿名入會(huì),獲取臨時(shí)帳號(hào)結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtGetTempUserResult(long userId, TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
userId |
long |
用戶ID。 |
result |
結(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); } |
接口描述
呼叫轉(zhuǎn)成會(huì)議結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtTransToConfResult(TsdkCall call,TsdkCommonResult result); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
call |
呼叫信息。 |
|
result |
結(jié)果。 |
返回值
無(wú)。
代碼示例
//Java code None |
接口描述
SVC(多流)會(huì)議下正在觀看畫(huà)面信息通知。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtSvcWatchInfoInd(TsdkConference conference, TsdkConfSvcWatchInfo svWatchInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
svWatchInfo |
SVC(多流)會(huì)議下正在觀看畫(huà)面信息。 |
返回值
無(wú)。
代碼示例
//Java code @Override public void onEvtSvcWatchInfoInd(TsdkConference conference, TsdkConfSvcWatchInfo svcWatchInfo) { LogUtil.i(TAG, "onEvtSvcWatchInfoInd notify."); MeetingMgr.getInstance().handleSvcWatchInfoInd(conference, svcWatchInfo); } |
接口描述
共享統(tǒng)計(jì)信息上報(bào)。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtShareStatisticInfo(TsdkConference conference, TsdkShareStatisticInfo statisticInfo); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
statisticInfo |
共享統(tǒng)計(jì)信息。 |
返回值
無(wú)。
代碼示例
//Java code public void onEvtShareStatisticInfo(TsdkConference conference, TsdkShareStatisticInfo statisticInfo) { MeetingMgr.getInstance().handleShareStatisticInfo(conference, statisticInfo); } |
接口描述
會(huì)議恢復(fù)中通知(一般在網(wǎng)絡(luò)發(fā)生變化時(shí)觸發(fā))。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtConfResumingInd(TsdkConference conference); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
返回值
無(wú)。
代碼示例
//Java code @Override public void onEvtConfResumingInd(TsdkConference conference) { LogUtil.i(TAG, "onEvtConfResumingInd notify."); MeetingMgr.getInstance().handleConfResumingInd(); } |
接口描述
會(huì)議恢復(fù)(重新加入)結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtConfResumeResult(TsdkConference conference, TsdkCommonResult result, TsdkResumeConfIndInfo info); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
conference |
會(huì)議信息。 |
|
result |
操作結(jié)果。 |
|
info |
會(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); } |
接口描述
查詢聯(lián)系人信息返回結(jié)果。
注意事項(xiàng)
查詢到的聯(lián)系人信息包括:UC帳號(hào)、姓名、工號(hào)、IP號(hào)碼、部門(mén)名字、職務(wù)、郵箱、手機(jī)號(hào)碼、座機(jī)號(hào)碼、家庭電話、性別、郵編、地址、簽名和硬終端等。
方法定義
void onEvtSearchContactsResult(long querySeqNo, TsdkCommonResult result, TsdkSearchContactsResult searchContactResult); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
querySeqNo |
long |
查詢序列號(hào)。 |
result |
查詢結(jié)果。 |
|
searchContactResult |
查詢到的聯(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); } } |
接口描述
查詢頭像信息返回結(jié)果。
注意事項(xiàng)
無(wú)。
方法定義
void onEvtGetIconResult(long querySeqNo, TsdkCommonResult result, TsdkGetIconResult getIconResult); |
參數(shù)描述
參數(shù)名 |
類(lèi)型 |
描述 |
---|---|---|
querySeqNo |
long |
查詢序列號(hào)。 |
result |
查詢結(jié)果。 |
|
getIconResult |
查詢到的頭像信息。 |
返回值
無(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); } } |