From d7d4ccd78f94d791a34103a67eb1e9da2b66402e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 22 Oct 2021 10:22:51 +0200 Subject: [PATCH] Disable SDK's audio focus requests when telecom manager is enabled --- .../activities/main/settings/fragments/CallSettingsFragment.kt | 1 + .../main/settings/viewmodels/CallSettingsViewModel.kt | 1 + app/src/main/java/org/linphone/core/CoreContext.kt | 3 ++- app/src/main/java/org/linphone/core/CorePreferences.kt | 2 ++ 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt index 61929d3ad..2c2ac7efc 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt @@ -156,6 +156,7 @@ class CallSettingsFragment : GenericSettingFragment val account = TelecomHelper.get().findExistingAccount(requireContext()) TelecomHelper.get().updateAccount(account) val enabled = TelecomHelper.get().isAccountEnabled() + Log.i("[Call Settings] Telecom Manager is ${if (enabled) "enabled" else "disabled"}") viewModel.useTelecomManager.value = enabled corePreferences.useTelecomManager = enabled } diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt index 6b9a7ec7d..47f3ef501 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt @@ -71,6 +71,7 @@ class CallSettingsViewModel : GenericSettingsViewModel() { if (TelecomHelper.exists()) { Log.i("[Call Settings] Removing Telecom Manager account & destroying singleton") TelecomHelper.get().removeAccount() + TelecomHelper.get().destroy() TelecomHelper.destroy() } prefs.useTelecomManager = newValue diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 95b74f6f4..e15cd3885 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -313,7 +313,8 @@ class CoreContext(val context: Context, coreConfig: Config) { // CoreContext listener must be added first! if (Version.sdkAboveOrEqual(Version.API26_O_80) && corePreferences.useTelecomManager) { - Log.i("[Context] Creating telecom helper") + Log.i("[Context] Creating TelecomHelper, disabling audio focus requests in AudioHelper") + core.config.setBool("audio", "android_disable_audio_focus_requests", true) TelecomHelper.create(context) } diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 978624526..f951dd85f 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -300,6 +300,8 @@ class CorePreferences constructor(private val context: Context) { get() = config.getBool("app", "use_self_managed_telecom_manager", false) set(value) { config.setBool("app", "use_self_managed_telecom_manager", value) + // We need to disable audio focus requests when enabling telecom manager, otherwise it creates conflicts + config.setBool("audio", "android_disable_audio_focus_requests", value) } var fullScreenCallUI: Boolean