From fd5f17522efa602b60f6d26e7bd16a9019b2df0e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 18 Dec 2024 13:30:02 +0100 Subject: [PATCH] Make sure Telecom Manager is disabled --- .../main/dialer/fragments/DialerFragment.kt | 15 -------- .../fragments/CallSettingsFragment.kt | 5 --- .../viewmodels/CallSettingsViewModel.kt | 11 ++---- .../java/org/linphone/core/CoreContext.kt | 36 ++----------------- .../org/linphone/utils/AudioRouteUtils.kt | 35 +----------------- 5 files changed, 5 insertions(+), 97 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt b/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt index 926442817..2b0434e17 100644 --- a/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/dialer/fragments/DialerFragment.kt @@ -50,7 +50,6 @@ import org.linphone.compatibility.Compatibility import org.linphone.core.tools.Log import org.linphone.databinding.DialerFragmentBinding import org.linphone.mediastream.Version -import org.linphone.telecom.TelecomHelper import org.linphone.utils.AppUtils import org.linphone.utils.DialogUtils import org.linphone.utils.Event @@ -314,20 +313,6 @@ class DialerFragment : SecureFragment() { @TargetApi(Version.API26_O_80) private fun enableTelecomManager() { - Log.i("[Dialer] Telecom Manager permissions granted") - if (!TelecomHelper.exists()) { - Log.i("[Dialer] Creating Telecom Helper") - if (Compatibility.hasTelecomManagerFeature(requireContext())) { - TelecomHelper.create(requireContext()) - } else { - Log.e( - "[Dialer] Telecom Helper can't be created, device doesn't support connection service!" - ) - return - } - } else { - Log.e("[Dialer] Telecom Manager was already created ?!") - } corePreferences.useTelecomManager = true } 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 735febf15..a2e440ee6 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 @@ -92,11 +92,6 @@ class CallSettingsFragment : GenericSettingFragment if (Compatibility.hasTelecomManagerFeature(requireContext())) { if (!Compatibility.hasTelecomManagerPermissions(requireContext())) { Compatibility.requestTelecomManagerPermissions(requireActivity(), 1) - } else if (!TelecomHelper.exists()) { - corePreferences.useTelecomManager = true - Log.w("[Telecom Helper] Doesn't exists yet, creating it") - TelecomHelper.create(requireContext()) - updateTelecomManagerAccount() } } else { Log.e( 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 45fb318f1..29a8f0270 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 @@ -88,15 +88,8 @@ class CallSettingsViewModel : GenericSettingsViewModel() { if (newValue) { enableTelecomManagerEvent.value = Event(true) } else { - if (TelecomHelper.exists()) { - Log.i("[Call Settings] Removing Telecom Manager account & destroying singleton") - TelecomHelper.get().removeAccount() - TelecomHelper.get().destroy() - TelecomHelper.destroy() - - Log.w("[Call Settings] Disabling Telecom Manager auto-enable") - prefs.manuallyDisabledTelecomManager = true - } + Log.w("[Call Settings] Disabling Telecom Manager auto-enable") + prefs.manuallyDisabledTelecomManager = true prefs.useTelecomManager = false } } diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 28c09c9cb..c048013b9 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -63,7 +63,6 @@ import org.linphone.contact.getContactForPhoneNumberOrAddress import org.linphone.core.tools.Log import org.linphone.mediastream.Version import org.linphone.notifications.NotificationsManager -import org.linphone.telecom.TelecomHelper import org.linphone.utils.* import org.linphone.utils.Event @@ -372,22 +371,7 @@ class CoreContext( core.addListener(listener) - // CoreContext listener must be added first! - if (Version.sdkAboveOrEqual(Version.API26_O_80) && corePreferences.useTelecomManager) { - if (Compatibility.hasTelecomManagerPermissions(context)) { - Log.i( - "[Context] Creating Telecom Helper, disabling audio focus requests in AudioHelper" - ) - core.config.setBool("audio", "android_disable_audio_focus_requests", true) - val telecomHelper = TelecomHelper.required(context) - Log.i( - "[Context] Telecom Helper created, account is ${if (telecomHelper.isAccountEnabled()) "enabled" else "disabled"}" - ) - } else { - Log.w("[Context] Can't create Telecom Helper, permissions have been revoked") - corePreferences.useTelecomManager = false - } - } + corePreferences.useTelecomManager = false configureCore() @@ -431,11 +415,6 @@ class CoreContext( } notificationsManager.destroy() contactsManager.destroy() - if (TelecomHelper.exists()) { - Log.i("[Context] Destroying telecom helper") - TelecomHelper.get().destroy() - TelecomHelper.destroy() - } val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager audioManager.unregisterAudioDeviceCallback(audioDeviceCallback) @@ -736,18 +715,7 @@ class CoreContext( return true } } else { - if (TelecomHelper.exists()) { - if (!TelecomHelper.get().isIncomingCallPermitted() || - TelecomHelper.get().isInManagedCall() - ) { - Log.w( - "[Context] Refusing the call with reason busy because Telecom Manager will reject the call" - ) - return true - } - } else { - Log.e("[Context] Telecom Manager singleton wasn't created!") - } + Log.e("[Context] Telecom Manager singleton wasn't created!") } return false } diff --git a/app/src/main/java/org/linphone/utils/AudioRouteUtils.kt b/app/src/main/java/org/linphone/utils/AudioRouteUtils.kt index 6e05fcbf6..1fc02af75 100644 --- a/app/src/main/java/org/linphone/utils/AudioRouteUtils.kt +++ b/app/src/main/java/org/linphone/utils/AudioRouteUtils.kt @@ -119,40 +119,7 @@ class AudioRouteUtils { types: List, skipTelecom: Boolean = false ) { - val currentCall = call ?: coreContext.core.currentCall ?: coreContext.core.calls.firstOrNull() - if (currentCall != null && !skipTelecom && TelecomHelper.exists()) { - Log.i( - "[Audio Route Helper] Call provided & Telecom Helper exists, trying to dispatch audio route change through Telecom API" - ) - val connection = TelecomHelper.get().findConnectionForCallId( - currentCall.callLog.callId.orEmpty() - ) - if (connection != null) { - val route = when (types.first()) { - AudioDevice.Type.Earpiece -> CallAudioState.ROUTE_EARPIECE - AudioDevice.Type.Speaker -> CallAudioState.ROUTE_SPEAKER - AudioDevice.Type.Headphones, AudioDevice.Type.Headset -> CallAudioState.ROUTE_WIRED_HEADSET - AudioDevice.Type.Bluetooth, AudioDevice.Type.BluetoothA2DP, AudioDevice.Type.HearingAid -> CallAudioState.ROUTE_BLUETOOTH - else -> CallAudioState.ROUTE_WIRED_OR_EARPIECE - } - Log.i( - "[Audio Route Helper] Telecom Helper & matching connection found, dispatching audio route change through it" - ) - // We will be called here again by NativeCallWrapper.onCallAudioStateChanged() - // but this time with skipTelecom = true - if (!Compatibility.changeAudioRouteForTelecomManager(connection, route)) { - Log.w( - "[Audio Route Helper] Connection is already using this route internally, make the change!" - ) - applyAudioRouteChange(currentCall, types) - } - } else { - Log.w("[Audio Route Helper] Telecom Helper found but no matching connection!") - applyAudioRouteChange(currentCall, types) - } - } else { - applyAudioRouteChange(call, types) - } + applyAudioRouteChange(call, types) } fun routeAudioToEarpiece(call: Call? = null, skipTelecom: Boolean = false) {