gpt4 book ai didi

android - 通过上行链路通话中发送 DTMF 音

转载 作者:IT老高 更新时间:2023-10-28 23:06:35 25 4
gpt4 key购买 nike

我正在开展一个项目,该项目要求我的应用能够在通话期间以语音的上行链路频率发送 DTMF 音。

我的两个条件是:

  • 我们不使用定制的 Android 平台
  • 我们不需要root手机

我花了几天时间做功课,并且知道当前的 SDK/标准 API 不支持通话中 DTMF 发送。但是,通过使用 com.android.internal.telephony 中的相关类,我希望模仿原生电话应用程序是如何做到这一点的。我关注了this site on how to use internal APIs for standard 3rd party apps .

我还为自己设置了 Android 操作系统开发环境,并且能够在模拟器上以 Debug模式运行 Phone 应用程序以了解其内部工作原理。

我在股票标准模拟器上尝试了各种方法,但我得到的错误是:

  1. 在尝试使用 android.uid.phone 的 sharedUserId 安装基于 Phone.apk 源的重命名应用后,我得到:

    Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    毫无疑问,因为我没有系统证书来签名。

  2. 在尝试根据 Phone.apk 源中的相关 DTMF 音发送代码编写自定义应用程序后,我在设置 PhoneFactory 时收到以下错误;

    java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.provider.Telephony.SPN_STRINGS_UPDATED.

    毫无疑问,因为我的应用程序没有正确的权限,尽管 AndroidManifest.xml 的设置与 Phone.apk 具有相同的权限。

我不知道还能尝试什么。有人有什么建议吗?

提前致谢,西蒙。

最佳答案

您采取了一种有趣的方法,我赞扬您的努力。不幸的是,有一些保留的内部权限(显然,例如 SPN_STRINGS_UPDATED)不允许您作为应用程序开发人员使用,这或多或少破坏了这种方法。您可以尝试删除导致此问题的代码区域,但我相当肯定您会遇到阻塞问题。

因此,恐怕目前这是不可能的。有an open feature request on Android用于通过现有电话发送 DTMF 音调,但它已经休眠了将近两年。

我知道这并不能解决您的问题,但请注意,您可以在调用号码后直接发送 DTMF 音:

Intent i = new Intent("android.intent.action.CALL",
Uri.parse("tel://" + number + "," + dtmfTones));

关于android - 通过上行链路通话中发送 DTMF 音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6342236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com