由于android中sdk没有提供相关功能,所以在Android中如果要自定义拨号盘发送DTMF信号,需要通过反射调用相关方法,并且需要系统签名还有运行在phone进程中,同时需要phone进程的uid。

相关代码如下:

public static boolean sendDTMF(char keycode) {

boolean result = false;

try {

// 获取CallManager

cls_CallManager = Class.forName("com.android.internal.telephony.CallManager");

// 获取CallManager的getInstance方法

method_getInstance = cls_CallManager.getDeclaredMethod("getInstance", null);

method_getInstance.setAccessible(true);

// 调用getInstance获取CallManager实例

obj_cm = method_getInstance.invoke(null);

// 获取startDtmf方法

method_startDtmf = cls_CallManager.getDeclaredMethod("startDtmf", char.class);

// 获取stopDtmf方法

method_stopDtmf = cls_CallManager.getDeclaredMethod("stopDtmf", null);

result = (Boolean) method_startDtmf.invoke(obj_cm, keycode);

// 请注意,调用startDtmf方法后必须调用stopDtmf方法,否则dtmf信号不会被发送

method_stopDtmf.invoke(obj_cm, null);

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

原理是获取一个CallManager的实例,而CallManager中存放当前Call的实例。当调用CallManager中的startDtmf或者stopDtmf方法时,CallManager会判断当前是否有活跃的Call。如果存在活跃的Call对象则会像改Call对象发送dtmf信号。

android自动发送dtmf,Android通话中发送DTMF信号相关推荐

  1. java 发送信号_java – 在Windows中发送任意信号?

    如果你想要的是明确地/编程性地杀死任何类型的程序/进程,在SysInternals的pstools中有一个名为"pskill"的小工具,就像Unix"kill" ...

  2. android自动发送dtmf,Android发送dtmf键盘事件(模拟通话界面键盘事件)

    1.第一步,在代码里加上以下方法 /** * 说明:发送dtmf事件 * Author: * @param keycode */ publicvoidsendDTMF(charkeycode) { t ...

  3. android dtmf发送命令,如何向通话中的另一方发送DTMF

    解决方法: 通过执行FreeSWITC的API命令,可以获取另一条信道的信息,如下: show channels like 66903@ as xml 在该命令的返回值中抽取sent_callee_n ...

  4. android自动发送dtmf,如何在Android上使用pjsip发送dtmf?

    我正在尝试在voip呼叫期间发送dtmf. 为了做到这一点我使用如何在Android上使用pjsip发送dtmf? mCall.dialDtmf(String.valueOf(dtmf)); MCAL ...

  5. Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)

    Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: <span style="font-size:18px;"> Inte ...

  6. Android实现拨打电话和发送短信,Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)...

    Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: Intent intent = new Intent(Intent.ACTION_DIAL, Uri. ...

  7. Android中发送和接收短信

    在做Android开发中经常要用到短信的发送和短信的接收,调用Android提供的api实现起来很简单,今天要用到这个功能研究了一下顺便写下来加强一下记忆. 1.首先创建一个Android Proje ...

  8. Android IPC数据在内核空间中的发送过程分析

    在上一篇文章Android请求注册服务过程源码分析中从Java层面和C++层面分析了服务请求注册的过程,无论Java还是C++最后都是将需要发送的数据写入的Parcel容器中,然后通过Binder线程 ...

  9. android 电话回音消除,android系统通话中回声消除的实现.pdf

    android系统通话中回声消除的实现.pdf 2011年第11期,第44卷 通 信 技 术 Vol.44,No.11,2011 总第239期 Communications Technology No ...

最新文章

  1. python就业前景分析-Python就业前景如何?老男孩Python培训好吗?
  2. 【旧文章搬运】Windows中全局钩子DLL的加载过程
  3. oracle服务器不识别tc服务,记一次ORACLE无法启动登陆事故
  4. java扑克牌排序_扑克牌排列 运用List ArrayList Arrays
  5. MATLAB GUI程序设计中ListBox控件在运行期间消失的原因及解决方法
  6. 两个DIV高度自适应方法(左右两个DIV高度一样)
  7. HTML+CSS实现小米登录界面
  8. 项目之显示回答和显示评论(13)
  9. Win11 连接不上NAS
  10. 大数据案例--电信日志分析系统
  11. 使用OMF(Oracle Managed Files,Oracle管理的文件)的场景示例
  12. java数据仓库的生鲜配送系统
  13. Android通过WebSocket建立一个长连接(带心跳检测)从服务器端接收消息
  14. 4342. 就一勾子 HDU1698 , kuangbin专题
  15. 快速解决java端口占用
  16. 如何运营个人技术博客
  17. 微服务架构设计实践系列之五:架构准备阶段
  18. 【DevOps】Jenkins:配置jenkins 流水线/多分支流水线任务构建成功通知企业微信@相关人
  19. Vue+SpringBoot实现评论功能
  20. Java语言实现杨辉三角

热门文章

  1. 用函数实现比较两个数的大小
  2. 关于怎么将PDF文件转换成PPT格式的方法
  3. LuaStudio v9.9.1 官方版
  4. 高德坐标转GPS坐标 CV版
  5. Uboot sf 命令:erase write read 用法
  6. 黑马旅游网综合项目-----前后端交互
  7. 文储研习社第21期 | NFT+Finance项目介绍
  8. 码农飞升记-03-OpenJDK是什么?
  9. 字体图标的网站和使用
  10. 基于LinuxCNC下的estun从站控制