From 8303f2e06200ed996b6d407871c64532bb77c6c8 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 23 Aug 2021 14:48:47 +0200 Subject: [PATCH] Added setting for auto call recording --- .../main/settings/viewmodels/CallSettingsViewModel.kt | 8 ++++++++ app/src/main/java/org/linphone/core/CoreContext.kt | 4 ++++ app/src/main/java/org/linphone/core/CorePreferences.kt | 6 ++++++ app/src/main/res/layout/settings_call_fragment.xml | 6 ++++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 25 insertions(+) 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 a8627769c..a8b973910 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 @@ -101,6 +101,13 @@ class CallSettingsViewModel : GenericSettingsViewModel() { } val rfc2833Dtmf = MutableLiveData() + val autoStartCallRecordingListener = object : SettingListenerStub() { + override fun onBoolValueChanged(newValue: Boolean) { + prefs.automaticallyStartCallRecording = newValue + } + } + val autoStartCallRecording = MutableLiveData() + val autoStartListener = object : SettingListenerStub() { override fun onBoolValueChanged(newValue: Boolean) { prefs.callRightAway = newValue @@ -191,6 +198,7 @@ class CallSettingsViewModel : GenericSettingsViewModel() { systemWideOverlay.value = prefs.systemWideCallOverlay sipInfoDtmf.value = core.useInfoForDtmf rfc2833Dtmf.value = core.useRfc2833ForDtmf + autoStartCallRecording.value = prefs.automaticallyStartCallRecording autoStart.value = prefs.callRightAway autoAnswer.value = prefs.autoAnswerEnabled autoAnswerDelay.value = prefs.autoAnswerDelay diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 76b42c0d5..3dcffd468 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -190,6 +190,10 @@ class CoreContext(val context: Context, coreConfig: Config) { AudioRouteUtils.routeAudioToBluetooth(call) } } else if (state == Call.State.Connected) { + if (corePreferences.automaticallyStartCallRecording) { + Log.i("[Context] We were asked to start the call recording automatically") + call.startRecording() + } onCallStarted() } else if (state == Call.State.StreamsRunning) { // Do not automatically route audio to bluetooth after first call diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 53b27704f..62be01a4f 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -283,6 +283,12 @@ class CorePreferences constructor(private val context: Context) { config.setBool("app", "call_right_away", value) } + var automaticallyStartCallRecording: Boolean + get() = config.getBool("app", "auto_start_call_record", false) + set(value) { + config.setBool("app", "auto_start_call_record", value) + } + var fullScreenCallUI: Boolean get() = config.getBool("app", "full_screen_call", true) set(value) { diff --git a/app/src/main/res/layout/settings_call_fragment.xml b/app/src/main/res/layout/settings_call_fragment.xml index b6878790c..05be8be1e 100644 --- a/app/src/main/res/layout/settings_call_fragment.xml +++ b/app/src/main/res/layout/settings_call_fragment.xml @@ -127,6 +127,12 @@ linphone:listener="@{viewModel.rfc2833DtmfListener}" linphone:checked="@={viewModel.rfc2833Dtmf}"/> + + Ring during incoming early media Pause calls when audio focus is lost Android notification settings + Automatically start call recording Mark as read upon notification dismissal