文件: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相关推荐

  1. 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 二 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  2. 【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  3. 【Android 电量优化】JobScheduler 源码分析 ( JobServiceContext 源码分析 | 闭环操作总结 | 用户提交任务 | 广播接收者接受相关广播触发任务执行 )★

    文章目录 一.JobServiceContext 引入 二.JobServiceContext 源码分析 三.用户在应用层如何使用 JobScheduler 四.用户提交任务 五.广播接收者监听广播触 ...

  4. Android源码分析--MediaServer源码分析(二)

    在上一篇博客中Android源码分析–MediaServer源码分析(一),我们知道了ProcessState和defaultServiceManager,在分析源码的过程中,我们被Android的B ...

  5. Android shortcut的使用及源码分析

    Android shortcut的使用及源码分析 最近遇到了一个切换国家码后部分应用的shortcut未更新的问题,就学习了shortcut的相关知识,在这里分享一下我了解的知识,希望能对大家有帮助. ...

  6. Android Q 10.1 KeyMaster源码分析(二) - 各家方案的实现

    写在之前 这两篇文章是我2021年3月初看KeyMaster的笔记,本来打算等分析完KeyMaster和KeyStore以后再一起做成一系列贴出来,后来KeyStore的分析中断了,这一系列的文章就变 ...

  7. Linux内核 eBPF基础:kprobe原理源码分析:源码分析

    Linux内核 eBPF基础 kprobe原理源码分析:源码分析 荣涛 2021年5月11日 在 <Linux内核 eBPF基础:kprobe原理源码分析:基本介绍与使用>中已经介绍了kp ...

  8. k8s client-go源码分析 informer源码分析(3)-Reflector源码分析

    k8s client-go源码分析 informer源码分析(3)-Reflector源码分析 1.Reflector概述 Reflector从kube-apiserver中list&watc ...

  9. 【Android 插件化】VirtualApp 源码分析 ( 启动应用源码分析 | HomePresenterImpl 启动应用方法 | VirtualCore 启动插件应用最终方法 )

    文章目录 一.启动应用源码分析 1.HomeActivity 启动应用点击方法 2.HomePresenterImpl 启动应用方法 3.VirtualCore 启动插件应用最终方法 一.启动应用源码 ...

  10. 【Android 插件化】VirtualApp 源码分析 ( 添加应用源码分析 | LaunchpadAdapter 适配器 | 适配器添加元素 | PackageAppData 元素 )

    文章目录 一.添加应用源码分析 1.LaunchpadAdapter 适配器 2.适配器添加元素 3.PackageAppData 元素 一.添加应用源码分析 1.LaunchpadAdapter 适 ...

最新文章

  1. 京东程序员被同事吐槽:需求排期长拖黄业务,都研发的一些啥玩意
  2. sysenter Hook
  3. Codeblocks 安装
  4. Qt Creator文本
  5. 程序员基本功11树和二叉树
  6. 钮扣电池电压电量_纽扣厂
  7. 鲍勃·维德拉:一位硬件工程师的叛逆传奇 | 人物志
  8. php 126 发邮件,解析php中用PHPMailer来发送邮件的示例(126.com的例子)
  9. mysql加begin报错,MySQL存储过程例子,不能在if else里面用begin end否则会报错Error Code:1064解决...
  10. 云计算大败局:基因与宿命
  11. Android手机启动流程探究
  12. 红米2 miui android5.1,Redmi 2 MIUI7 Android 5.1闪回到Android 4.4和第三方Rec更新5
  13. 初学QTP系列视频教程
  14. 面向金融的R语言——Lecture9
  15. java真香表情包_真香表情包 - 真香微信表情包 - 真香QQ表情包 - 发表情 fabiaoqing.com...
  16. 时间 java 时间段_Java 如何判断当前时间是否在指定时间段内
  17. 要点初见:安装教程与二度拓展——基于SUMO的Flow Project(附代码链接)
  18. 不是所有数学命题都是可以被证明或证伪
  19. PaddleX---Mask RCNN实例分割
  20. U盘文件如何恢复?u盘还原,必学的4招(2023已更新)

热门文章

  1. 软件安全测试有哪些方法?
  2. UG后处理 三菱 法兰克三轴带刀库备刀通用后处理
  3. 用Multisim对LC正弦波振荡器进行仿真
  4. Ubuntu 怎么卸载自带的国际版 firefox,安装中国版的 firefox
  5. 视频编解码中的temporal id和layer id(x265,HM,VTM)
  6. C语言写的一个攻击软件,可以让玩游戏的室友网络延迟最少1秒
  7. DDR3读写实验坑——Tmac
  8. 优化Symbian模拟器(转)
  9. 脑机接口(一):背景知识
  10. ibm 服务器主板坏掉硬盘数据恢复,RAID损坏后 对数据的完整备份