diff --git a/app/src/main/java/one/mixin/android/vo/CallStateLiveData.kt b/app/src/main/java/one/mixin/android/vo/CallStateLiveData.kt index c1fed2173c..228e324f7d 100644 --- a/app/src/main/java/one/mixin/android/vo/CallStateLiveData.kt +++ b/app/src/main/java/one/mixin/android/vo/CallStateLiveData.kt @@ -170,7 +170,7 @@ enum class CallType { Group, } -private const val JOIN_MUTE_MIC_COUNT = 7 +private const val JOIN_MUTE_MIC_COUNT = 8 class CallStateLiveData : LiveData() { var state: CallService.CallState = CallService.CallState.STATE_IDLE @@ -296,10 +296,10 @@ class CallStateLiveData : LiveData() { } fun needMuteWhenJoin(conversationId: String): Boolean = - getUsersCount(conversationId) > JOIN_MUTE_MIC_COUNT + getUsersCount(conversationId) >= JOIN_MUTE_MIC_COUNT fun needMuteWhenJoin(groupCallState: GroupCallState?): Boolean = - (groupCallState?.userIds()?.size ?: 0) > JOIN_MUTE_MIC_COUNT + (groupCallState?.userIds()?.size ?: 0) >= JOIN_MUTE_MIC_COUNT fun getUsersCount(conversationId: String): Int = getUsers(conversationId)?.size ?: 0 diff --git a/app/src/main/java/one/mixin/android/webrtc/GroupCallService.kt b/app/src/main/java/one/mixin/android/webrtc/GroupCallService.kt index bf3f782cd3..1569d7d123 100644 --- a/app/src/main/java/one/mixin/android/webrtc/GroupCallService.kt +++ b/app/src/main/java/one/mixin/android/webrtc/GroupCallService.kt @@ -64,6 +64,7 @@ class GroupCallService : CallService() { private val scheduledExecutors = Executors.newScheduledThreadPool(1) private val scheduledFutures = mutableMapOf>() private var reconnectingTimeoutFuture: ScheduledFuture<*>? = null + private var initialMuteHandled = false @Inject lateinit var chatWebSocket: ChatWebSocket @@ -603,14 +604,14 @@ class GroupCallService : CallService() { override fun needInitWebRtc(action: String) = action != ACTION_CHECK_PEER override fun onConnected() { - val fromReconnecting = callState.reconnecting super.onConnected() callExecutor.execute { reconnectTimeoutCount = 0 reconnectingTimeoutFuture?.cancel(true) - if (fromReconnecting) return@execute + if (initialMuteHandled) return@execute val cid = callState.conversationId ?: return@execute + initialMuteHandled = true val needMute = callState.needMuteWhenJoin(cid) if (needMute) { muteAudio(this, true) @@ -749,6 +750,7 @@ class GroupCallService : CallService() { override fun onCallDisconnected() { disposable?.dispose() reconnectTimeoutCount = 0 + initialMuteHandled = false } override fun onDestroyed() {