You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓APP集成Twilio SDK:固定电话DTMF按键检测问题

解决Twilio安卓SDK无法读取DTMF信号的问题

以下是几个经过验证的排查和解决步骤:

  • 使用正确的DTMF监听API(适配最新SDK)
    确保你使用的是Twilio Voice SDK的最新稳定版,旧版本的监听方式可能存在兼容性问题。在呼叫连接成功后,为Call对象添加DTMF接收监听器:

    // 呼叫建立后(比如在CallListener的onConnect方法中)
    call.addOnDtmfReceivedListener(new Call.OnDtmfReceivedListener() {
        @Override
        public void onDtmfReceived(Call call, String digits) {
            // 处理收到的DTMF数字,例如检测按下的是9
            if ("9".equals(digits)) {
                // 触发自定义业务事件
                handleNinePressedEvent();
            }
        }
    });
    
  • 确认应用已获取录音权限
    带内DTMF信号需要通过音频捕获识别,因此必须确保应用持有RECORD_AUDIO权限。在运行时主动申请权限:

    if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.RECORD_AUDIO)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.RECORD_AUDIO},
                1001);
    }
    
  • 检查呼叫配置是否禁用DTMF
    发起呼叫时,避免在Call.Options中设置禁用DTMF的参数,保持默认配置即可:

    OutgoingCall outgoingCall = Voice.call(
            getApplicationContext(),
            yourAccessToken,
            new Call.Options.Builder(targetPhoneNumber)
                    .build()
    );
    
  • 排查运营商与媒体网关兼容性
    部分固定电话运营商的DTMF发送格式可能为带外(如RFC 2833),Twilio SDK默认支持,但如果仍有问题,可在Twilio控制台的呼叫设置中,强制指定DTMF的传输格式为RFC 2833,避免带内信号丢失。

内容的提问来源于stack exchange,提问作者Roshan D'Souza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:30:01