android自动发送dtmf,Android通话中发送DTMF信号
由于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信号相关推荐
- java 发送信号_java – 在Windows中发送任意信号?
如果你想要的是明确地/编程性地杀死任何类型的程序/进程,在SysInternals的pstools中有一个名为"pskill"的小工具,就像Unix"kill" ...
- android自动发送dtmf,Android发送dtmf键盘事件(模拟通话界面键盘事件)
1.第一步,在代码里加上以下方法 /** * 说明:发送dtmf事件 * Author: * @param keycode */ publicvoidsendDTMF(charkeycode) { t ...
- android dtmf发送命令,如何向通话中的另一方发送DTMF
解决方法: 通过执行FreeSWITC的API命令,可以获取另一条信道的信息,如下: show channels like 66903@ as xml 在该命令的返回值中抽取sent_callee_n ...
- android自动发送dtmf,如何在Android上使用pjsip发送dtmf?
我正在尝试在voip呼叫期间发送dtmf. 为了做到这一点我使用如何在Android上使用pjsip发送dtmf? mCall.dialDtmf(String.valueOf(dtmf)); MCAL ...
- Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)
Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: <span style="font-size:18px;"> Inte ...
- Android实现拨打电话和发送短信,Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)...
Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: Intent intent = new Intent(Intent.ACTION_DIAL, Uri. ...
- Android中发送和接收短信
在做Android开发中经常要用到短信的发送和短信的接收,调用Android提供的api实现起来很简单,今天要用到这个功能研究了一下顺便写下来加强一下记忆. 1.首先创建一个Android Proje ...
- Android IPC数据在内核空间中的发送过程分析
在上一篇文章Android请求注册服务过程源码分析中从Java层面和C++层面分析了服务请求注册的过程,无论Java还是C++最后都是将需要发送的数据写入的Parcel容器中,然后通过Binder线程 ...
- android 电话回音消除,android系统通话中回声消除的实现.pdf
android系统通话中回声消除的实现.pdf 2011年第11期,第44卷 通 信 技 术 Vol.44,No.11,2011 总第239期 Communications Technology No ...
最新文章
- python就业前景分析-Python就业前景如何?老男孩Python培训好吗?
- 【旧文章搬运】Windows中全局钩子DLL的加载过程
- oracle服务器不识别tc服务,记一次ORACLE无法启动登陆事故
- java扑克牌排序_扑克牌排列 运用List ArrayList Arrays
- MATLAB GUI程序设计中ListBox控件在运行期间消失的原因及解决方法
- 两个DIV高度自适应方法(左右两个DIV高度一样)
- HTML+CSS实现小米登录界面
- 项目之显示回答和显示评论(13)
- Win11 连接不上NAS
- 大数据案例--电信日志分析系统
- 使用OMF(Oracle Managed Files,Oracle管理的文件)的场景示例
- java数据仓库的生鲜配送系统
- Android通过WebSocket建立一个长连接(带心跳检测)从服务器端接收消息
- 4342. 就一勾子 HDU1698 , kuangbin专题
- 快速解决java端口占用
- 如何运营个人技术博客
- 微服务架构设计实践系列之五:架构准备阶段
- 【DevOps】Jenkins:配置jenkins 流水线/多分支流水线任务构建成功通知企业微信@相关人
- Vue+SpringBoot实现评论功能
- Java语言实现杨辉三角