updatePhoneState

GsmCdmaCallTracker updatePhoneState

private void updatePhoneState() {
    PhoneConstants.State oldState = mState;
    /**
      mRingingCall,mForegroundCall,mBackgroundCall在GsmCdmaCallTracker 初始化进行的初始化
        public GsmCdmaCall mRingingCall = new GsmCdmaCall(this);
        // A call that is ringing or (call) waiting
        public GsmCdmaCall mForegroundCall = new GsmCdmaCall(this);
        public GsmCdmaCall mBackgroundCall = new GsmCdmaCall(this);
    */
    /**
      (GsmCdmaCall)mRingingCall.isRinging()-->Call.isRinging-->getState().isRinging()-->

      getState()-->mState-->State mState = State.IDLE-->(Call>public enum State(内部类)) 
      isRinging()-->return this == INCOMING || this == WAITING;
    */  
    if (mRingingCall.isRinging()) {//Call.getState,进行获取状态,默认State mState = State.IDLE; 
        mState = PhoneConstants.State.RINGING;
    } else if (mPendingMO != null ||
            !(mForegroundCall.isIdle() && mBackgroundCall.isIdle())) {//从log看进入,mState=OFFHOOK
        mState = PhoneConstants.State.OFFHOOK;//OFFHOOK接起电话,这么快吗?
    } else {
        Phone imsPhone = mPhone.getImsPhone();
        if ( mState == PhoneConstants.State.OFFHOOK && (imsPhone != null)){
            imsPhone.callEndCleanupHandOverCallIfAny();
        }
        mState = PhoneConstants.State.IDLE;
    }

    if (mState == PhoneConstants.State.IDLE && oldState != mState) {
        mVoiceCallEndedRegistrants.notifyRegistrants(//这个进行通知,暂未详细看
            new AsyncResult(null, null, null));
    } else if (oldState == PhoneConstants.State.IDLE && oldState != mState) {
        mVoiceCallStartedRegistrants.notifyRegistrants (
                new AsyncResult(null, null, null));
    }
    if (Phone.DEBUG_PHONE) {
        log("update phone state, old=" + oldState + " new="+ mState);//log中显示update phone state, old=IDLE new=OFFHOOK
    }
    if (mState != oldState) {
        mPhone.notifyPhoneStateChanged();//暂未
        TelephonyMetrics.getInstance().writePhoneState(mPhone.getPhoneId(), mState);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值