【发布时间】:2011-09-14 14:16:51
【问题描述】:
我正在开展一个项目,该项目要求我的应用能够在通话期间在语音的上行链路频率上发送 DTMF 音。
我的两个条件是:
- 我们不使用定制的 Android 平台
- 我们不需要root手机
我花了几天时间做功课,并且知道当前的 SDK/标准 API 不支持通话中的 DTMF 发送。但是,通过使用com.android.internal.telephony 中的相关类,我希望模仿原生电话应用程序是如何做到这一点的。我关注了this site on how to use internal APIs for standard 3rd party apps。
我还为自己设置了 Android OS 开发环境,并且能够在模拟器上以调试模式运行 Phone 应用程序以了解其内部工作原理。
我在股票标准模拟器上尝试了各种方法,但我得到的错误是:
-
在尝试使用 android.uid.phone 的 sharedUserId 安装基于 Phone.apk 源的重命名应用后,我得到:
安装错误:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
毫无疑问,因为我没有系统证书来签署它。
-
在尝试根据 Phone.apk 源中的相关 DTMF 音发送代码编写自定义应用程序后,我在设置 PhoneFactory 时收到以下错误;
java.lang.SecurityException: Permission Denial: 不允许发送广播 android.provider.Telephony.SPN_STRINGS_UPDATED。
毫无疑问,因为我的应用程序没有正确的权限,尽管 AndroidManifest.xml 设置为具有与 Phone.apk 相同的权限。
我不知道还能尝试什么。有人有什么建议吗?
提前致谢, 西蒙。
【问题讨论】:
标签: android telephony internal dtmf in-call