diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt index ff2fe6f4..3009282e 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt @@ -520,7 +520,8 @@ class BaresipService: Service() { } "call outgoing" -> { stopMediaPlayer() - am.mode = AudioManager.MODE_IN_COMMUNICATION + if (am.mode != AudioManager.MODE_IN_COMMUNICATION) + am.mode = AudioManager.MODE_IN_COMMUNICATION requestAudioFocus(AudioAttributes.USAGE_VOICE_COMMUNICATION, AudioAttributes.CONTENT_TYPE_SPEECH) setCallVolume() @@ -757,7 +758,6 @@ class BaresipService: Service() { am.isSpeakerphoneOn = false am.stopBluetoothSco() abandonAudioFocus() - am.mode = AudioManager.MODE_NORMAL proximitySensing(false) } if (ua.account.callHistory && !call.hasHistory) { diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index 796d6228..9d2eebc3 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -792,6 +792,9 @@ class MainActivity : AppCompatActivity() { super.onResume() Log.d(TAG, "Main onResume with action '$resumeAction'") nm.cancelAll() + // Keep the app in communication mode in order to avoid audio delay when the mode changes + if (am.mode != AudioManager.MODE_RINGTONE && am.mode != AudioManager.MODE_IN_COMMUNICATION) + am.mode = AudioManager.MODE_IN_COMMUNICATION visible = true when (resumeAction) { "call show" -> diff --git a/app/src/main/res/raw/ringback.wav b/app/src/main/res/raw/ringback.wav index 4e5fd9bb..7b3f8195 100644 Binary files a/app/src/main/res/raw/ringback.wav and b/app/src/main/res/raw/ringback.wav differ