android4.0通话管理核心类(RIL Framework Java 部分)

   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来进行数据交互。

  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值