diff --git a/m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt b/m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt index 5c2096a..6464d79 100644 --- a/m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt +++ b/m-audioim/src/main/java/com/ydl/audioim/AudioHomeActivity.kt @@ -50,6 +50,8 @@ import com.ydl.ydlcommon.utils.LogUtil import com.ydl.ydlcommon.utils.StatusBarUtils import com.ydl.ydlcommon.utils.Utils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils +import com.ydl.ydlcommon.utils.log.AliYunLogConfig +import com.ydl.ydlcommon.utils.log.AliYunLogHelper import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.remind.ToastHelper import com.yidianling.common.tools.ToastUtil @@ -212,6 +214,8 @@ class AudioHomeActivity : uploadException("mRtcEventHandler-onWarning:warnCode--%${warn}", callback = null) LogUtil.e("[agora]发生警告回调$warn") writeAgoraLog("声网警告回调($warn)") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "声网警告回调($warn)") //103:没有可用的频道资源。可能是因为服务端没法分配频道资源 //104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器 //105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的 @@ -240,6 +244,8 @@ class AudioHomeActivity : super.onError(err) uploadException("mRtcEventHandler-onError:errorCode--%${err}", callback = null) writeAgoraLog("声网错误回调errorCode--%${err}") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "声网错误回调errorCode--%${err}") //3:SDK 初始化失败。Agora 建议尝试以下处理方法 //7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化 //10:API 调用超时。有些 API 调用需要 SDK 返回结果,如果 SDK 处理时间过长,超过 10 秒没有返回,会出现此错误 @@ -283,11 +289,15 @@ class AudioHomeActivity : override fun onApiCallExecuted(error: Int, api: String?, result: String?) { super.onApiCallExecuted(error, api, result) // LogUtil.e("[agora]$api 已执行回调 $result") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "$api 已执行回调 $result") } override fun onJoinChannelSuccess(channel: String?, uid: Int, elapsed: Int) { super.onJoinChannelSuccess(channel, uid, elapsed) LogUtil.e("[agora]$uid 用户声网加入频道成功:channel=$channel") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "$uid 用户声网加入频道成功:channel=$channel") //更新ui // onJoinChannelSuccess() @@ -303,6 +313,8 @@ class AudioHomeActivity : override fun onRejoinChannelSuccess(channel: String?, uid: Int, elapsed: Int) { super.onRejoinChannelSuccess(channel, uid, elapsed) LogUtil.e("[agora]$uid 用户声网重新加入频道成功:channel=$channel") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "$uid 用户声网重新加入频道成功:channel=$channel") runOnUiThread { //自己加入频道成功 if (!isConnectSuccess) { @@ -316,6 +328,8 @@ class AudioHomeActivity : override fun onRtcStats(stats: IRtcEngineEventHandler.RtcStats?) { super.onRtcStats(stats) writeAgoraLog("声网onRtcStats:users:${stats?.users}") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "声网onRtcStats:users:${stats?.users}") // 不需要移动端做离开房间逻辑,服务端会判断进行踢人逻辑 //因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断 // if (isConnectSuccess && null != stats?.users && stats.users == 1) { @@ -332,6 +346,8 @@ class AudioHomeActivity : // 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑 if (reason == 3) { writeAgoraLog("通话结束:网络连接被服务器中止 该情况现在是因为后端踢人逻辑,原因(${reason})") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "通话结束:网络连接被服务器中止 该情况现在是因为后端踢人逻辑,原因(${reason})") // com.yidianling.common.tools.ToastUtil.toastShort("专家已挂断") //通话结束或挂断时,上传日志文件 uploadLog() @@ -343,6 +359,8 @@ class AudioHomeActivity : override fun onLeaveChannel(stats: IRtcEngineEventHandler.RtcStats?) { super.onLeaveChannel(stats) LogUtil.e("[agora]离开频道回调") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "离开频道回调") //通话结束或挂断时,上传日志文件 uploadLog() } @@ -351,12 +369,16 @@ class AudioHomeActivity : override fun onUserJoined(uid: Int, elapsed: Int) { super.onUserJoined(uid, elapsed) LogUtil.e("[agora]远端用户/主播加入频道回调") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "远端用户/主播加入频道回调") } override fun onUserOffline(uid: Int, elapsed: Int) { super.onUserOffline(uid, elapsed) LogUtil.e("[agora]远端用户$uid 离开频道回调") writeAgoraLog("接通后通话结束:对方已挂断") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "接通后通话结束:对方已挂断") //通话结束或挂断时,上传日志文件 uploadLog() showToast("专家已挂断") @@ -430,6 +452,8 @@ class AudioHomeActivity : //页面传递数据初始化 initIntentData() writeAgoraLog("通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}") if (YDLavManager.sdkStatus != Constants.CONNECTION_STATE_CONNECTED) { //再次登录声网,确保声网登录状态 reLoginRTM() @@ -486,6 +510,8 @@ class AudioHomeActivity : commentUrl = intent.getStringExtra(IntentConstants.INTENT_COMMENT_URL) dialStatus = intent.getStringExtra(IntentConstants.INTENT_DIALSTATUS) writeAgoraLog("专家的通话状态dialStatus:$dialStatus", false) + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "专家的通话状态dialStatus:$dialStatus") isShowAXB = intent.getBooleanExtra(IntentConstants.INTENT_ISSHOWAXB, true) val logBean = AgoraLogInfoBean( @@ -500,7 +526,8 @@ class AudioHomeActivity : ) val content = Gson().toJson(logBean) writeAgoraLog("主叫方发送的邀请通话消息内容:$content", true) - + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "主叫方发送的邀请通话消息内容:$content") localRemainTime = remainTime?.toInt() handler = Handler() vibrator = getSystemService(Service.VIBRATOR_SERVICE) as Vibrator? @@ -508,6 +535,8 @@ class AudioHomeActivity : private fun reLoginRTM() { writeAgoraLog("RMT状态:${YDLavManager.sdkStatus},重新登录RMT") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "RMT状态:${YDLavManager.sdkStatus},重新登录RMTt") val uid = YdlCommonRouterManager.getYdlCommonRoute().getUid().toString() YDLavManager.instances.login(uid) { _isSuccess, _msg -> // writeAgoraLog("拨打电话界面打开RTM重新登录,uid=${uid}") @@ -518,6 +547,8 @@ class AudioHomeActivity : private fun initView() { writeAgoraLog("用户拨打电话界面开启") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "用户拨打电话界面开启") tv_change_route.isEnabled = false //水波纹view初始化 wave_view.setDuration(6000) @@ -563,6 +594,8 @@ class AudioHomeActivity : } if (isConnectSuccess) { writeAgoraLog("已接通:主叫主动挂断") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "已接通:主叫主动挂断") updateExpertStatus(false, 1) leaveChannel() uploadLog() @@ -611,6 +644,8 @@ class AudioHomeActivity : when { permission.granted -> { writeAgoraLog("请求音频权限通过") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "请求音频权限通过") init() } permission.shouldShowRequestPermissionRationale -> { @@ -620,6 +655,8 @@ class AudioHomeActivity : // 拒绝权限操作发送给服务端 uploadException("AudioNotAuth","zhu",YDLavManager.AUDIO_NO_AUTH_ERROR_CODE,null) writeAgoraLog("拒绝请求音频权限") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "拒绝请求音频权限") uploadLog() ToastHelper.show(getString(R.string.audioim_need_storage_permission_hint)) @@ -682,6 +719,8 @@ class AudioHomeActivity : //关闭音乐 stopPlaying() writeAgoraLog("未接通挂断:50s等待倒计时结束挂断") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "未接通挂断:50s等待倒计时结束挂断") //提示切换传统线路 //发送消息通知专家用户已挂断 YDLavManager.instances.cancelCall( @@ -690,6 +729,8 @@ class AudioHomeActivity : sendDoctocrMsg!! ) { msg, code -> writeAgoraLog("未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断") } //通话结束或挂断时,上传日志文件 uploadLog() @@ -725,6 +766,8 @@ class AudioHomeActivity : */ fun joinChannel() { writeAgoraLog("对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "对方(专家)接受了通话邀请,主叫(用户)开始加入频道:$channelId") voiceManage!!.getVoiceApi().joinChannel( token!!, channelId!!, @@ -740,6 +783,8 @@ class AudioHomeActivity : */ private fun userCloseCalling() { writeAgoraLog("未接听时:主叫(用户)主动挂断,取消呼叫") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断,取消呼叫") LogUtil.e("未接听挂断") //发送消息通知专家用户已挂断 YDLavManager.instances.cancelCall( @@ -748,6 +793,8 @@ class AudioHomeActivity : sendDoctocrMsg!! ) { msg, code -> writeAgoraLog("未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "未接听时:主叫(用户)主动挂断失败,msg=$msg($code),再次挂断") } //通话结束或挂断时,上传日志文件 uploadLog() @@ -793,6 +840,8 @@ class AudioHomeActivity : val dialog = AxbConfirmDialog(mContext, type, object : AxbConfirmDialog.OnClickEnsureListener { override fun onClickEnsure() { writeAgoraLog("主叫点击切换AXB按钮") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "主叫点击切换AXB按钮") switchAXB() } @@ -815,6 +864,8 @@ class AudioHomeActivity : uploadException("", "zhu", "108", object : YDLavManager.UploadExceptionCallback { override fun onSuccess() { writeAgoraLog("离开房间成功,主叫切换AXB之后") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "离开房间成功,主叫切换AXB之后") mPresenter.getAXBPhone(ConnectCommand(listenId!!, "1")) } @@ -848,6 +899,8 @@ class AudioHomeActivity : sendDoctocrMsg!! ) { msg, code -> writeAgoraLog("未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "未接听时:主叫主动挂断失败,msg=$msg($code),再次挂断") } leaveChannel() } diff --git a/m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt b/m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt index 3f84d9c..b3665b0 100644 --- a/m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt +++ b/m-audioim/src/main/java/com/ydl/audioim/YDLavManager.kt @@ -22,13 +22,12 @@ import com.ydl.ydl_av.messge_service.callback.LoginCallback import com.ydl.ydl_av.messge_service.request.LoginParam import com.ydl.ydl_av.messge_service.response.CallLocalResponse import com.ydl.ydl_av.messge_service.response.CallRemoteResponse -import com.ydl.ydlcommon.base.BaseApp import com.ydl.ydlcommon.modular.ModularServiceManager import com.ydl.ydlcommon.utils.ActivityManager import com.ydl.ydlcommon.utils.LogUtil -import com.ydl.ydlcommon.utils.SharedPreferencesEditor +import com.ydl.ydlcommon.utils.log.AliYunLogConfig +import com.ydl.ydlcommon.utils.log.AliYunLogHelper import com.ydl.ydlcommon.utils.log.LogHelper -import com.yidianling.common.tools.RxSPTool import com.yidianling.common.tools.ToastUtil import com.yidianling.im.api.bean.IMRegisterObserverCustomNotificationCallBack import com.yidianling.im.api.bean.IMSendCustomNotificationResultCallBack @@ -93,6 +92,10 @@ class YDLavManager { override fun onCallRecivedByPeer(response: CallLocalResponse?) { //返回给主叫:被叫已收到呼叫邀请 LogUtil.e("[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}") + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}" + ) val act = ActivityManager.getInstance().getTopTaskActivity() if (act is AudioHomeActivity) { @@ -106,7 +109,10 @@ class YDLavManager { override fun onCallAccepted(response: CallLocalResponse?, msg: String?) { //返回给主叫 LogUtil.e("[agora]${response?.calleeId}已接收呼叫邀请") - + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "${response?.calleeId}已接收呼叫邀请" + ) //加入声网频道时机修改:主叫收到被叫接受邀请的回调后再加入声网频道 val act = ActivityManager.getInstance().getTopTaskActivity() if (act is AudioHomeActivity) { @@ -119,7 +125,10 @@ class YDLavManager { override fun onCallRefused(response: CallLocalResponse?, msg: String?) { //返回给主叫 LogUtil.e("[agora]${response?.calleeId}已拒绝呼叫邀请") - + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "${response?.calleeId}已拒绝呼叫邀请" + ) val act = ActivityManager.getInstance().getTopTaskActivity() if (act is AudioHomeActivity) { act.runOnUiThread { @@ -137,6 +146,10 @@ class YDLavManager { override fun onCallCanceled(response: CallLocalResponse?) { //返回给主叫 LogUtil.e("[agora]主叫已取消呼叫邀请") + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "主叫已取消呼叫邀请" + ) val act = ActivityManager.getInstance().getTopTaskActivity() if (act is AudioHomeActivity) { act.runOnUiThread { @@ -149,6 +162,10 @@ class YDLavManager { override fun onCallFailure(response: CallLocalResponse?, errorCode: Int) { //返回给主叫 LogUtil.e("[agora]呼叫${response?.calleeId}用户失败:${response?.response}") + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "呼叫${response?.calleeId}用户失败:${response?.response}" + ) val act = ActivityManager.getInstance().getTopTaskActivity() //专家离线或者30 秒后仍未收到专家响应,重新再邀请一次 when (errorCode) { @@ -160,26 +177,13 @@ class YDLavManager { } } } - RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_INVITATION_EXPIRE -> { //呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。 - - /* - * 和IOS保持一致,当呼叫邀请为3的时候不处理 - * */ - /* if (act is AudioHomeActivity) { - act.runOnUiThread { - sendCustomNotification(response?.calleeId!!, response?.ChannelId!!, "5") - callEndStatusUpdate(response.ChannelId!!, 2, "被叫超时未接听") - act.uploadExceptionStatus("对方未接听", 3) -// //通话结束或挂断时,上传日志文件 -// act.uploadLog() -// act.leaveChannel() - } - }*/ + RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_INVITATION_EXPIRE -> { + //呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。 } } //呼叫失败日志输出 - if (act is AudioHomeActivity){ - act.runOnUiThread{ + if (act is AudioHomeActivity) { + act.runOnUiThread { act.writeAgoraLog("发送通话邀请失败:${errorCode}") LogHelper.getInstance().uploadLog(false) } @@ -189,17 +193,29 @@ class YDLavManager { override fun onRemoteInvitationReceived(response: CallRemoteResponse?) { //返回给被叫 LogUtil.e("[agora]收到来自${response?.callerId}的呼叫邀请") + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "收到来自${response?.callerId}的呼叫邀请" + ) receivedCall(response?.content, "来自RTM") } override fun onRemoteInvitationAccepted(response: CallRemoteResponse?) { //返回给被叫 LogUtil.e("[agora]接受来自${response?.callerId}的呼叫成功") + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "接受来自${response?.callerId}的呼叫成功" + ) } override fun onRemoteInvitationRefused(response: CallRemoteResponse?) { //返回给被叫 LogUtil.e("[agora]已拒绝来自${response?.callerId}的呼叫") + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "已拒绝来自${response?.callerId}的呼叫" + ) val act = ActivityManager.getInstance().getTopTaskActivity() if (act is ConsultantAudioHomeActivity) { act.uploadExceptionStatus("已拒绝", 2) @@ -210,7 +226,14 @@ class YDLavManager { callEndStatusUpdate(response?.ChannelId!!, 1, "主叫取消呼叫") //返回给被叫 LogUtil.e("[agora]主叫${response?.callerId}已取消呼叫邀请") - writeAgoraLog("呼叫邀请被取消:主叫(专家)主动取消-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "主叫${response?.callerId}已取消呼叫邀请" + ) + writeAgoraLog( + "呼叫邀请被取消:主叫(专家)主动取消-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", + FILE_NAME + ) val act = ActivityManager.getInstance().getTopTaskActivity() if (act is ConsultantAudioHomeActivity) { @@ -224,13 +247,26 @@ class YDLavManager { //返回给被叫 LogUtil.e("[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}") if (errorCode == RtmStatusCode.RemoteInvitationError.REMOTE_INVITATION_ERR_INVITATION_EXPIRE) { //呼叫邀请过期 - writeAgoraLog("呼叫邀请被取消:用户未接听-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "呼叫邀请被取消:用户未接听" + ) + writeAgoraLog( + "呼叫邀请被取消:用户未接听-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", + FILE_NAME + ) val act = ActivityManager.getInstance().getTopTaskActivity() if (act is ConsultantAudioHomeActivity) { act.uploadExceptionStatus("未接听", 3) } } else { - writeAgoraLog("呼叫邀请被取消:错误原因(${errorCode})-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME) + writeAgoraLog( + "呼叫邀请被取消:错误原因(${errorCode})", FILE_NAME + ) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "呼叫邀请被取消:错误原因(${errorCode})" + ) } callEndStatusUpdate(response?.ChannelId!!, 2, "超时未接听导致的取消呼叫") //关闭页面 @@ -239,11 +275,29 @@ class YDLavManager { override fun onOtherMsg(error: String?) { LogUtil.e("[agora]其它消息:${error}") - if (error.equals("呼叫发送成功")){ - writeAgoraLog("声网发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log",true) - }else{ - writeAgoraLog("声网发送通话邀请失败${error}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log",true) + if (error.equals("呼叫发送成功")) { + writeAgoraLog( + "声网发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", + "confide.log", + true + ) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "声网发送通话邀请成功" + ) + } else { + writeAgoraLog( + "声网发送通话邀请失败${error}-------Time:${ + AudioLogUtils.format.format( + Calendar.getInstance().time + ) + }", "confide.log", true + ) LogHelper.getInstance().uploadLog(false) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "声网发送通话邀请失败${error}" + ) } } }) @@ -354,15 +408,31 @@ class YDLavManager { override fun onException(throwable: Throwable) { // writeAgoraLog("云信发送通话邀请异常${throwable.message}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) // LogHelper.getInstance().uploadLog(false) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "云信发送通话邀请异常${throwable.message}" + ) } override fun onFailed(code: Int) { // writeAgoraLog("云信发送通话邀请失败${code}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) // LogHelper.getInstance().uploadLog(false) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "云信发送通话邀请失败${code}" + ) } override fun onSuccess() { - writeAgoraLog("云信发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) + writeAgoraLog( + "云信发送通话邀请成功-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", + "confide.log", + true + ) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "云信发送通话邀请成功" + ) } }) }, 300) @@ -394,22 +464,50 @@ class YDLavManager { override fun onSuccess() { //登陆成功,发起呼叫 LogUtil.e("[agora]实时消息登录成功") - writeAgoraLog("声网rtm登录成功,uid:$userId-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "声网rtm登录成功,uid:$userId") + writeAgoraLog( + "声网rtm登录成功,uid:$userId-------Time:${ + AudioLogUtils.format.format( + Calendar.getInstance().time + ) + }", "confide.log", true + ) event(true, "") } override fun onFailure(msg: String?) { LogUtil.e("[agora]实时消息登录失败:$msg") - writeAgoraLog("声网rtm登录失败:$msg-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) + writeAgoraLog( + "声网rtm登录失败:$msg-------Time:${ + AudioLogUtils.format.format( + Calendar.getInstance().time + ) + }", "confide.log", true + ) + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "声网rtm登录失败:$msg") + event(false, msg) } }) } else { LogUtil.e("声网token获取失败uid:" + userId + " error:" + it.msg) - LogHelper.getInstance().writeLogSync("声网token获取失败uid:" + userId + " error:" + it.msg) + LogHelper.getInstance() + .writeLogSync("声网token获取失败uid:" + userId + " error:" + it.msg) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "声网token获取失败uid" + userId + " error:" + it.msg + ) + } }, { LogUtil.e("声网token获取异常uid:" + userId + " error:" + it.message) + AliYunLogHelper.getInstance().sendLog( + AliYunLogConfig.AGORA, + "声网token获取异常uid:" + userId + " error:" + it.message + ) + }) } @@ -428,7 +526,16 @@ class YDLavManager { Observable.timer(1000, TimeUnit.MILLISECONDS).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()).subscribe { LogUtil.e("[agora]启动通话界面") - writeAgoraLog("收到主叫方通话邀请($from)-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME, false) + writeAgoraLog( + "收到主叫方通话邀请($from)-------Time:${ + AudioLogUtils.format.format( + Calendar.getInstance().time + ) + }", FILE_NAME, false + ) + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "收到主叫方通话邀请($from)") + LogHelper.getInstance().uploadLog(false) //邀请加入频道消息,跳转通话界面 ARouter.getInstance().build("/av/ConsultantAudioHomeActivity") @@ -436,12 +543,29 @@ class YDLavManager { } } else { LogUtil.d("[agora]收到声网邀请,但界面实例已存在") - writeAgoraLog("收到主叫方通话邀请,但界面实例已存在($from)-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME, false) + writeAgoraLog( + "收到主叫方通话邀请,但界面实例已存在($from)-------Time:${ + AudioLogUtils.format.format( + Calendar.getInstance().time + ) + }", FILE_NAME, false + ) + + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "收到主叫方通话邀请,但界面实例已存在($from)") LogHelper.getInstance().uploadLog(false) } } else { LogUtil.d("[agora]收到声网邀请,但response==null") - writeAgoraLog("收到主叫方通话邀请,但response==null($from)-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", FILE_NAME, false) + writeAgoraLog( + "收到主叫方通话邀请,但response==null($from)-------Time:${ + AudioLogUtils.format.format( + Calendar.getInstance().time + ) + }", FILE_NAME, false + ) + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "收到主叫方通话邀请,但response==null($from)") LogHelper.getInstance().uploadLog(false) } } @@ -472,19 +596,25 @@ class YDLavManager { * 退出登录 * @param */ - private fun logout(isReLogin:Boolean) { + private fun logout(isReLogin: Boolean) { EventBus.getDefault().unregister(this) YDLRTMClient.instances.logout(object : LoginCallback { override fun onSuccess() { //退出登陆成功 LogUtil.d("[agora]实时消息退出成功") - if (isReLogin){ - login(ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid) + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "实时消息退出成功") + if (isReLogin) { + login( + ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid + ) } } override fun onFailure(msg: String?) { LogUtil.d("[agora]实时消息退出失败:$msg") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "实时消息退出失败:$msg") } }) } @@ -492,7 +622,7 @@ class YDLavManager { /** * 退出登录默认不重新登录 */ - fun logout(){ + fun logout() { logout(false) } @@ -510,6 +640,8 @@ class YDLavManager { callback?.onSuccess() }, { LogUtil.e("agora", "声网上传异常与错误日志接口调用失败:" + it.message) + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "声网上传异常与错误日志接口调用失败: + ${it.message}") }) } @@ -529,6 +661,9 @@ class YDLavManager { .subscribe({ }, { LogUtil.d("callEndStatusUpdate error: ${it.message}") + + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "callEndStatusUpdate error: ${it.message}") }) } @@ -538,6 +673,8 @@ class YDLavManager { private val listener = object : InitListener { override fun onTokenExpired() { + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "onTokenExpired") LogUtil.e("[agora]onTokenExpired") instances.login( ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid @@ -546,22 +683,32 @@ class YDLavManager { override fun onMessageReceived(message: RTMMesssage, userId: Int) { LogUtil.i("[agora]onMessageReceived:${message.text} -->uid:$userId") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "onMessageReceived:${message.text} -->uid:$userId") } override fun onConnectionStateChanged(state: Int, reason: Int) { sdkStatus = state - writeAgoraLog("声网rtm登录状态:${state}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", "confide.log", true) + writeAgoraLog( + "声网rtm登录状态:${state}-------Time:${AudioLogUtils.format.format(Calendar.getInstance().time)}", + "confide.log", + true + ) LogUtil.i("[agora]onConnectionStateChanged:state:${state} -->reason:$reason") - + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "声网rtm登录状态:${state}") /* * 当reason=CONNECTION_CHANGE_REASON_REMOTE_LOGIN的时候,是远端用户以相同UID登录RTM * 如果正在通话中,则不进行退出操作 * */ - if (reason==CONNECTION_CHANGE_REASON_REMOTE_LOGIN){ - if (!activityIsExists(ConsultantAudioHomeActivity::class.java)&&!activityIsExists(AudioHomeActivity::class.java)){ + if (reason == CONNECTION_CHANGE_REASON_REMOTE_LOGIN) { + if (!activityIsExists(ConsultantAudioHomeActivity::class.java) && !activityIsExists( + AudioHomeActivity::class.java + ) + ) { isOnlineRtm = false logout() - }else{ + } else { logout(true) } } diff --git a/m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt b/m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt index 5d37140..8d5661d 100644 --- a/m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt +++ b/m-audioim/src/main/java/com/ydl/consultantim/ConsultantAudioHomeActivity.kt @@ -47,6 +47,8 @@ import com.ydl.ydlcommon.utils.LogUtil import com.ydl.ydlcommon.utils.StatusBarUtils import com.ydl.ydlcommon.utils.Utils import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils +import com.ydl.ydlcommon.utils.log.AliYunLogConfig +import com.ydl.ydlcommon.utils.log.AliYunLogHelper import com.ydl.ydlcommon.utils.log.LogHelper import com.ydl.ydlcommon.utils.remind.ToastHelper import com.yidianling.user.api.service.IUserService @@ -137,7 +139,7 @@ class ConsultantAudioHomeActivity : super.onJoinChannelSuccess(channel, uid, elapsed) LogUtil.e("[agora]$uid 加入频道回调") writeAgoraLog("被叫(用户)加入声网($channel)频道成功") - + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "被叫(用户)加入声网($channel)频道成功") runOnUiThread { // 加入频道后再通知用户已接受 // YDLRTMClient.instances.acceptCall(mAudioMessageBean?.channelId) @@ -165,6 +167,9 @@ class ConsultantAudioHomeActivity : super.onRejoinChannelSuccess(channel, uid, elapsed) LogUtil.e("[agora]$uid 重新加入频道回调") writeAgoraLog("被叫(用户)重新加入声网频道($channel)成功") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "被叫(用户)重新加入声网频道($channel)成功") + runOnUiThread { if (!isConnectSuccess) { tv_toast.visibility = View.VISIBLE @@ -182,6 +187,8 @@ class ConsultantAudioHomeActivity : super.onUserJoined(uid, elapsed) LogUtil.e("[agora]远端用户加入频道回调") writeAgoraLog("主叫(专家)加入声网频道成功") + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "主叫(专家)加入声网频道成功") + //另一方加入频道成功 runOnUiThread { isConnectSuccess = true @@ -223,6 +230,8 @@ class ConsultantAudioHomeActivity : override fun onLeaveChannel(stats: IRtcEngineEventHandler.RtcStats?) { super.onLeaveChannel(stats) LogUtil.e("[agora]自己离开频道回调") + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "自己离开频道回调") + //通知php 通话已结束 close(RESULT_ANSWERED_CODE, "") } @@ -241,6 +250,8 @@ class ConsultantAudioHomeActivity : override fun onUserOffline(uid: Int, elapsed: Int) { super.onUserOffline(uid, elapsed) LogUtil.e("[agora]$uid 主播离开频道回调") + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "$uid 主播离开频道回调") + runOnUiThread { YDLavManager.instances.callEndStatusUpdate( mAudioMessageBean?.channelId!!, @@ -249,6 +260,8 @@ class ConsultantAudioHomeActivity : ) showToast("对方已挂断") writeAgoraLog("通话接通后挂断:主叫(专家)离开频道") + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "通话接通后挂断:主叫(专家)离开频道") + if (null != totalDisposable) { totalDisposable!!.dispose() } @@ -265,6 +278,8 @@ class ConsultantAudioHomeActivity : } LogUtil.e("[agora]发生警告回调=$warn") writeAgoraLog("声网警告回调码:($warn)") + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "声网警告回调码:($warn)") + //103:没有可用的频道资源。可能是因为服务端没法分配频道资源 //104:查找频道超时。在加入频道时 SDK 先要查找指定的频道,出现该警告一般是因为网络太差,连接不到服务器 //105:查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的 @@ -290,6 +305,7 @@ class ConsultantAudioHomeActivity : uploadException("mRtcEventHandler-onError:errorCode--%${err}") LogUtil.e("[agora] 发生错误回调 =$err") writeAgoraLog("声网错误回调errorCode--%${err}") + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "声网错误回调errorCode--%${err}") //3:SDK 初始化失败。Agora 建议尝试以下处理方法 //7:SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 RtcEngine 对象并完成初始化 @@ -510,6 +526,8 @@ class ConsultantAudioHomeActivity : override fun channelTokenResponse(token: String?, needJoinChannel: Boolean) { if (TextUtils.isEmpty(token)) { LogUtil.e("[agora]token not null") + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "token isEmpty ") + showToast("通话频道不存在") finish() return @@ -583,6 +601,8 @@ class ConsultantAudioHomeActivity : val account = YdlCommonRouterManager.getYdlCommonRoute().getUid() if (!TextUtils.isEmpty(mAudioMessageBean?.channelId)) { LogUtil.e("[agora] joinChannel:$account") + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "joinChannel:$account") + voiceManage?.getVoiceApi()?.joinChannel( channelToken ?: "", mAudioMessageBean!!.channelId!!, "Extra Optional Data", account @@ -807,6 +827,9 @@ class ConsultantAudioHomeActivity : fun close(code: Int, msg: String) { runOnUiThread { LogUtil.e("[agora]close(code:$code,msg:$msg)") + AliYunLogHelper.getInstance() + .sendLog(AliYunLogConfig.AGORA, "close(code:$code,msg:$msg)") + //上传日志文件 uploadLog() stopMusic() @@ -837,6 +860,7 @@ class ConsultantAudioHomeActivity : } ActivityManager.getInstance().removeStack(activity = this) LogUtil.e("[agora]页面移除") + AliYunLogHelper.getInstance().sendLog(AliYunLogConfig.AGORA, "页面移除") finish() } } @@ -945,9 +969,11 @@ class ConsultantAudioHomeActivity : Observable.create<Any> { try { AudioLogUtils.writeAgoraLog( - "$content-------Time:${AudioLogUtils.format.format( - Calendar.getInstance().time - )}", "consult.log" + "$content-------Time:${ + AudioLogUtils.format.format( + Calendar.getInstance().time + ) + }", "consult.log" ) } catch (e: Exception) { }