[opt3.0]下沉工具类到mogo-core-utils模块

This commit is contained in:
chenfufeng
2022-12-20 18:05:37 +08:00
parent 586849dac9
commit ae7e608ce0
27 changed files with 122 additions and 375 deletions

View File

@@ -34,9 +34,9 @@ import com.mogo.eagle.core.function.chat.facade.net.ChatServiceModel
import com.mogo.eagle.core.function.chat.facade.net.bean.CallRequestParam
import com.mogo.eagle.core.function.chat.facade.net.bean.ConnectStatusParam
import com.mogo.eagle.core.function.chat.facade.socket.SocketConnectManager
import com.mogo.eagle.core.function.chat.facade.utils.log
import com.mogo.eagle.core.function.chat.facade.voice.VoiceControlFacade
import com.mogo.eagle.core.utilcode.kotlin.safeCancel
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.Utils
import com.mogo.map.MogoLocationClient
import kotlinx.coroutines.*
@@ -137,7 +137,7 @@ object MoGoChatFacade: IMoGoChatFacade {
}
private var callStatus by Delegates.observable(INIT_CALL) { _, _, newValue ->
log(ChatConsts.TAG, "call-status: ${newValue.toText()}")
Logger.d(ChatConsts.TAG, "call-status: ${newValue.toText()}")
}
@ExperimentalCoroutinesApi
@@ -148,7 +148,7 @@ object MoGoChatFacade: IMoGoChatFacade {
}
private var callType by Delegates.observable(CALL_TYPE_DEFAULT) { _, oldValue, newValue ->
log(ChatConsts.TAG, "call type change: oldValue: $oldValue - newValue: $newValue")
Logger.d(ChatConsts.TAG, "call type change: oldValue: $oldValue - newValue: $newValue")
}
private val sender by lazy { AtomicReference<UserInfo>(null) }
@@ -171,7 +171,7 @@ object MoGoChatFacade: IMoGoChatFacade {
@ExperimentalCoroutinesApi
private fun initSocketService() {
log(ChatConsts.TAG, "-- initSocketService --")
Logger.d(ChatConsts.TAG, "-- initSocketService --")
SocketConnectManager.setOnMsgReceiveCb {
handleMessage(it)
}
@@ -181,7 +181,7 @@ object MoGoChatFacade: IMoGoChatFacade {
@ExperimentalCoroutinesApi
private fun handleMessage(msg: String) {
mainScope.launch {
log(ChatConsts.TAG, "长链下行消息: $msg")
Logger.d(ChatConsts.TAG, "长链下行消息: $msg")
val map = Gson().fromJson<Map<String, Any>>(msg, Map::class.java)
val temp = map ?: return@launch
val msgType = temp["msgType"]
@@ -189,12 +189,12 @@ object MoGoChatFacade: IMoGoChatFacade {
when(val t = msgType.toInt()) {
0 -> {
val openId = (temp["localUserId"] as? Double ?: return@launch).toInt().toString()
log(ChatConsts.TAG, "handleMessage --- openId:$openId")
Logger.d(ChatConsts.TAG, "handleMessage --- openId:$openId")
//初始化房间
GMEApi.init(context(), openId = openId, cb = gmeCallback)
}
else ->
log(ChatConsts.TAG, "handleMessage --- $t")
Logger.d(ChatConsts.TAG, "handleMessage --- $t")
}
} else {
val message = withContext(Dispatchers.Default) { Gson().fromJson(msg, Message::class.java) } ?: return@launch
@@ -207,7 +207,7 @@ object MoGoChatFacade: IMoGoChatFacade {
when(message.type.toCallType()) {
CALL_TYPE_VOICE -> {
if (GMEApi.isRoomEntered() && callType == CALL_TYPE_VEHICLE_TEAM) {
log(ChatConsts.TAG, "收到来电进房消息,此时正在车队通话。需要挂断电话")
Logger.d(ChatConsts.TAG, "收到来电进房消息,此时正在车队通话。需要挂断电话")
try {
serverApi.requestConnectStatus(ConnectStatusParam(MoGoAiCloudClientConfig.getInstance().sn, message.snSender, message.roomId, PUSH_MSG_HANG_UP, message.type))
} catch (t : Throwable) {
@@ -230,7 +230,7 @@ object MoGoChatFacade: IMoGoChatFacade {
callType = message.type.toCallType()
channel4SocketMsg.send(message)
}
else -> log(ChatConsts.TAG, "-- 接收者同意通话,但是呼叫类型不对: ${message.type}")
else -> Logger.d(ChatConsts.TAG, "-- 接收者同意通话,但是呼叫类型不对: ${message.type}")
}
}
PUSH_MSG_DENY_ENTER -> {
@@ -238,12 +238,12 @@ object MoGoChatFacade: IMoGoChatFacade {
when(message.type.toCallType()) {
CALL_TYPE_VOICE -> {
if (GMEApi.isRoomEntered() && callType == CALL_TYPE_VEHICLE_TEAM) {
log(ChatConsts.TAG, "已经进房,收到被拒绝消息,则不处理(为兼容车队需求),否则会引发退房操作")
Logger.d(ChatConsts.TAG, "已经进房,收到被拒绝消息,则不处理(为兼容车队需求),否则会引发退房操作")
return@launch
}
if (callStatus == READY_TO_CALL_RECEIVER && message.snReceiver == MoGoAiCloudClientConfig.getInstance().sn) {
//如果当前是来电状态,并且收到拒绝消息,说明呼叫方呼出又挂断
log(ChatConsts.TAG, "呼叫方呼出后,又挂断")
Logger.d(ChatConsts.TAG, "呼叫方呼出后,又挂断")
onCallingInterrupt?.get()?.invoke(false, message.toUser())
return@launch
}
@@ -260,7 +260,7 @@ object MoGoChatFacade: IMoGoChatFacade {
callType = message.type.toCallType()
channel4SocketMsg.send(message)
}
else -> log(ChatConsts.TAG, "-- 接收者拒绝,但是呼叫类型不对: ${message.type}")
else -> Logger.d(ChatConsts.TAG, "-- 接收者拒绝,但是呼叫类型不对: ${message.type}")
}
}
PUSH_MSG_HANG_UP -> {
@@ -289,7 +289,7 @@ object MoGoChatFacade: IMoGoChatFacade {
channel4SocketMsg.send(message)
}
}
else -> log(ChatConsts.TAG, "-- 收到来电,但是呼叫类型不对: ${message.type}")
else -> Logger.d(ChatConsts.TAG, "-- 收到来电,但是呼叫类型不对: ${message.type}")
}
}
}
@@ -411,7 +411,7 @@ object MoGoChatFacade: IMoGoChatFacade {
return@async
}
is UserChangeInRoom -> {
log(ChatConsts.TAG, "openIds: ${state.left.joinToString(",")}")
Logger.d(ChatConsts.TAG, "openIds: ${state.left.joinToString(",")}")
if (!state.isEnter && state.left.isEmpty()) {
exitRoom()
continue
@@ -439,7 +439,7 @@ object MoGoChatFacade: IMoGoChatFacade {
when(msg.status) {
PUSH_MSG_AGREE_ENTER -> {
//接收方同意进房
log(ChatConsts.TAG, "[Call] - [Agree] - roomId: $roomId-msg: $msg")
Logger.d(ChatConsts.TAG, "[Call] - [Agree] - roomId: $roomId-msg: $msg")
if (roomId == msg.roomId) {
if (callType == CALL_TYPE_VOICE) {
send(CallState.AgreeCall(false, msg))
@@ -455,7 +455,7 @@ object MoGoChatFacade: IMoGoChatFacade {
}
PUSH_MSG_DENY_ENTER -> {
//接收方拒绝进房
log(ChatConsts.TAG, "[Call] - [Refuse] - roomId: $roomId-msg: $msg")
Logger.d(ChatConsts.TAG, "[Call] - [Refuse] - roomId: $roomId-msg: $msg")
if (roomId == msg.roomId) {
teamMembers.set(msg.teamMember ?: emptyList())
if (callType == CALL_TYPE_VOICE) {
@@ -470,7 +470,7 @@ object MoGoChatFacade: IMoGoChatFacade {
}
PUSH_MSG_HANG_UP -> {
log(ChatConsts.TAG, "[Call] - [hangUp] - roomId: $roomId-msg: $msg")
Logger.d(ChatConsts.TAG, "[Call] - [hangUp] - roomId: $roomId-msg: $msg")
teamMembers.set(msg.teamMember ?: emptyList())
if (callType == CALL_TYPE_VOICE) {
send(CallState.HangUp(false, msg))
@@ -496,7 +496,7 @@ object MoGoChatFacade: IMoGoChatFacade {
}
}
}.catch {
log(ChatConsts.TAG, "unknow exption$it")
Logger.d(ChatConsts.TAG, "unknow exption$it")
emit(CallState.Error(CallState.CODE_UNKNOWN_ERROR, "[Call] - ${it.message ?: "未知异常"}"))
}.onCompletion {
resetState()
@@ -612,7 +612,7 @@ object MoGoChatFacade: IMoGoChatFacade {
val msg = channel4SocketMsg.receive()
when(msg.status) {
PUSH_MSG_HANG_UP -> {
log(ChatConsts.TAG, "[Answer] - [hangUp] - msg -> $msg")
Logger.d(ChatConsts.TAG, "[Answer] - [hangUp] - msg -> $msg")
if (callType == CALL_TYPE_VOICE) {
send(AnswerState.HangUp(false, msg))
exitRoom()
@@ -623,18 +623,18 @@ object MoGoChatFacade: IMoGoChatFacade {
}
}
PUSH_MSG_AGREE_ENTER -> {
log(ChatConsts.TAG, "[Answer] - [Agree] - msg -> $msg")
Logger.d(ChatConsts.TAG, "[Answer] - [Agree] - msg -> $msg")
if (callType.isTeam()) {
//接受车队邀请
log(ChatConsts.TAG, "[Answer] - [Agree] - [Team] - msg -> $msg")
Logger.d(ChatConsts.TAG, "[Answer] - [Agree] - [Team] - msg -> $msg")
send(AnswerState.AcceptTeamInvite(msg))
teamMembers.set(msg.teamMember)
}
}
PUSH_MSG_DENY_ENTER -> {
log(ChatConsts.TAG, "[Answer] - [hangUp] - msg -> $msg")
Logger.d(ChatConsts.TAG, "[Answer] - [hangUp] - msg -> $msg")
if (callType.isTeam()) {
log(ChatConsts.TAG, "[Answer] - [hangUp] - [Team] - msg -> $msg")
Logger.d(ChatConsts.TAG, "[Answer] - [hangUp] - [Team] - msg -> $msg")
send(AnswerState.RefuseTeamInvite(msg))
teamMembers.set(msg.teamMember)
}
@@ -670,7 +670,7 @@ object MoGoChatFacade: IMoGoChatFacade {
return@async
}
is UserChangeInRoom -> {
log(ChatConsts.TAG, "openIds: ${state.left.joinToString(",")}")
Logger.d(ChatConsts.TAG, "openIds: ${state.left.joinToString(",")}")
if (!state.isEnter && state.left.isEmpty()) {
exitRoom()
continue
@@ -705,7 +705,7 @@ object MoGoChatFacade: IMoGoChatFacade {
}
}
}.catch {
log(ChatConsts.TAG, "unknow exption$it")
Logger.d(ChatConsts.TAG, "unknow exption$it")
emit(AnswerState.Error(AnswerState.CODE_UNKNOWN_ERROR, it.message ?: "未知异常"))
}.onCompletion {
resetState()
@@ -885,7 +885,7 @@ object MoGoChatFacade: IMoGoChatFacade {
return@async
}
is UserChangeInRoom -> {
log(ChatConsts.TAG, "openIds: ${state.left.joinToString(",")}")
Logger.d(ChatConsts.TAG, "openIds: ${state.left.joinToString(",")}")
if (!state.isEnter && state.left.isEmpty()) {
exitRoom()
continue
@@ -993,15 +993,15 @@ object MoGoChatFacade: IMoGoChatFacade {
}
when(msg.status) {
PUSH_MSG_HANG_UP -> {
log(ChatConsts.TAG, "[JoinTeam] - [hangUp] - msg -> $msg")
Logger.d(ChatConsts.TAG, "[JoinTeam] - [hangUp] - msg -> $msg")
teamMembers.set(msg.teamMember ?: emptyList())
}
PUSH_MSG_AGREE_ENTER -> {
log(ChatConsts.TAG, "[JoinTeam] - [Agree] - msg -> $msg")
Logger.d(ChatConsts.TAG, "[JoinTeam] - [Agree] - msg -> $msg")
teamMembers.set(msg.teamMember ?: emptyList())
}
PUSH_MSG_DENY_ENTER -> {
log(ChatConsts.TAG, "[JoinTeam] - [Deny] - msg -> $msg")
Logger.d(ChatConsts.TAG, "[JoinTeam] - [Deny] - msg -> $msg")
teamMembers.set(msg.teamMember ?: emptyList())
}
}
@@ -1040,7 +1040,7 @@ object MoGoChatFacade: IMoGoChatFacade {
return@async
}
is UserChangeInRoom -> {
log(ChatConsts.TAG, "openIds: ${state.left.joinToString(",")}")
Logger.d(ChatConsts.TAG, "openIds: ${state.left.joinToString(",")}")
if (!state.isEnter && state.left.isEmpty()) {
exitRoom()
continue
@@ -1083,7 +1083,7 @@ object MoGoChatFacade: IMoGoChatFacade {
try {
client.stopHeartBeat()
} catch (t: Throwable) {
log(ChatConsts.TAG, "$t")
Logger.d(ChatConsts.TAG, "$t")
}
channel4GmeState.safeCancel()
channel4SocketMsg.safeCancel()

View File

@@ -11,7 +11,7 @@ import android.os.Looper
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts
import com.mogo.eagle.core.function.api.chat.biz.IMoGoAudioFocusFacade
import com.mogo.eagle.core.function.chat.facade.bridge.BridgeApi
import com.mogo.eagle.core.function.chat.facade.utils.log
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import kotlinx.coroutines.*
import kotlinx.coroutines.android.asCoroutineDispatcher
import java.util.concurrent.TimeUnit.SECONDS
@@ -40,7 +40,7 @@ object AudioFocusFacade: IMoGoAudioFocusFacade {
private var hasAudioFocus = false
override fun requireAudioFocus(onGetFocus: () -> Unit) {
log(ChatConsts.TAG, "requireDuck===$hasAudioFocus")
Logger.d(ChatConsts.TAG, "requireDuck===$hasAudioFocus")
scope.launch {
if (!hasAudioFocus) {
while (true) {
@@ -79,7 +79,7 @@ object AudioFocusFacade: IMoGoAudioFocusFacade {
}
override fun releaseAudioFocus() {
log(ChatConsts.TAG, "releaseDuck===$hasAudioFocus")
Logger.d(ChatConsts.TAG, "releaseDuck===$hasAudioFocus")
focusJob.get()?.takeIf { it.isActive }?.cancel()
scope.launch {
if (hasAudioFocus) {
@@ -101,7 +101,7 @@ object AudioFocusFacade: IMoGoAudioFocusFacade {
private class MyAudioFocusChangeListener : OnAudioFocusChangeListener {
override fun onAudioFocusChange(focusChange: Int) {
log(ChatConsts.TAG, "onAudioFocusChange: $focusChange")
Logger.d(ChatConsts.TAG, "onAudioFocusChange: $focusChange")
when (focusChange) {
AudioManager.AUDIOFOCUS_GAIN -> {
hasAudioFocus = true

View File

@@ -8,7 +8,7 @@ import com.gme.TMG.ITMGContext
import com.gme.av.sdk.AVError
import com.gme.av.sig.AuthBuffer
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts
import com.mogo.eagle.core.function.chat.facade.utils.log
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.Utils
import java.lang.ref.WeakReference
import java.util.concurrent.atomic.AtomicBoolean
@@ -66,22 +66,22 @@ internal object GMEApi {
if (type == ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_USER_UPDATE) {
val eventId = data.eventId
val users = data.users
log(ChatConsts.TAG, "RoomMembersUpdate: ${users.joinToString(",")}")
Logger.d(ChatConsts.TAG, "RoomMembersUpdate: ${users.joinToString(",")}")
if (users.isEmpty()) {
log(ChatConsts.TAG, "没人了,准备退房")
Logger.d(ChatConsts.TAG, "没人了,准备退房")
cb?.invoke(GmeState.UserChangeInRoom(isEnter = false, emptyArray()))
return
}
val filtered = users.filter {
log(ChatConsts.TAG, "成员进房====$it===ownId:$openId")
Logger.d(ChatConsts.TAG, "成员进房====$it===ownId:$openId")
it.toInt() > 99999
}.toTypedArray()
if (filtered.isEmpty()) {
log(ChatConsts.TAG, "成员为空,无操作")
Logger.d(ChatConsts.TAG, "成员为空,无操作")
return
}
if (eventId == ITMGContext.ITMG_EVENT_ID_USER_ENTER) {
log(ChatConsts.TAG, "成员进房==去掉99999====$filtered")
Logger.d(ChatConsts.TAG, "成员进房==去掉99999====$filtered")
cb?.invoke(GmeState.UserChangeInRoom(isEnter = true, filtered))
}
if (eventId == ITMGContext.ITMG_EVENT_ID_USER_EXIT) {
@@ -92,11 +92,11 @@ internal object GMEApi {
}
fun enableAudio() {
log(ChatConsts.TAG, "-- enable audio --- 1 ---")
Logger.d(ChatConsts.TAG, "-- enable audio --- 1 ---")
if (!hasInit.get()) {
return
}
log(ChatConsts.TAG, "-- enable audio --- 2 ---")
Logger.d(ChatConsts.TAG, "-- enable audio --- 2 ---")
val audioCtrl = tmgCtx.GetAudioCtrl()
//开启麦克
audioCtrl?.EnableMic(true)
@@ -109,11 +109,11 @@ internal object GMEApi {
}
fun disableAudio() {
log(ChatConsts.TAG, "-- disable audio --- 1 ---")
Logger.d(ChatConsts.TAG, "-- disable audio --- 1 ---")
if (!hasInit.get()) {
return
}
log(ChatConsts.TAG, "-- disable audio --- 2 ---")
Logger.d(ChatConsts.TAG, "-- disable audio --- 2 ---")
val audioCtrl = tmgCtx.GetAudioCtrl()
audioCtrl?.EnableSpeaker(false)
//开启麦克
@@ -122,7 +122,7 @@ internal object GMEApi {
fun init(ctx: Context, openId: String, cb: ((s: GmeState) -> Unit)? = null) {
if (hasInit.get()) {
log(ChatConsts.TAG, "Error: GmeApi has initialized.")
Logger.d(ChatConsts.TAG, "Error: GmeApi has initialized.")
return
}
hasInit.set(true)
@@ -143,7 +143,7 @@ internal object GMEApi {
cb?.invoke(GmeState.InitFail(ret))
}
} catch (t: Throwable) {
log(ChatConsts.TAG, "GMEAPI - error: $t")
Logger.d(ChatConsts.TAG, "GMEAPI - error: $t")
}
}

View File

@@ -6,7 +6,7 @@ import android.media.MediaPlayer
import android.os.Build
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts
import com.mogo.eagle.core.function.api.chat.biz.IMoGoMediaFacade
import com.mogo.eagle.core.function.chat.facade.utils.log
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import java.lang.ref.WeakReference
import java.util.concurrent.atomic.AtomicReference
@@ -32,29 +32,29 @@ internal object MedialControlFacade : IMoGoMediaFacade {
isLooping = isLoop
prepareAsync()
setOnPreparedListener { player ->
log(ChatConsts.TAG,"real play 准备播放音频====")
Logger.d(ChatConsts.TAG,"real play 准备播放音频====")
player.start()
}
setOnCompletionListener { player ->
log(ChatConsts.TAG,"播放完成====")
Logger.d(ChatConsts.TAG,"播放完成====")
player.reset()
}
}
} catch (t: Throwable) {
log(ChatConsts.TAG, "播放铃声异常:$t")
Logger.d(ChatConsts.TAG, "播放铃声异常:$t")
}
}
override fun release() {
try {
val player = this.player.get()?.get() ?: return
log(ChatConsts.TAG,"release 释放音频播放====")
Logger.d(ChatConsts.TAG,"release 释放音频播放====")
player.run {
resetStatus(this)
release()
}
} catch (t: Throwable) {
log(ChatConsts.TAG, "释放MediaPlay异常: $t")
Logger.d(ChatConsts.TAG, "释放MediaPlay异常: $t")
} finally {
player.set(null)
}

View File

@@ -11,9 +11,9 @@ import com.mogo.eagle.core.function.api.chat.biz.IMCallType.CALL_TYPE_VOICE
import com.mogo.eagle.core.function.chat.facade.consts.ChatHttp
import com.mogo.eagle.core.function.chat.facade.consts.ChatHttp.Companion.getConfig
import com.mogo.eagle.core.function.chat.facade.net.bean.*
import com.mogo.eagle.core.function.chat.facade.utils.log
import com.mogo.map.MogoLocationClient
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import retrofit2.http.*
@@ -75,7 +75,7 @@ internal class ChatServiceModel {
params.lon = location.longitude
params.lat = location.latitude
}
log(ChatConsts.TAG, "connectStatusParam:$params")
Logger.d(ChatConsts.TAG, "connectStatusParam:$params")
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["data"] = Gson().toJson(params)
return if (params.type == CALL_TYPE_VOICE.type) {
@@ -93,7 +93,7 @@ internal class ChatServiceModel {
suspend fun inviteJoinVehicleTeam(param: CallRequestParam): BaseResponse<Any> {
val map = hashMapOf<String, String>()
log(ChatConsts.TAG, "inviteJoinVehicleTeam paras: $param")
Logger.d(ChatConsts.TAG, "inviteJoinVehicleTeam paras: $param")
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["data"] = Gson().toJson(param)
return apiCall {
@@ -109,7 +109,7 @@ internal class ChatServiceModel {
param.lat = location.latitude
param.lon = location.longitude
}
log(ChatConsts.TAG, "roomParam:$param")
Logger.d(ChatConsts.TAG, "roomParam:$param")
map["data"] = Gson().toJson(param)
return apiCall {
getNetWorkApi()?.requestRoomInfo(map) ?: throw IllegalStateException("apis is null.")

View File

@@ -7,7 +7,7 @@ import com.mogo.eagle.core.function.api.chat.biz.ChatConsts
import com.mogo.eagle.core.function.chat.facade.consts.ChatHttp
import com.mogo.eagle.core.function.chat.facade.consts.SOCKET_HAND_SHAKE
import com.mogo.eagle.core.function.chat.facade.consts.SOCKET_HEART_BEAT
import com.mogo.eagle.core.function.chat.facade.utils.log
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.websocket.ISocketMsgCallBack
import com.mogo.websocket.ISocketMsgSetting
import com.mogo.websocket.SocketClient
@@ -46,13 +46,13 @@ internal object SocketConnectManager {
private val socketMsgSetting: ISocketMsgSetting = object : ISocketMsgSetting {
override fun getHandShakeMsg(): String {
log(ChatConsts.TAG, "getHandShakeMsg")
Logger.d(ChatConsts.TAG, "getHandShakeMsg")
val socketMsg = HeartBeat(SOCKET_HAND_SHAKE, MoGoAiCloudClientConfig.getInstance().sn)
return Gson().toJson(socketMsg)
}
override fun getHeartBeatMsg(): String {
log(ChatConsts.TAG, "getHeartBeatMsg")
Logger.d(ChatConsts.TAG, "getHeartBeatMsg")
val socketMsg = HeartBeat(SOCKET_HEART_BEAT, MoGoAiCloudClientConfig.getInstance().sn, roomId.get())
return Gson().toJson(socketMsg)
}
@@ -60,25 +60,25 @@ internal object SocketConnectManager {
private val socketMsgCallBack: ISocketMsgCallBack = object : ISocketMsgCallBack {
override fun onConnectOpen() {
log(ChatConsts.TAG, "onConnectOpen ---> ")
Logger.d(ChatConsts.TAG, "onConnectOpen ---> ")
}
override fun handleError(e: Exception) {
log(ChatConsts.TAG, "handleError ---> msg: ${e.message}")
Logger.d(ChatConsts.TAG, "handleError ---> msg: ${e.message}")
client.stopHeartBeat()
}
override fun onConnectClose() {
log(ChatConsts.TAG, "onConnectClose ---> stop web socket thread ,and ready to reconnect")
Logger.d(ChatConsts.TAG, "onConnectClose ---> stop web socket thread ,and ready to reconnect")
client.stop()
log(ChatConsts.TAG, "onConnectClose ---> stop Heart Beat")
Logger.d(ChatConsts.TAG, "onConnectClose ---> stop Heart Beat")
client.stopHeartBeat()
log(ChatConsts.TAG, "ready to reconnect")
Logger.d(ChatConsts.TAG, "ready to reconnect")
client.reConnect()
}
override fun handleMessage(message: String) {
log(ChatConsts.TAG, "handleMessage ---> $message")
Logger.d(ChatConsts.TAG, "handleMessage ---> $message")
msgCallback?.invoke(message)
}
}
@@ -91,7 +91,7 @@ internal object SocketConnectManager {
client.disConnect()
client.stop()
} catch (t: Throwable) {
log(ChatConsts.TAG, "IMService -- destroy -- ex: $t")
Logger.d(ChatConsts.TAG, "IMService -- destroy -- ex: $t")
}
}
}

View File

@@ -28,7 +28,6 @@ import com.mogo.eagle.core.function.chat.facade.MoGoChatFacade
import com.mogo.eagle.core.function.chat.facade.OnCallingInterrupt
import com.mogo.eagle.core.function.chat.facade.OnInComingCallback
import com.mogo.eagle.core.function.chat.facade.bridge.BridgeApi
import com.mogo.eagle.core.function.chat.facade.utils.log
import com.mogo.eagle.core.function.chat.facade.voice.VoiceControlFacade.REQUEST_CLOUD_VOICE_CALL
import com.mogo.eagle.core.utilcode.kotlin.*
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
@@ -40,6 +39,7 @@ import kotlinx.coroutines.flow.*
import kotlinx.coroutines.selects.select
import java.util.concurrent.atomic.AtomicReference
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.ToastUtils
import java.text.SimpleDateFormat
import java.util.*
@@ -111,7 +111,7 @@ internal class CallChatWindowManager {
private val onInComingCall = object : OnInComingCallback {
override fun invoke(isTeam: Boolean, user: UserInfo) {
if (isTeam) {
log(TAG, "车队邀请,不做处理....")
Logger.d(TAG, "车队邀请,不做处理....")
} else {
showInComingView(user)
}
@@ -121,7 +121,7 @@ internal class CallChatWindowManager {
private val onCallInterrupt = object : OnCallingInterrupt {
override fun invoke(isTeam: Boolean, user: UserInfo) {
if (isTeam) {
log(TAG, "车队邀请拒绝,不做处理....")
Logger.d(TAG, "车队邀请拒绝,不做处理....")
} else {
onCallInterrupt()
}
@@ -152,7 +152,7 @@ internal class CallChatWindowManager {
speak(REQUEST_CLOUD_VOICE_CALL)
calling()
} catch (t: Throwable) {
log(TAG, "来电呼叫异常:$t")
Logger.d(TAG, "来电呼叫异常:$t")
}
}.also { ring = it }
answer.onClick {
@@ -177,20 +177,20 @@ internal class CallChatWindowManager {
timer = inComingTimer(user, incomingView)
launch(Dispatchers.Main) {
val d1 = async {
log(TAG, "监听对方呼出,又挂断状态...")
Logger.d(TAG, "监听对方呼出,又挂断状态...")
var interrupted = interrupt.receive()
while (!interrupted) {
interrupted = interrupt.receive()
}
log(TAG, "收到对方呼出又挂断状态...")
Logger.d(TAG, "收到对方呼出又挂断状态...")
}
val d2 = async {
log(TAG, "监听拒绝状态...")
Logger.d(TAG, "监听拒绝状态...")
var isRefuse = refused.receive()
while (!isRefuse) {
isRefuse = refused.receive()
}
log(TAG, "收到拒绝状态, 隐藏来电界面")
Logger.d(TAG, "收到拒绝状态, 隐藏来电界面")
}
val state = select<Int> {
d1.onAwait { 1 }
@@ -198,11 +198,11 @@ internal class CallChatWindowManager {
}
when (state) {
1 -> {
log(TAG, "由于对方呼出又挂断,导致来电界面隐藏")
Logger.d(TAG, "由于对方呼出又挂断,导致来电界面隐藏")
d2.safeCancel()
}
2 -> {
log(TAG, "由于自己主动拒接,导致来电界面隐藏")
Logger.d(TAG, "由于自己主动拒接,导致来电界面隐藏")
d1.safeCancel()
}
}
@@ -278,9 +278,9 @@ internal class CallChatWindowManager {
}
private fun CoroutineScope.inComingTimer(user: UserInfo, incomingView: View) = launch {
log(TAG, "延迟30s消失计时开始...")
Logger.d(TAG, "延迟30s消失计时开始...")
delay(DEFAULT_MAX_DIALING_TIME)
log(TAG, "延迟30s消失计时结束...")
Logger.d(TAG, "延迟30s消失计时结束...")
doRefuse(user, false, incomingView, false)
hide(incomingView)
releaseAudioAndVoice()
@@ -324,20 +324,20 @@ internal class CallChatWindowManager {
isCallingShow = true
launch(Dispatchers.Main) {
val d1 = async {
log(ChatConsts.TAG, "等着新用户进来...")
Logger.d(ChatConsts.TAG, "等着新用户进来...")
var isNewUserEnter = callerEnter.receive()
while (!isNewUserEnter) {
isNewUserEnter = callerEnter.receive()
}
//新用户进来了
log(ChatConsts.TAG, "新用户进来了...")
Logger.d(ChatConsts.TAG, "新用户进来了...")
callingTimer()
.collect {
timer.text = parseTime(it)
}
}
val d2 = async {
log(ChatConsts.TAG, "等着退房通知...")
Logger.d(ChatConsts.TAG, "等着退房通知...")
var exit = exitRoom.receive()
while (!exit) {
exit = exitRoom.receive()
@@ -349,10 +349,10 @@ internal class CallChatWindowManager {
}
when (state) {
1 -> {
log(TAG, "通话中, 计时任务结束了(不般不会发生)...")
Logger.d(TAG, "通话中, 计时任务结束了(不般不会发生)...")
}
2 -> {
log(TAG, "收到退房通知,可以移除通话状态的界面了...")
Logger.d(TAG, "收到退房通知,可以移除通话状态的界面了...")
d1.safeCancel()
}
}
@@ -459,7 +459,7 @@ internal class CallChatWindowManager {
exitRoom()
},
onError = { code, msg, extra ->
log(TAG, "-- 应答失败 --: code:: $code; msg:: $msg; extra:: $extra")
Logger.d(TAG, "-- 应答失败 --: code:: $code; msg:: $msg; extra:: $extra")
when (code) {
AnswerState.CODE_ANSWER_SOCKET_DISCONNECT -> {
ToastUtils.showShort("连接已断开")
@@ -513,7 +513,7 @@ internal class CallChatWindowManager {
onError.invoke(it.code, it.msg, it.extra)
}
else -> {
log(ChatConsts.TAG, "[Answer][Other]-> $it")
Logger.d(ChatConsts.TAG, "[Answer][Other]-> $it")
}
}
}
@@ -535,7 +535,7 @@ internal class CallChatWindowManager {
}
},
onError = { code, msg, extra ->
log(TAG, "-- 拒绝失败 --: code:: $code; msg:: $msg; extra:: $extra")
Logger.d(TAG, "-- 拒绝失败 --: code:: $code; msg:: $msg; extra:: $extra")
if (isAnswerFail) {
ToastUtils.showShort("应答异常")
} else {
@@ -569,7 +569,7 @@ internal class CallChatWindowManager {
onError.invoke(itx.code, itx.msg, itx.extra)
}
else -> {
log(ChatConsts.TAG, "[Refuse][Other]-> $it")
Logger.d(ChatConsts.TAG, "[Refuse][Other]-> $it")
}
}
}
@@ -581,10 +581,10 @@ internal class CallChatWindowManager {
hangUp(
user,
onSuccess = {
log(TAG, "挂断接口请求成功,等着退房...")
Logger.d(TAG, "挂断接口请求成功,等着退房...")
},
onError = { code, msg, extra ->
log(TAG, "挂断异常code: $code; msg: $msg, ; extra: $extra")
Logger.d(TAG, "挂断异常code: $code; msg: $msg, ; extra: $extra")
ToastUtils.showShort("挂断异常")
})
@@ -638,14 +638,14 @@ internal class CallChatWindowManager {
}
is HangUpState.Error -> {
hasHangUpped = false
log(
Logger.d(
TAG,
"-- 挂断失败 --: code:: ${itx.code}; msg:: ${itx.msg}; extra:: ${itx.extra}"
)
onError.invoke(itx.code, itx.msg, itx.extra)
}
else -> {
log(ChatConsts.TAG, "[HangUp][Other]-> $it")
Logger.d(ChatConsts.TAG, "[HangUp][Other]-> $it")
}
}
}

View File

@@ -1,9 +0,0 @@
@file:JvmName("LogUtil")
package com.mogo.eagle.core.function.chat.facade.utils
import com.mogo.eagle.core.function.chat.facade.aop.DebugLog
@DebugLog
fun log(tag: String, msg: String) {}

View File

@@ -10,7 +10,7 @@ import com.mogo.commons.voice.IMogoVoiceCmdCallBack
import com.mogo.eagle.core.function.api.chat.biz.IMoGoVoiceControlFacade
import com.mogo.eagle.core.function.api.chat.biz.IMoGoVoiceControlFacade.IMoGoVoiceCallback
import com.mogo.eagle.core.function.chat.facade.bridge.BridgeApi
import com.mogo.eagle.core.function.chat.facade.utils.log
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import java.lang.ref.WeakReference
import java.util.concurrent.CopyOnWriteArrayList
import java.util.concurrent.atomic.AtomicBoolean
@@ -64,27 +64,27 @@ object VoiceControlFacade: IMoGoVoiceControlFacade, IMogoVoiceCmdCallBack, IMogo
.forEach {
when (itx) {
VOICE_REGISTER_CANCEL_CALL -> {
log(TAG, "语音免唤醒 取消打电话")
Logger.d(TAG, "语音免唤醒 取消打电话")
it.get()?.onVoiceCancelCall()
}
VOICE_REGISTER_INVITE_JOIN_TEAM -> {
log(TAG, "语音免唤醒 邀請加入车队")
Logger.d(TAG, "语音免唤醒 邀請加入车队")
it.get()?.onVoiceInviteJoinTeam()
}
VOICE_REGISTER_JOIN_TEAM -> {
log(TAG, "语音免唤醒 加入车队")
Logger.d(TAG, "语音免唤醒 加入车队")
it.get()?.onVoiceJoinTeam()
}
VOICE_REGISTER_REFUSE_JOIN_TEAM -> {
log(TAG, "语音免唤醒 拒绝加入车队")
Logger.d(TAG, "语音免唤醒 拒绝加入车队")
it.get()?.onVoiceRefuseJoinTeam()
}
VOICE_INTENT_ANSWER_CALL -> {
log(TAG, "语音免唤醒 接收电话邀请")
Logger.d(TAG, "语音免唤醒 接收电话邀请")
it.get()?.onVoiceAnswerCall()
}
VOICE_INTENT_REFUSE_CALL -> {
log(TAG, "语音免唤醒 来电拒接")
Logger.d(TAG, "语音免唤醒 来电拒接")
it.get()?.onVoiceRefuseCall()
}
}
@@ -125,14 +125,14 @@ object VoiceControlFacade: IMoGoVoiceControlFacade, IMogoVoiceCmdCallBack, IMogo
}
override fun registerInviteJoinTeam(context: Context, listener: IMoGoVoiceCallback) {
log(TAG, "registerInviteJoinTeam")
Logger.d(TAG, "registerInviteJoinTeam")
listeners += WeakReference(listener)
AIAssist.getInstance(context)
.registerUnWakeupCommand(VOICE_REGISTER_INVITE_JOIN_TEAM, customInviteJoinTeamArray, this)
}
override fun registerJoinTeam(context: Context, listener: IMoGoVoiceCallback) {
log(TAG, "registerJoinTeam")
Logger.d(TAG, "registerJoinTeam")
listeners += WeakReference(listener)
AIAssist.getInstance(context)
.registerUnWakeupCommand(VOICE_REGISTER_JOIN_TEAM, customJoinTeamArray, this)
@@ -170,19 +170,19 @@ object VoiceControlFacade: IMoGoVoiceControlFacade, IMogoVoiceCmdCallBack, IMogo
override fun onCmdAction(speakText: String?) {
super.onCmdAction(speakText)
log(TAG, "onCmdAction ---> ")
Logger.d(TAG, "onCmdAction ---> ")
this@VoiceControlFacade.onCmdAgree?.get()?.invoke(true)
}
override fun onCmdCancel(speakText: String?) {
super.onCmdCancel(speakText)
log(TAG, "onCmdCancel ---> ")
Logger.d(TAG, "onCmdCancel ---> ")
this@VoiceControlFacade.onCmdAgree?.get()?.invoke(false)
}
override fun onSpeakEnd(speakText: String?) {
super.onSpeakEnd(speakText)
log(TAG, "onSpeakEnd ---> ")
Logger.d(TAG, "onSpeakEnd ---> ")
this@VoiceControlFacade.onSpeechFinish?.get()?.invoke()
}
})
@@ -205,10 +205,10 @@ object VoiceControlFacade: IMoGoVoiceControlFacade, IMogoVoiceCmdCallBack, IMogo
override fun onIntentReceived(cmd: String?, intent: Intent?) {
val command = cmd ?: return
log(TAG, "handleOnIntentCmd: cmd -> $command")
Logger.d(TAG, "handleOnIntentCmd: cmd -> $command")
when (command) {
VOICE_INTENT_CANCEL_CALL_COMMAND, VOICE_INTENT_REFUSE_CALL -> {
log(TAG, "语音唤醒 取消打电话")
Logger.d(TAG, "语音唤醒 取消打电话")
listeners
.filter {
it.get() != null