android4.0通话管理核心类(RIL Framework Java 部分)
来源:互联网 发布:淘宝解封lol账号 编辑:程序博客网 时间:2024/06/16 09:21
GsmCall,通话,是指通信双方(自己和别人)的通信的过程,一个通话可以有多个通话连接,一个通话连接只能属于一个通话,比如正在等待的通话,正在接通的通话,正在转接的通话等,每一个通话都有自己的状态。
DriverCall ,描述来电信息,如号码,状态等信息,就是AT+CLCC
GsmConnection 就是一路通话连接,有两种类型
<1>接收型。接的电话,MT call,需要DriverCall 作为参数
<2>发出型。播出的电话,MO call,需要拨出的号码作为参数
<3>GsmConnection 从属于一个GSMCall,持有一个 GsmCall 对象。
GsmCallTracker
<1>GsmCallTracker 本质上是一个 Handler,持有一个Phone对象,在GsmPhone 的构造函数中初始化,管理Phone对象的通话过程,是通话管理的核心类,将rild有关通话的信息传递给CallManager,同时从CallManager 中获取信息传递给rild.
<2>GsmCallTracker 管理着多个GsmCall,ringingCall,foregroundCall backgroundCall.在GsmCallTracker 最多维护7条GsmConnection.每一个GsmCall最多维持5条GsmConnection.
<3>GsmCallTracker 持有很多register对象,用于回调RIL.java 中的notify 事件,事实上在GsmPhone,CallManager,CallNotifier 都持有register对象,目的就是为了响应其他对象的notify 事件,这种模式用于逐步将事件由底层传递到上层。
<4>GsmCallTracker 定义了拨号方法(dial),创建pendingMO对象(去电对象),调用RIL.java 的拨号方法,将拨号请求发送到rild.返回 pendingMO 对象。
<5>GsmCallTracker 定义了handlePollCalls 方法,来管理多个来电连接(GSMConnection).
Phone.state 和 Call.state
<1>Phone.state 是指从用户的角度来讲,电话的状态,只有三种, IDLE, RINGING, OFFHOOK。IDLE,是指没有通话活动,RINGING,是指只一个电话正在响铃或者呼叫等待。OFFHOOk,是指至少有一个通话处于接通状态或者等待状态或者拨出状态。
<2>Call.state,是指通话的状态
static State
stateFromDCState (DriverCall.State dcState) {
switch (dcState) {
case ACTIVE: return State.ACTIVE;
case HOLDING: return State.HOLDING;
case DIALING: return State.DIALING;// only MO
case ALERTING: return State.ALERTING;// only MO
case INCOMING: return State.INCOMING; //only MT
case WAITING: return State.WAITING; //only MT
default: throw new RuntimeException ("illegal call state:" + dcState);
}
}
<3>GsmConnection 的状态都会回调到parent的状态,即GsmCall 的状态。
<4>也就是说Phone.state 是Call.state 的组合形式。
CallManager
<1>PhoneApp 通过CallManager 来发送和接收有关通话的信息,也就是说 PhoneApp 通过CallManager 来和GsmCallTracker来进行数据交互。
DriverCall ,描述来电信息,如号码,状态等信息,就是AT+CLCC
GsmConnection 就是一路通话连接,有两种类型
<1>接收型。接的电话,MT call,需要DriverCall 作为参数
<2>发出型。播出的电话,MO call,需要拨出的号码作为参数
<3>GsmConnection 从属于一个GSMCall,持有一个 GsmCall 对象。
GsmCallTracker
<1>GsmCallTracker 本质上是一个 Handler,持有一个Phone对象,在GsmPhone 的构造函数中初始化,管理Phone对象的通话过程,是通话管理的核心类,将rild有关通话的信息传递给CallManager,同时从CallManager 中获取信息传递给rild.
<2>GsmCallTracker 管理着多个GsmCall,ringingCall,foregroundCall backgroundCall.在GsmCallTracker 最多维护7条GsmConnection.每一个GsmCall最多维持5条GsmConnection.
<3>GsmCallTracker 持有很多register对象,用于回调RIL.java 中的notify 事件,事实上在GsmPhone,CallManager,CallNotifier 都持有register对象,目的就是为了响应其他对象的notify 事件,这种模式用于逐步将事件由底层传递到上层。
<4>GsmCallTracker 定义了拨号方法(dial),创建pendingMO对象(去电对象),调用RIL.java 的拨号方法,将拨号请求发送到rild.返回 pendingMO 对象。
<5>GsmCallTracker 定义了handlePollCalls 方法,来管理多个来电连接(GSMConnection).
Phone.state 和 Call.state
<1>Phone.state 是指从用户的角度来讲,电话的状态,只有三种, IDLE, RINGING, OFFHOOK。IDLE,是指没有通话活动,RINGING,是指只一个电话正在响铃或者呼叫等待。OFFHOOk,是指至少有一个通话处于接通状态或者等待状态或者拨出状态。
<2>Call.state,是指通话的状态
static State
stateFromDCState (DriverCall.State dcState) {
switch (dcState) {
case ACTIVE: return State.ACTIVE;
case HOLDING: return State.HOLDING;
case DIALING: return State.DIALING;// only MO
case ALERTING: return State.ALERTING;// only MO
case INCOMING: return State.INCOMING; //only MT
case WAITING: return State.WAITING; //only MT
default: throw new RuntimeException ("illegal call state:" + dcState);
}
}
<3>GsmConnection 的状态都会回调到parent的状态,即GsmCall 的状态。
<4>也就是说Phone.state 是Call.state 的组合形式。
CallManager
<1>PhoneApp 通过CallManager 来发送和接收有关通话的信息,也就是说 PhoneApp 通过CallManager 来和GsmCallTracker来进行数据交互。
- android4.0通话管理核心类(RIL Framework Java 部分)
- Stk简介和核心类(android4.0 RIL Framework Java 部分)
- android4.0来电过程(RIL Framework Java部分)
- android4.0去电过程(RIL Framework Java 部分)
- android4.0来电过程(RIL Framework Java部分)
- android4.0网络服务状态或者信号量强度上报过程(RIL Framework Java 部分)
- Android4.0通话过程
- android froyo framework内RIL.java类分析
- android froyo framework内RIL.java类分析
- Android4.4 framework网络管理
- Framework中的Ril源码分析(原)
- Framework中的Ril源码分析(原)
- Android核心分析(18)-----Android电话系统之RIL-Java
- Android核心分析(18)-----Android电话系统之RIL-Java
- Android核心分析(18)-----Android电话系统之RIL-Java
- Android核心分析之(18)Android电话系统之RIL-Java
- Android核心分析(18)-----Android电话系统之RIL-Java
- Android ril原生代码(C/C++)和java代码部分分析
- bio与块设备驱动
- Hadoop Metrics体系分析之一:认识Metrics
- iphone ios 屏幕,statusbar,状态栏,标签栏尺寸,高度
- FF 参考
- mysql 多表 update sql语句总结
- android4.0通话管理核心类(RIL Framework Java 部分)
- perl date 的学习
- 左式堆 斜堆
- free命令详解
- Hadoop Metrics体系分析之二:Hadoop Metrics实现
- Hadoop Metrics体系分析之三:构建自己的Metrics
- RTSP基本概念
- git config 配置
- mysql-cluster 中的 sql node(主) 与 单独的 mysql server(从) 做主从复制(已解决)