自定义拨号器,如何通过呼叫发送“1”或“2”。当您致电客户服务并且他们需要输入时

Custom dialler, how can I send "1" or "2" via the call. For when you call a customer service and they need input

所以我有这段代码,它接听我当前的电话并播放 DTMF 音:

if (CallManager.currentCall != null) {
        when (pressed) {
            10 -> CallManager.currentCall?.playDtmfTone("*".toCharArray()[0])
            11 -> CallManager.currentCall?.playDtmfTone("#".toCharArray()[0])
            else -> CallManager.currentCall?.playDtmfTone(pressed!!.toChar())
        }

    }

但我会打电话给一家大公司。然后机器进入。 "For sales press 1, for accounting press 2" 等等 我按下我的布局视图,代码被调用,当前调用存在,但即使如此,调用也不会接受我的输入。它没有响应我按下的内容。 我做错了什么?

我尝试了多个默认拨号器并发现 Drupe:https://play.google.com/store/apps/details?id=mobi.drupe.app&gl=NL 可以发送DTMF音,所以我认为这是可能的。

已修复:

 fun pressed(pressed: Int?) {
    if (SIPManager.instance != null && SIPManager.instance?.numberOfActiveCalls ?: 0 > 0) {
        SIPManager.instance!!.sendDTMF(null, pressed)
    }
    if (CallManager.currentCall != null) {
        when (pressed) {
            10 -> playDTMF("*".toCharArray()[0])
            11 -> playDTMF("#".toCharArray()[0])
            else -> playDTMF(pressed!!.toString().toCharArray()[0])
        }
    }
}

fun playDTMF(value: Char) {
    Log.i("DTMF", "DTMF char is: " + value)
    CallManager.currentCall!!.playDtmfTone(value)
    Handler().postDelayed({
        CallManager.currentCall!!.stopDtmfTone()
    }, 250)
}

发送了错误的字符