隐藏拨号时的DTMF音调

9

我正在制作一个呼叫应用程序,可以通过拨打号码并发送DTMF音调来实现。

String number = "tel:+1234567,890#";
Intent c1 = new Intent(android.content.Intent.ACTION_CALL, Uri.parse(number));

目前它可以拨打1234567号码,等待约3秒钟,然后拨打890号码。功能正常,但它会以音调的形式发送890号码,这种方式不太舒适。是否有办法在不产生音调响应的情况下发送890号码?

1个回答

1
开发人员无法通过公共API来实现这一点。不幸的是,Android在处理DTMF控制方面表现不佳。例如,有一个两年前的功能请求,允许用户在通话期间的任意时间发送DTMF控制;但该请求已被放弃。
正如您所知,使用ACTION_CALL或ACTION_DIAL并执行|,;|将在连接电话后直接发送DTMF音调,但用户对此问题的控制就止步于此。
任何其他控件,如发送其他音调或将音调响应静音到手柄,则由内部API处理,特别是com.android.internal.telephony。需要注意的是stopDtmf()方法,它可能会做你要找的事情,但它是内部的,并且可能没有一致的行为。

这里是该方法2.x源代码的样子。正如所述,不能保证其可行性,并且强烈不建议使用内部API。


例子?我还没有见过一个不需要 root 权限的。 - Mike P.
@PaulLammertsma 同意。请注意,我说的功能请求链接已经有2年了,并不是说这个问题已经有2年了。正如你提到的那样,它只有不到5年的历史。 - Mike P.
在 Android 3.1 之前,可以使用反射访问 com.android.internal.telephony。在后续版本中,我相信 Google 已经阻止了对此类内容的访问;仅供制造商使用。 - Naeem A. Malik
这个应用程序可以隐藏DTMF音调..怎么可能? - Deepak
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接