Android-9种通话状态(精确)
Posted 1818logs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-9种通话状态(精确)相关的知识,希望对你有一定的参考价值。
一.介绍
在应用层监听通话状态只有三种,从TelephonyManager.java中注释可知这三种状态含义如下:
CALL_STATE_IDLE 空闲态(没有通话活动)[j8>11131901166E070F0D7E11131901166E070F0D]
CALL_STATE_RINGING 包括响铃、第三方来电等待
CALL_STATE_OFFHOOK 包括dialing拨号中、active接通、hold挂起等
由上可知,active接通状态没有单独给出,所以我们无法得知电话是否接通了,
因此需要其它手段来获取更多的精确通话状态,遍查网络资料,一般有两种方法!
二.监听9种通话状态
法一.使用系统api监听
条件:
1.需要权限android.permission.READ_PRECISE_PHONE_STATE、app打包时需要系统签名、安装在系统目录等
2.onPreciseCallStateChanged 精确通话回调api在android.jar中被hide了, 可以使用反射或没有被hide的android.jar解决
法二.读取Logcat通信日志
条件: 1.android 4.1以上需要root权限,android 4.1以下版本只需添加日志权限android.permission.READ_LOGS 2.读取通信状态:在root状态下执行命令 logcat -v time -b radio
logcat日志被划分为以下几个缓冲区 -b <system, radio, events, main> main — 主日志缓冲区(默认,普通app应用) radio — 无线/电话相关日志缓冲区 events — 事件相关日志缓冲区 system — 系统相关日志缓冲区
以上是关于Android-9种通话状态(精确)的主要内容,如果未能解决你的问题,请参考以下文章
Android技术分享| Android 自定义View多人视频通话控件
引入神经网络 API 1.1支持全面屏,Android 9.0 来了!
Android技术分享| Android 自定义View多人视频通话控件
Android 9.0系统源码_SystemUIPhoneWindowManager构建状态栏和导航栏视图窗口区域坐标的流程解析