Commit 7967b66f by 严久程

声网日志

parent 83ff181a
......@@ -2,11 +2,13 @@ package com.ydl.audioim
import android.annotation.SuppressLint
import android.content.Context
import android.os.Handler
import android.text.TextUtils
import com.alibaba.android.arouter.launcher.ARouter
import com.google.gson.Gson
import com.ydl.audioim.http.AudioApiRequestUtil
import com.ydl.audioim.http.command.ConnectExceptionCommand
import com.ydl.audioim.utils.AudioLogUtils
import com.ydl.consultantim.ConsultantAudioHomeActivity
import com.ydl.ydl_av.chat.bean.AudioMessageBean
import com.ydl.ydl_av.messge_service.YDLRTMClient
......@@ -38,6 +40,10 @@ class YDLavManager {
companion object {
val FILE_NAME="consult"
//当前sdk的登录状态
var sdkStatus = -1
val instances: YDLavManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
YDLavManager()
}
......@@ -49,6 +55,14 @@ class YDLavManager {
YDLRTMClient.instances.init(context, appId, listener)
//设置回调
setCallback()
val uid= ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid
if (!TextUtils.isEmpty(uid) && !TextUtils.equals("0", uid)) {
//不延时,可能会导致请求api报 network not unablibale
Handler().postDelayed({
login(uid)
}, 300)
}
}
......@@ -88,6 +102,7 @@ class YDLavManager {
if (act is AudioHomeActivity) {
act.runOnUiThread {
ToastUtil.toastShort("对方已挂断")
act. writeAgoraLog("被叫拒绝了通话邀请")
//通话结束或挂断时,上传日志文件
act.uploadLog()
act.leaveChannel()
......@@ -100,17 +115,23 @@ class YDLavManager {
override fun onCallCanceled(response: CallLocalResponse?) {
//返回给主叫
LogUtil.e("[agora]主叫已取消呼叫邀请")
val act = ActivityManager.getInstance().getTopTaskActivity()
if (act is AudioHomeActivity) {
act.runOnUiThread {
act.writeAgoraLog("主叫呼叫取消:超时或主动取消")
}
}
}
override fun onCallFailure(response: CallLocalResponse?, errorCode: Int) {
//返回给主叫
LogUtil.e("[agora]呼叫${response?.calleeId}用户失败:${response?.response}")
val act = ActivityManager.getInstance().getTopTaskActivity()
//专家离线或者30 秒后仍未收到专家响应,重新再邀请一次
when (errorCode) {
//被叫不在线 呼叫邀请发出 30 秒后被叫仍未 ACK 响应呼叫邀请
RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_PEER_OFFLINE,
RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_PEER_NO_RESPONSE -> {
val act = ActivityManager.getInstance().getTopTaskActivity()
if (act is AudioHomeActivity) {
act.runOnUiThread {
act.rtcCall()
......@@ -118,7 +139,14 @@ class YDLavManager {
}
}
RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_INVITATION_EXPIRE -> {//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
if (act is AudioHomeActivity) {
act.runOnUiThread {
act. writeAgoraLog("呼叫失败:${errorCode}")
//通话结束或挂断时,上传日志文件
act.uploadLog()
act.leaveChannel()
}
}
}
}
}
......@@ -126,7 +154,7 @@ class YDLavManager {
override fun onRemoteInvitationReceived(response: CallRemoteResponse?) {
//返回给被叫
LogUtil.e("[agora]收到来自${response?.callerId}的呼叫邀请")
receivedCall(response?.content)
receivedCall(response?.content, "来自RTM")
}
override fun onRemoteInvitationAccepted(response: CallRemoteResponse?) {
......@@ -142,12 +170,18 @@ class YDLavManager {
override fun onRemoteInvitationCanceled(response: CallRemoteResponse?) {
//返回给被叫
LogUtil.e("[agora]主叫${response?.callerId}已取消呼叫邀请")
AudioLogUtils.writeAgoraLog("呼叫邀请被取消:主叫主动取消",FILE_NAME)
closePage()
}
override fun onRemoteInvitationFailure(response: CallRemoteResponse?, errorCode: Int) {
//返回给被叫
LogUtil.e("[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}")
if (errorCode == RtmStatusCode.RemoteInvitationError.REMOTE_INVITATION_ERR_INVITATION_EXPIRE) {//呼叫邀请过期
AudioLogUtils.writeAgoraLog("呼叫邀请被取消:呼叫邀请过期",FILE_NAME)
} else {
AudioLogUtils.writeAgoraLog("呼叫邀请被取消:错误原因(${errorCode})",FILE_NAME)
}
//关闭页面
closePage()
}
......@@ -158,8 +192,16 @@ class YDLavManager {
})
}
@SuppressLint("CheckResult")
fun login(userId: String?) {
login(userId) { _, _ ->
}
}
@SuppressLint("CheckResult")
fun login(userId: String?, event: (isSuccess: Boolean, msg: String?) -> Unit) {
if (TextUtils.isEmpty(userId) || userId ?: "0" <= "0") {
//如果uid为空或小于等于0 ,则不进行登录,因为uid为0也会登录成功,会导致后面uid正确时无法登录
LogUtil.e("[agora]login-uid:$userId")
......@@ -177,10 +219,12 @@ class YDLavManager {
override fun onSuccess() {
//登陆成功,发起呼叫
LogUtil.e("[agora]实时消息登录成功")
event(true, "")
}
override fun onFailure(msg: String?) {
LogUtil.e("[agora]实时消息登录失败:$msg")
event(false, msg)
}
})
......@@ -199,7 +243,7 @@ class YDLavManager {
* 收到邀请
*/
@SuppressLint("CheckResult")
fun receivedCall(content: String?) {
fun receivedCall(content: String?, from: String = "") {
if (!TextUtils.isEmpty(content)) {
//如果已经接听了用户电话 再有电话进来 是不能接听的
if (!activityIsExists(ConsultantAudioHomeActivity::class.java) && !activityIsExists(
......@@ -215,14 +259,10 @@ class YDLavManager {
ARouter.getInstance().build("/av/ConsultantAudioHomeActivity")
.withString("param", content)
.navigation()
AudioLogUtils.writeAgoraLog("收到主叫方通话邀请($from)", FILE_NAME, false)
}
} else {
try {
val mAudioMessageBean = Gson().fromJson(content, AudioMessageBean::class.java)
YDLRTMClient.instances.refuseCall(mAudioMessageBean.channelId)
} catch (e: Exception) {
}
LogUtil.d("[agora]收到声网邀请,但界面实例已存在")
}
} else {
......@@ -303,6 +343,7 @@ class YDLavManager {
}
override fun onConnectionStateChanged(state: Int, reason: Int) {
sdkStatus = state
LogUtil.i("[agora]onConnectionStateChanged:state:${state} -->reason:$reason")
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment