• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 手把手教你Android来去电通话自动录音的方法,android来去

手把手教你Android来去电通话自动录音的方法,android来去

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了手把手教你学android,手把手教造枪方法图解,手把手教方法,手把手教你健身方法,手把手汽车陪练等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

手把手教你Android来去电通话自动录音的方法,android来去


我们在使用Android手机打电话时,有时可能会需要对来去电通话自动录音,本文就详细讲解实现Android来去电通话自动录音的方法,大家按照文中的方法编写程序就可以完成此功能。

       来去电自动录音的关键在于如何监听手机电话状态的转变:

       1)来电的状态的转换如下(红色标记是我们要用到的状态)

       空闲(IDEL)——> 响铃(RINGING)——> 接听(ACTIVE)——> 挂断(经历DISCONNECTING——DISCONNECTED)——> 空闲(IDEL) 

       或者  空闲(IDEL)——> 响铃(RINGING)——> 拒接 ——> 空闲(IDEL)

       2)去电状态的转换如下

       空闲(IDEL)——> 拨号 (DIALING)——> (对方)响铃(ALERTING) ——> 建立连接(ACTIVE)—— 挂断(经历DISCONNECTING——DISCONNECTED)——> 空闲(IDEL) 

       或者 空闲(IDEL)——> 拨号 (DIALING)——> (对方)响铃(ALERTING)——> 挂断/对方拒接 ——> 空闲(IDEL)

       下面就分别就来电和去电这两种状态分析并实现。

       1、先进行来电的分析和实现。

       相对去电来说,来电状态的转换检测要简单些。android api 中的PhoneStateListener 类提供了相应的方法,但我们需要覆盖其中的 onCallStateChanged(int state, String incomingNumber) 方法即可实现来电状态的检测,并在此基础上添加录音功能即可。其中 state 参数就是各种电话状态,到时我们将它跟下面我们要用到的状态进行比较,若是电话处在我们想要的状态上,则进行一系列操作,否则就不管他。想要获取这些状态,还需要另一个电话相关类,那就是 TelephonyManager, 该类 提供了一些电话状态,其中我们要用到的是:TelephonyManager.CALL_STATE_IDLE(空闲)、TelephonyManager.CALL_STATE_OFFHOOK(摘机)和 TelephonyManager.CALL_STATE_RINGING(来电响铃)这三个状态。判别这三种状态,可以继承 android.telephony.PhoneStateListener 类,实现上面提到的 onCallStateChanged(int state, String incomingNumber) 方法,请看如下代码:

Java代码
  1. public class TelListener extends PhoneStateListener {     
  2.      
  3.     @Override     
  4.     public void onCallStateChanged(int state, String incomingNumber) {     
  5.         super.onCallStateChanged(state, incomingNumber);     
  6.      
  7.         switch (state) {     
  8.         case TelephonyManager.CALL_STATE_IDLE: // 空闲状态,即无来电也无去电     
  9.             Log.i("TelephoneState", "IDLE");     
  10.             //此处添加一系列功能代码    
  11.             break;     
  12.         case TelephonyManager.CALL_STATE_RINGING: // 来电响铃     
  13.             Log.i("TelephoneState", "RINGING");     
  14.             //此处添加一系列功能代码    
  15.             break;     
  16.         case TelephonyManager.CALL_STATE_OFFHOOK: // 摘机,即接通    
  17.             Log.i("TelephoneState", "OFFHOOK");     
  18.             //此处添加一系列功能代码    
  19.             break;     
  20.         }     
  21.      
  22.         Log.i("TelephoneState", String.valueOf(incomingNumber));     
  23.     }     
  24.      
  25. }  

       有了以上来电状态监听代码还不足以实现监听功能,还需要在我们的一个Activity或者Service中实现监听,方法很简单,代码如下:

Java代码
  1. /**   
  2. * 在activity 或者 service中加入如下代码,以实现来电状态监听   
  3. */    
  4. TelephonyManager telMgr = (TelephonyManager)context.getSystemService(    
  5.                 Context.TELEPHONY_SERVICE);    
  6.         telMgr.listen(new TelListener(), PhoneStateListener.LISTEN_CALL_STATE);   

       这样就实现了来电状态监听功能,但要能够在设备中跑起来,这还不够,它还需要两个获取手机电话状态的权限:

XML/HTML代码
  1. <uses-permission android:name="android.permission.READ_PHONE_STATE" />    
  2. <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />   

       这样的话就可以跑起来了。

       说到这,我想如果你可以实现录音功能的话,在此基础上实现来电自动录音就应该没什么问题了,不过请容我简单罗嗦几句。既然是来电,那么

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 手把手搭建自己的android环境,把手搭建android
  • Android 手把手带你玩转自定义相机
  • 手把手教你Android来去电通话自动录音的方法,android来去

相关文章

  • 2017-05-26我的第一节Android课,第一节Android课
  • 2017-05-26『BUG』Android Studio 64位 始终提示 JVM 启动不了,JDK配置失败,error code,androidjvm
  • 2017-05-26Android Studio安装配置、环境搭建详细步骤及基本使用,android安装配置
  • 2017-05-26我的android学习经历8,android学习经历8
  • 2017-05-26android入门,看这一本书就够了,android入门,
  • 2017-05-26Android进阶--Acticivity的启动模式,acticvity启动模式
  • 2017-05-26android 实现漫天飞舞雪花以及下雨天的效果
  • 2017-05-26Android HandlerThread 消息循环机制之源码解析
  • 2017-05-26菜单(Menu)的三中创建方式——Android开发之路2,menuandroid
  • 2017-05-26常用的adb命令,常用adb命令

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 为什么在python里推荐使用多进程而不是多线程?--转同事的一篇文章
    • Android,androidstudio
    • Android Studio上面使用Ndk JNI 开发工程
    • Android:支持多选的本地相册
    • android launchmode 使用场景
    • 8.1.3 Android中的13种Drawable小结 Part 3
    • Android View体系(二)实现View滑动的六种方法
    • 接入微信分享过程的喜和泪
    • 回顾自定义view三个构造函数,回顾view构造函数
    • android:ListView缓存机制及BaseAdapter的三重境界(逗比式,普通式,文艺式)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有