Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions app/src/main/java/one/mixin/android/vo/CallStateLiveData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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<CallService.CallState>() {
var state: CallService.CallState = CallService.CallState.STATE_IDLE
Expand Down Expand Up @@ -296,10 +296,10 @@ class CallStateLiveData : LiveData<CallService.CallState>() {
}

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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ class GroupCallService : CallService() {
private val scheduledExecutors = Executors.newScheduledThreadPool(1)
private val scheduledFutures = mutableMapOf<String, ScheduledFuture<*>>()
private var reconnectingTimeoutFuture: ScheduledFuture<*>? = null
private var initialMuteHandled = false

@Inject
lateinit var chatWebSocket: ChatWebSocket
Expand Down Expand Up @@ -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<GroupCallService>(this, true)
Expand Down Expand Up @@ -749,6 +750,7 @@ class GroupCallService : CallService() {
override fun onCallDisconnected() {
disposable?.dispose()
reconnectTimeoutCount = 0
initialMuteHandled = false
}

override fun onDestroyed() {
Expand Down