我是靠谱客的博主 欢喜时光,最近开发中收集的这篇文章主要介绍android stk 源代码分析,Android源码分析--STK,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文件: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显示

最后

以上就是欢喜时光为你收集整理的android stk 源代码分析,Android源码分析--STK的全部内容,希望文章能够帮你解决android stk 源代码分析,Android源码分析--STK所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部