来新公司已经很长时间了,不过接触android还是不久以前的事情,由于项目的需要,我得了解下接电话的流程,网上查了很多的资料,发现很多都是打电话的流程比较详细,但接电话的流程,特别是RIL.java往上的部分都不是很详细,于是,我自己跟踪了下,就把过程贴了出来,可能有些地方不全,也可能i会有不对的地方,请各位指教
接电话的基本流程(java层):
首先,通过ddms拨打模拟器的电话,这样
在RIL.java的RILReceiver线程(run()函数中)当中接收到rild发来的incoming消息,接收线程将消息转给processResponse(p)进行处理,processResponse(p)又将消息转给processUnsolicited (p)处理,然后又转到
case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED:
if (RILJ_LOGD) unsljLog(response);
mCallStateRegistrants
.notifyRegistrants(new AsyncResult(null, null, null));
break;
进行处理。这样消息就转到了mCallStateRegistrants(RegistrantList.java类中)的notifyRegistrants()函数进行处理了,接着转到internalNotifyRegistrants(ar.result, ar.exception);
消息继续上传到
Registrant r = (Regi