文件:StkAppService.java

函数:onCreate()

STK的APP程序启动后执行的第一个函数,会调用方法:

com.android.internal.telephony.gsm.stk.StkService.getInstance();

来获取StkService实例,经过效验后启动线程。/**

* Used for instantiating/updating the Service from the GsmPhone constructor.

*

* @param ci CommandsInterface object

* @param sr SIMRecords object

* @param context phone app context

* @param fh SIM file handler

* @param sc GSM SIM card

* @return The only Service object in the system

*/

文件:StkService.java

函数:public static StkService getInstance(CommandsInterface ci, SIMRecords sr,

Context context, SIMFileHandler fh, SimCard sc)

新建一个StkService类,并调用它的构造函数。在构造函数中获取RilMessageDecoder来处理消息,同时注册对RIL事件的处理包括:

MSG_ID_SESSION_END,

MSG_ID_PROACTIVE_COMMAND,

MSG_ID_EVENT_NOTIFY,

MSG_ID_CALL_SETUP,

然后调用函数reportStkServiceIsRunning函数通知RIL层,StkService服务已经启动。这个通知会转换为一条REQUEST,RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING

注意:该函数应该是由Phone类的构造函数来调用。

文件:PhoneFactory.java

函数:public static void makeDefaultPhone(Context context)

在这个函数中会根据电话制式的类型调用GSM或者CDMA类的构造,网路类型取决于RILConstants. PREFERRED_NETWORK_MODE,它的值由下发给RIL的REQUEST:

RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE的上报决定。

在GSM的构造函数中会调用:

StkService.getInstance()

如果该实例没有被初始化,则初始化,否则直接返回。

文件:StkService.java

函数:handleMessage

收到RIL层的主动上报:UNSOL_STK_PROACTIVE_COMMAND后,调用函数;handleMessage->

sendStartDecodingMessageParams(),发送给函数

processMessage()->decodeMessageParams->

mCmdParamsFactory.make(BerTlv.decode(rawData))->

msg.sendToTarget();->handleMessage-> handleRilMsg->

handleProactiveCommand-> mContext.sendBroadcast(intent);

同时向板侧发送sendTerminalResponse

也就是在这个函数广播了解析结果,并向板侧发送了回应。

/packages/app/phone/src/com/android/phone

Setting.java OnCreate中根据不同制式,有不同的UI显示

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐