diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index 860161f0..f7f341eb 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -138,11 +138,6 @@ class MainActivity : ComponentActivity() { comDevChangedListener = AudioManager.OnCommunicationDeviceChangedListener { device -> if (device != null) { Log.d(TAG, "Com device changed to type ${device.type} in mode ${am.mode}") - val speakerIcon = if (Utils.isSpeakerPhoneOn(am)) - R.drawable.speaker_on - else - R.drawable.speaker_off - viewModel.updateSpeakerIcon(speakerIcon) } } am.addOnCommunicationDeviceChangedListener(mainExecutor, comDevChangedListener) diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt index bf7190c5..cd03bf68 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt @@ -61,6 +61,7 @@ import androidx.compose.material.icons.filled.Menu import androidx.compose.material.icons.filled.Mic import androidx.compose.material.icons.filled.MicOff import androidx.compose.material.icons.filled.RecordVoiceOver +import androidx.compose.material.icons.filled.SpeakerPhone import androidx.compose.material.icons.filled.VoiceOverOff import androidx.compose.material.icons.outlined.Clear import androidx.compose.material3.BasicAlertDialog @@ -499,7 +500,6 @@ private fun TopAppBar( onQuitClick: () -> Unit ) { val ctx = LocalContext.current - val currentSpeakerIcon by viewModel.speakerIcon.collectAsState() val currentMicIcon by viewModel.micIcon.collectAsState() val am = ctx.getSystemService(Context.AUDIO_SERVICE) as AudioManager @@ -507,6 +507,7 @@ private fun TopAppBar( val recOffImage = Icons.Filled.VoiceOverOff val recOnImage = Icons.Filled.RecordVoiceOver var recImage by remember { mutableStateOf(recOffImage) } + val isSpeakerOn = remember { mutableStateOf(Utils.isSpeakerPhoneOn(am)) } var menuExpanded by remember { mutableStateOf(false) } @@ -605,23 +606,17 @@ private fun TopAppBar( Spacer(modifier = Modifier.width(16.dp)) Icon( - imageVector = ImageVector.vectorResource(currentSpeakerIcon), + imageVector = Icons.Filled.SpeakerPhone, modifier = Modifier .size(40.dp) .combinedClickable( onClick = { if (Build.VERSION.SDK_INT >= 31) - Log.d( - TAG, "Toggling speakerphone when dev/mode is " + - "${am.communicationDevice!!.type}/${am.mode}" + Log.d(TAG, "Toggling speakerphone when dev/mode is " + + "${am.communicationDevice!!.type}/${am.mode}" ) + isSpeakerOn.value = !Utils.isSpeakerPhoneOn(am) Utils.toggleSpeakerPhone(ContextCompat.getMainExecutor(ctx), am) - viewModel.updateSpeakerIcon( - if (Utils.isSpeakerPhoneOn(am)) - R.drawable.speaker_on - else - R.drawable.speaker_off - ) }, onLongClick = { alertTitle.value = ctx.getString(R.string.speakerphone_title) @@ -629,7 +624,7 @@ private fun TopAppBar( showAlert.value = true }, ), - tint = if (Utils.isSpeakerPhoneOn(am)) + tint = if (isSpeakerOn.value) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.onPrimary, diff --git a/app/src/main/kotlin/com/tutpro/baresip/ViewModel.kt b/app/src/main/kotlin/com/tutpro/baresip/ViewModel.kt index bea7f20e..df66292c 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ViewModel.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ViewModel.kt @@ -69,13 +69,6 @@ class ViewModel(application: Application) : AndroidViewModel(application) { _hideKeyboard.intValue++ } - private val _speakerIcon = MutableStateFlow(R.drawable.speaker_off) - val speakerIcon: StateFlow = _speakerIcon.asStateFlow() - - fun updateSpeakerIcon(iconResId: Int) { - _speakerIcon.value = iconResId - } - private val _micIcon = MutableStateFlow(Icons.Filled.Mic) val micIcon: StateFlow = _micIcon.asStateFlow() diff --git a/app/src/main/res/drawable/speaker_off.xml b/app/src/main/res/drawable/speaker_off.xml deleted file mode 100644 index d91a9145..00000000 --- a/app/src/main/res/drawable/speaker_off.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/speaker_on.xml b/app/src/main/res/drawable/speaker_on.xml deleted file mode 100644 index d91a9145..00000000 --- a/app/src/main/res/drawable/speaker_on.xml +++ /dev/null @@ -1,5 +0,0 @@ - - -