Commit 7967b66f by 严久程

声网日志

parent 83ff181a
......@@ -41,10 +41,6 @@ import com.ydl.webview.RefreshWebEvent
import com.ydl.ydl_av.chat.bean.AudioMessageBean
import com.ydl.ydl_av.messge_service.YDLRTMClient
import com.ydl.ydl_av.messge_service.callback.CancelCallStatusListener
import com.ydl.ydl_av.messge_service.callback.CallListener
import com.ydl.ydl_av.messge_service.callback.CancelCallStatusListener
import com.ydl.ydl_av.messge_service.response.CallLocalResponse
import com.ydl.ydl_av.messge_service.response.CallRemoteResponse
import com.ydl.ydl_av.voice.listener.IYDLVoiceEventHandler
import com.ydl.ydl_av.voice.manager.YDLVoiceManager
import com.ydl.ydl_image.config.SimpleImageOpConfiger
......@@ -60,6 +56,7 @@ import com.ydl.ydlcommon.utils.log.LogHelper
import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.user.api.service.IUserService
import de.greenrobot.event.EventBus
import io.agora.rtc.Constants
import io.agora.rtc.IRtcEngineEventHandler
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
......@@ -194,6 +191,7 @@ class AudioHomeActivity :
runOnUiThread {
when (warn) {
103, 104, 105, 106, 107 -> {
writeAgoraLog("通话挂断:网络异常(${warn})")
showToast("当前网络较差,请更换网络!")
//通话结束或挂断时,上传日志文件
uploadLog()
......@@ -263,6 +261,7 @@ class AudioHomeActivity :
//更新:现在专家先加入频道,所以不会有等待的过程,
runOnUiThread {
writeAgoraLog("主叫加入频道成功")
//自己加入频道成功
connectSuccess()
}
......@@ -275,6 +274,7 @@ class AudioHomeActivity :
runOnUiThread {
//自己加入频道成功
if (!isConnectSuccess) {
writeAgoraLog("主叫重新加入频道成功")
connectSuccess()
}
}
......@@ -285,6 +285,7 @@ class AudioHomeActivity :
super.onRtcStats(stats)
//因为用户端直接加入了频道,防止该回调执行时,专家还未加入频道,因此在连接成功之后,才进行频道人数判断
if (isConnectSuccess && null != stats?.users && stats.users == 1) {
writeAgoraLog("通话结束:用户加入了频道,但频道内只有一个人")
com.yidianling.common.tools.ToastUtil.toastShort("专家已挂断")
//通话结束或挂断时,上传日志文件
uploadLog()
......@@ -296,6 +297,7 @@ class AudioHomeActivity :
super.onConnectionStateChanged(state, reason)
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
if (reason == 3) {
writeAgoraLog("通话结束:原因(${reason})")
com.yidianling.common.tools.ToastUtil.toastShort("专家已挂断")
//通话结束或挂断时,上传日志文件
uploadLog()
......@@ -310,15 +312,6 @@ class AudioHomeActivity :
uploadLog()
}
override fun onLastmileQuality(quality: Int) {
super.onLastmileQuality(quality)
// LogUtil.e("[agora]网络质量报告回调${quality}")
}
override fun onConnectionInterrupted() {
super.onConnectionInterrupted()
LogUtil.e("[agora]连接中断回调")
}
override fun onUserJoined(uid: Int, elapsed: Int) {
super.onUserJoined(uid, elapsed)
......@@ -328,6 +321,7 @@ class AudioHomeActivity :
override fun onUserOffline(uid: Int, elapsed: Int) {
super.onUserOffline(uid, elapsed)
LogUtil.e("[agora]远端用户$uid 离开频道回调")
writeAgoraLog("接通后通话结束:对方已挂断")
//通话结束或挂断时,上传日志文件
uploadLog()
showToast("专家已挂断")
......@@ -358,16 +352,19 @@ class AudioHomeActivity :
initSensorManager()
//页面传递数据初始化
initIntentData()
if (YDLavManager.sdkStatus != Constants.CONNECTION_STATE_CONNECTED) {
//再次登录声网,确保声网登录状态
reLoginRTM()
}
//view初始化
initView()
//设置信令的回调
setCallBack()
//点击事件
setClickEvent()
//权限申请
requestPermission()
}
private fun setWindowStatusBarColor() {
StatusBarUtils.setWindowStatusBarColor(this, R.color.audioim_color_40353535)
}
......@@ -397,14 +394,6 @@ class AudioHomeActivity :
listenId = intent.getStringExtra(IntentConstants.INTENT_LISTEN_ID)
commentUrl = intent.getStringExtra(IntentConstants.INTENT_COMMENT_URL)
writeAgoraLog()
localRemainTime = remainTime?.toInt()
handler = Handler()
vibrator = getSystemService(Service.VIBRATOR_SERVICE) as Vibrator?
}
private fun writeAgoraLog() {
val logBean = AgoraLogInfoBean(
expertHeadUrl,
expertName,
......@@ -415,17 +404,24 @@ class AudioHomeActivity :
callId,
listenId
)
Observable.create<Any> {
try {
val content = Gson().toJson(logBean)
AudioLogUtils.writeAgoraLog(content,"confide")
} catch (e: Exception) {
writeAgoraLog("主叫方发送的邀请通话消息内容:$content", isAppend = false)
localRemainTime = remainTime?.toInt()
handler = Handler()
vibrator = getSystemService(Service.VIBRATOR_SERVICE) as Vibrator?
}
}.subscribeOn(Schedulers.io())
.subscribe()
private fun reLoginRTM() {
writeAgoraLog("RMT状态:${YDLavManager.sdkStatus},重新登录RMT")
val uid=YdlCommonRouterManager.getYdlCommonRoute().getUid().toString()
YDLavManager.instances.login(uid) { _isSuccess, _msg ->
writeAgoraLog("登录RTM的uid=${uid}")
val result = if (_isSuccess) "RMT登录成功" else "RMT登录失败:$_msg"
writeAgoraLog(result)
}
}
private fun initView() {
tv_change_route.isEnabled = false
......@@ -465,8 +461,8 @@ class AudioHomeActivity :
return@setOnClickListener
}
if (isConnectSuccess) {
writeAgoraLog("已接通:主叫主动挂断")
updateExpertStatus(false, 1)
// userCloseCalling()
leaveChannel()
uploadLog()
} else {
......@@ -503,71 +499,6 @@ class AudioHomeActivity :
}
}
private fun setCallBack() {
/**
* RTC 回调 在[YDLavManager.setCallback]中注册使用
*/
// //RTC 回调
// YDLRTMClient.instances.setCallListener(object : CallListener {
// override fun onCallRecivedByPeer(response: CallLocalResponse?) {
// playWaitingMusic()
// //返回给主叫:被叫已收到呼叫邀请
// LogUtil.i("[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}")
// }
//
// override fun onCallAccepted(response: CallLocalResponse?, msg: String?) {
// //返回给主叫
// LogUtil.i("[agora]${response?.calleeId}已接受呼叫邀请")
// //加入声网频道时机修改:用户收到专家接受邀请的回调后再加入声网频道
// joinChannel()
// }
//
// override fun onCallRefused(response: CallLocalResponse?, msg: String?) {
// //返回给主叫
// LogUtil.i("[agora]${response?.calleeId}已拒绝呼叫邀请")
// ToastUtil.showToast(applicationContext, "对方已挂断")
// //通话结束或挂断时,上传日志文件
// uploadLog()
// leaveChannel()
// }
//
// override fun onCallCanceled(response: CallLocalResponse?) {
// //返回给主叫
// LogUtil.i("[agora]主叫已取消呼叫邀请")
// }
//
// override fun onCallFailure(response: CallLocalResponse?, errorCode: Int) {
// //返回给主叫
// LogUtil.i("[agora]呼叫${response?.calleeId}用户失败:${response?.response}")
// //专家离线或者30 秒后仍未收到专家响应,重新再邀请一次
// when (errorCode) {
// //被叫不在线 呼叫邀请发出 30 秒后被叫仍未 ACK 响应呼叫邀请
// RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_PEER_OFFLINE,
// RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_PEER_NO_RESPONSE -> {
// rtcCall()
// }
// RtmStatusCode.LocalInvitationError.LOCAL_INVITATION_ERR_INVITATION_EXPIRE -> {//呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。
//
// }
// }
// }
//
// override fun onMessageReceived(message: RTMMesssage?, member: ChannelMember?) {
// //接到频道消息
// LogUtil.i("[agora]接到${member?.channelId}频道${member?.userId}的消息:" + message?.text)
// }
//
// override fun onMemberJoined(member: ChannelMember?) {
// //新用户加入频道
// LogUtil.i("[agora]新用户加入${member?.channelId}频道:${member?.userId}")
// }
//
// override fun onMemberLeft(member: ChannelMember?) {
// LogUtil.i("[agora]有用户离开${member?.channelId}频道:${member?.userId}")
// }
// })
}
/**
* 请求权限
*/
......@@ -613,22 +544,9 @@ class AudioHomeActivity :
)
sendDoctocrMsg = Gson().toJson(msgBean)
writeAgoraLog("主叫发送通话邀请")
rtcCall()
// Observable.interval(0, 100, TimeUnit.MILLISECONDS)
// .subscribeOn(Schedulers.computation())
// .take(303)
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe({
// var result = it.toFloat() / 2.5f
// progress_view.setProgress(result)
// if (result >= 100f && !iv_hang_up.isEnabled) {
// //挂断按钮可点击
// iv_hang_up.isEnabled = true
// iv_hang_up.setImageResource(R.drawable.audioim_img_hang_up)
// }
// }, {}, {})
//开始60s等待倒计时
waitDisposable = Observable.interval(0, 100, TimeUnit.MILLISECONDS)
......@@ -650,6 +568,7 @@ class AudioHomeActivity :
if (!isConnectSuccess) {
//关闭音乐
stopPlaying()
writeAgoraLog("未接通挂断:60s等待倒计时结束挂断")
//提示切换传统线路
//发送消息通知专家用户已挂断
YDLRTMClient.instances.cancelCall(listenerUid, channelId,object :CancelCallStatusListener{
......@@ -693,6 +612,7 @@ class AudioHomeActivity :
* 声网加入频道
*/
fun joinChannel() {
writeAgoraLog("对方接受了通话邀请,主叫开始加入频道:$channelId")
voiceManage!!.getVoiceApi().joinChannel(
token!!,
channelId!!,
......@@ -707,10 +627,11 @@ class AudioHomeActivity :
*
*/
private fun userCloseCalling() {
//发送消息通知专家用户已挂断
writeAgoraLog("未接听时:主叫主动挂断,取消呼叫")
//发送消息通知专家用户已挂断
YDLRTMClient.instances.cancelCall(listenerUid, channelId,object :CancelCallStatusListener{
override fun onFailure(errorMsg: String?, errorCode: Int) {
writeAgoraLog("未接听时:主叫主动挂断失败,msg=$errorMsg($errorCode),再次挂断")
YDLRTMClient.instances.cancelCall(listenerUid, channelId,null)
}
......@@ -1170,6 +1091,14 @@ class AudioHomeActivity :
}
fun writeAgoraLog(content: String, isAppend: Boolean = true) {
try {
AudioLogUtils.writeAgoraLog(content, "confide", isAppend)
} catch (e: Exception) {
}
}
override fun finishActivity() {
leaveChannel()
}
......
......@@ -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()
}
} else {
try {
val mAudioMessageBean = Gson().fromJson(content, AudioMessageBean::class.java)
YDLRTMClient.instances.refuseCall(mAudioMessageBean.channelId)
} catch (e: Exception) {
AudioLogUtils.writeAgoraLog("收到主叫方通话邀请($from)", FILE_NAME, false)
}
} else {
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")
}
......
......@@ -52,6 +52,7 @@ import com.ydl.ydlcommon.utils.remind.ToastHelper
import com.yidianling.common.tools.ToastUtil
import com.yidianling.user.api.service.IUserService
import de.greenrobot.event.EventBus
import io.agora.rtc.Constants
import io.agora.rtc.IRtcEngineEventHandler
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
......@@ -128,9 +129,12 @@ class ConsultantAudioHomeActivity :
override fun onJoinChannelSuccess(channel: String?, uid: Int, elapsed: Int) {
super.onJoinChannelSuccess(channel, uid, elapsed)
LogUtil.e("[agora]$uid 加入频道回调")
writeAgoraLog("被叫加入声网($channel)频道成功")
runOnUiThread {
// 加入频道后再通知用户已接受
YDLRTMClient.instances.acceptCall(mAudioMessageBean?.channelId)
runOnUiThread {
tv_toast.visibility = View.VISIBLE
tv_toast.text = "连接中..."
......@@ -143,9 +147,32 @@ class ConsultantAudioHomeActivity :
}
}
/**
* 重新加入频道回调
*/
override fun onRejoinChannelSuccess(channel: String?, uid: Int, elapsed: Int) {
super.onRejoinChannelSuccess(channel, uid, elapsed)
LogUtil.e("[agora]$uid 重新加入频道回调")
writeAgoraLog("被叫重新加入声网频道($channel)成功")
runOnUiThread {
if (!isConnectSuccess) {
tv_toast.visibility = View.VISIBLE
tv_toast.text = "连接中..."
voiceManage!!.getVoiceApi().setEnableSpeakerphone(false)
//5s倒计时,5s后还是连接中,则直接关闭页面
connectingStatusWaitingTimeCount()
}
}
}
override fun onUserJoined(uid: Int, elapsed: Int) {
super.onUserJoined(uid, elapsed)
LogUtil.e("[agora]远端用户加入频道回调")
writeAgoraLog("主叫加入声网频道成功")
//另一方加入频道成功
runOnUiThread {
isConnectSuccess = true
......@@ -166,6 +193,7 @@ class ConsultantAudioHomeActivity :
// 3 网络连接被服务器中止 该情况现在是因为后端踢人逻辑
if (reason == 3) {
ToastUtil.toastShort("对方已挂断")
writeAgoraLog("通话挂断:网络连接被服务器中止")
//通话结束或挂断时,上传日志文件
uploadLog()
leaveChannel()
......@@ -203,6 +231,7 @@ class ConsultantAudioHomeActivity :
LogUtil.e("[agora]$uid 主播离开频道回调")
runOnUiThread {
showLongToast("对方已挂断")
writeAgoraLog("通话接通后挂断:主叫离开频道")
//通话结束或挂断时,上传日志文件
uploadLog()
if (null != totalDisposable) {
......@@ -214,27 +243,6 @@ class ConsultantAudioHomeActivity :
}
/**
* 重新加入频道回调
*/
override fun onRejoinChannelSuccess(channel: String?, uid: Int, elapsed: Int) {
super.onRejoinChannelSuccess(channel, uid, elapsed)
LogUtil.e("[agora]$uid 重新加入频道回调")
runOnUiThread {
if (!isConnectSuccess) {
tv_toast.visibility = View.VISIBLE
tv_toast.text = "连接中..."
voiceManage!!.getVoiceApi().setEnableSpeakerphone(false)
//5s倒计时,5s后还是连接中,则直接关闭页面
connectingStatusWaitingTimeCount()
}
}
}
/**
* 网络质量报告回调
* 报告本地用户的网络质量。当你调用 enableLastmileTest 之后,该回调函数每 2 秒触发一次
*/
......@@ -257,6 +265,7 @@ class ConsultantAudioHomeActivity :
runOnUiThread {
when (warn) {
103, 104, 105, 106, 107 -> {
writeAgoraLog("通话挂断:网络异常($warn)")
showLongToast("当前网络较差,请更换网络!")
//通话结束或挂断时,上传日志文件
uploadLog()
......@@ -339,8 +348,6 @@ class ConsultantAudioHomeActivity :
ConsultantAudioUtils.wakeUpAndUnlock(this)
//页面传递数据初始化
getParam()
//设置信令的回调
setCallback()
//初始化传感器
initSensorManager()
initUser()
......@@ -362,10 +369,20 @@ class ConsultantAudioHomeActivity :
if (null != intent.getStringExtra(PARAM)) {
val json = intent.getStringExtra(PARAM)
if (!TextUtils.isEmpty(json)) {
writeAgoraLog(json)
writeAgoraLog("收到邀请通话消息内容:$json")
mAudioMessageBean = Gson().fromJson(json, AudioMessageBean::class.java)
YDLavManager.instances.login(ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid)
if (YDLavManager.sdkStatus != Constants.CONNECTION_STATE_CONNECTED) {
writeAgoraLog("RMT状态:${YDLavManager.sdkStatus},重新登录RMT")
val uid =
ModularServiceManager.provide(IUserService::class.java).getUserInfo()?.uid
YDLavManager.instances.login(uid) { _isSuccess, _msg ->
writeAgoraLog("登录RTM的uid=${uid}")
val result = if (_isSuccess) "RMT登录成功" else "RMT登录失败:$_msg"
writeAgoraLog(result)
}
}
}
} else {
close(RESULT_NOT_ANSWERED_CODE, "通话异常")
......@@ -373,69 +390,6 @@ class ConsultantAudioHomeActivity :
}
}
private fun setCallback() {
/**
* RTC 回调 在[YDLavManager.setCallback]中注册使用
*/
// YDLRTMClient.instances.setCallListener(object : CallListener {
// override fun onCallRecivedByPeer(response: CallLocalResponse?) {
// //返回给主叫:被叫已收到呼叫邀请
// LogUtil.I("[agora]${response?.calleeId}已收到呼叫邀请,频道号${response?.ChannelId}")
// }
//
// override fun onCallAccepted(response: CallLocalResponse?, msg: String?) {
// //返回给主叫
// LogUtil.I("[agora]${response?.calleeId}已接受呼叫邀请")
// }
//
// override fun onCallRefused(response: CallLocalResponse?, msg: String?) {
// //返回给主叫
// LogUtil.I("[agora]${response?.calleeId}已拒绝呼叫邀请")
// }
//
// override fun onCallCanceled(response: CallLocalResponse?) {
// //返回给主叫
// LogUtil.I("[agora]主叫已取消呼叫邀请")
// }
//
// override fun onCallFailure(response: CallLocalResponse?, errorCode: Int) {
// //返回给主叫
// LogUtil.I("[agora]呼叫${response?.calleeId}用户失败:${response?.response}")
//
// }
//
// override fun onRemoteInvitationReceived(response: CallRemoteResponse?) {
// //返回给被叫
// LogUtil.I("[agora]收到来自${response?.callerId}的呼叫邀请")
// }
//
// override fun onRemoteInvitationAccepted(response: CallRemoteResponse?) {
// //返回给被叫
// LogUtil.I("[agora]接受来自${response?.callerId}的呼叫成功")
// }
//
// override fun onRemoteInvitationRefused(response: CallRemoteResponse?) {
// //返回给被叫
// LogUtil.I("[agora]已拒绝来自${response?.callerId}的呼叫")
// }
//
// override fun onRemoteInvitationCanceled(response: CallRemoteResponse?) {
// //返回给被叫
// LogUtil.I("[agora]主叫${response?.callerId}已取消呼叫邀请")
// }
//
// override fun onRemoteInvitationFailure(response: CallRemoteResponse?, errorCode: Int) {
// //返回给被叫
// LogUtil.I("[agora]来自主叫${response?.callerId}的呼叫邀请进程失败:${response?.response}")
// }
//
// override fun onOtherMsg(error: String?) {
// LogUtil.I("[agora]其它消息:${error}")
// }
// })
}
@SuppressLint("InvalidWakeLockTag")
private fun initSensorManager() {
sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager?
......@@ -493,6 +447,7 @@ class ConsultantAudioHomeActivity :
* //获取声网频道号
*/
private fun getChannelToken() {
writeAgoraLog("获取声网token")
//获取频道token
mPresenter.getChannelToken(mAudioMessageBean, false)
}
......@@ -506,6 +461,7 @@ class ConsultantAudioHomeActivity :
return
}
this.channelToken = token
writeAgoraLog("返回的声网token=$channelToken")
if (needJoinChannel) {
//权限申请
requestPermission()
......@@ -622,11 +578,13 @@ class ConsultantAudioHomeActivity :
private fun showStopService() {
if (status == STATUS_NOT_ANSWERED) {
writeAgoraLog("通话未接通挂断:主动挂断")
//通话结束或挂断时,上传日志文件
uploadLog()
//当未接听 直接挂断 要发送给老师一条消息
close(RESULT_NOT_ANSWERED_CODE, "用户已挂断")
} else if (status == STATUS_ANSWERED) {
writeAgoraLog("通话接通后挂断:专家主动挂断")
//正常接听 挂断电话 需要重置信令管理类状态
close(RESULT_ANSWERED_CODE, "")
}
......@@ -842,6 +800,7 @@ class ConsultantAudioHomeActivity :
.observeOn(AndroidSchedulers.mainThread())
.subscribe({}, {}, {
if (!isConnectSuccess) {
writeAgoraLog("通话未接通挂断:连接中的状态超过5s自动挂断")
ToastUtil.toastShort(this, "用户已挂断")
close(RESULT_NOT_ANSWERED_CODE, "")
}
......
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