读书人

一个incoming call的流程 (回电话代码

发布时间: 2012-07-29 15:26:14 作者: rapoo

一个incoming call的流程 (来电话代码流程)

1. 创建GsmPhone时,mCT = new GsmCallTracker(this);2. 创建GsmCallTracker时:    cm.registerForCallStateChanged(this, EVENT_CALL_STATE_CHANGE, null); -->        mCallStateRegistrants.add(r); 3. RIL中的RILReceiver线程首先读取从rild中传来的数据:processResponse -> processUnsolicited4. 对应于incoming call,RIL收到RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED 消息,触发mCallStateRegistrants中的所有记录。5. GsmCallTracker处理EVENT_CALL_STATE_CHANGE,调用pollCallsWhenSafe6. 函数pllCallsWhenSafe 处理:     lastRelevantPoll = obtainMessage(EVENT_POLL_CALLS_RESULT);     cm.getCurrentCalls(lastRelevantPoll);7. RIL::getCurrentCalls    RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_CURRENT_CALLS, result);    ...    send(rr);8. 接着RIL调用processSolicited处理RIL_REQUEST_GET_CURRENT_CALLS的返回结果9. GsmCallTracker的handleMessage被触发,处理事件EVENT_POLL_CALLS_RESULT,调用函数      handlePollCalls10. handlPollCalls 调用    phone.notifyNewRingingConnection(newRinging);11. PhoneApp中创建CallNotifier12. CallNotifier注册:    registerForNewRingingConnection -> mNewRingingConnectionRegistrants.addUnique(h, what, obj);



读书人网 >移动开发

热点推荐