Fixed speakerphone toggling during mobile calls

This commit is contained in:
Juha Heinanen
2026-05-18 17:32:40 +03:00
parent 8f95b3609c
commit de77528582
2 changed files with 16 additions and 17 deletions

View File

@ -2434,6 +2434,20 @@ class BaresipService: Service() {
handler.postDelayed(runnable, 500)
}
fun toggleSpeakerphone() {
speakerPhone = !speakerPhone
// Notify the UI to update the icon color
postServiceEvent(
ServiceEvent(
"speaker update,$speakerPhone",
arrayListOf(0L, 0L),
System.nanoTime()
)
)
// Apply the new audio route
ensureCommunicationMode()
}
@SuppressLint("WakelockTimeout", "Wakelock")
private fun proximitySensing(enable: Boolean) {
if (enable) {

View File

@ -643,23 +643,8 @@ private fun TopAppBar(
.clip(CircleShape)
.combinedClickable(
onClick = {
val aor = viewModel.selectedAor.value
val ua = uas.value.find { it.account.aor == aor }
val call = ua?.currentCall()
val connection =
if (call != null) ConnectionService.connections[call.callp] else null
if (connection != null) {
@Suppress("DEPRECATION")
connection.setAudioRoute(
if (isSpeakerOn)
android.telecom.CallAudioState.ROUTE_EARPIECE
else
android.telecom.CallAudioState.ROUTE_SPEAKER
)
} else {
BaresipService.speakerPhone = !isSpeakerOn
viewModel.updateSpeakerPhoneStatus(BaresipService.speakerPhone)
}
// Unified toggle via BaresipService
BaresipService.instance?.toggleSpeakerphone()
},
onLongClick = {
alertTitle.value = speakerPhoneTitle