diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 2aab7404b..7235a7cc1 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -797,8 +797,12 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C } @WorkerThread - fun playDtmf(character: Char, duration: Int = 200) { - if (Settings.System.getInt(context.contentResolver, Settings.System.DTMF_TONE_WHEN_DIALING) != 0) { + fun playDtmf(character: Char, duration: Int = 200, ignoreSystemPolicy: Boolean = false) { + if (ignoreSystemPolicy || Settings.System.getInt( + context.contentResolver, + Settings.System.DTMF_TONE_WHEN_DIALING + ) != 0 + ) { core.playDtmf(character, duration) } else { Log.w("$TAG Numpad DTMF tones are disabled in system settings, not playing them") diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt index aa8737457..5a2ca18ad 100644 --- a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt @@ -525,6 +525,7 @@ class CurrentCallViewModel @UiThread constructor() : GenericViewModel() { } numpadModel = NumpadModel( + true, { digit -> // onDigitClicked appendDigitToSearchBarEvent.value = Event(digit) coreContext.postOnCoreThread { diff --git a/app/src/main/java/org/linphone/ui/main/history/model/NumpadModel.kt b/app/src/main/java/org/linphone/ui/main/history/model/NumpadModel.kt index af5f5bc52..d36c29d54 100644 --- a/app/src/main/java/org/linphone/ui/main/history/model/NumpadModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/model/NumpadModel.kt @@ -25,6 +25,7 @@ import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.core.tools.Log open class NumpadModel @UiThread constructor( + private val inCallNumpad: Boolean, private val onDigitClicked: (value: String) -> (Unit), private val onBackspaceClicked: () -> (Unit), private val onCallClicked: () -> (Unit), @@ -42,8 +43,8 @@ open class NumpadModel @UiThread constructor( onDigitClicked.invoke(value) if (value.isNotEmpty()) { - coreContext.postOnCoreThread { core -> - coreContext.playDtmf(value[0]) + coreContext.postOnCoreThread { + coreContext.playDtmf(value[0], ignoreSystemPolicy = inCallNumpad) } } } diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt index 6bb87f30d..1c0951e3d 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt @@ -125,6 +125,7 @@ class StartCallViewModel @UiThread constructor() : AddressSelectionViewModel() { init { isNumpadVisible.value = false numpadModel = NumpadModel( + false, { digit -> // onDigitClicked appendDigitToSearchBarEvent.value = Event(digit) diff --git a/app/src/main/res/layout/call_numpad_bottom_sheet.xml b/app/src/main/res/layout/call_numpad_bottom_sheet.xml index 8d6291c06..4b79e9cea 100644 --- a/app/src/main/res/layout/call_numpad_bottom_sheet.xml +++ b/app/src/main/res/layout/call_numpad_bottom_sheet.xml @@ -46,6 +46,8 @@ android:textSize="30sp" android:text="@{model.digits, default=`0123456789`}" android:background="@color/transparent_color" + android:enabled="false" + android:inputType="number|phone" android:gravity="center" android:maxLines="1" android:ellipsize="start"