Commit 3d6e551e by 刘鹏

feat: 声网日志埋点完成

parent 3507c44d
......@@ -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()
}
......
......@@ -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)
}
}
......
......@@ -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) {
}
......
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