1.Android 结构图

从图中可以得到,查看方向,由MODEM向JAVA查看,MODEM会使用两种方式给RIL.JAVA上报数据,分别是Unsolicitedand Terminal response Solicited(request/response) .在RIL.JAVA中常用的有

solicited response

1.RIL_REQUEST_STK_GET_PROFILE 用来GET PROFILE

2.RIL_REQUEST_STK_SET_PROFILE 设置PROFILE

3.RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND 用于发送SELECT ITEM 等

4.RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE 发送STKTERMINAL RESPONSE

5.RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM 能于从STK打CALL,通知JAVA界面,相关CALL的消息。

Unsolicited response

1.RIL_UNSOL_STK_SESSION_END 结束会话

2.RIL_UNSOL_STK_PROACTIVE_COMMAND SETUP MENU 显示STK的主菜单

3.RIL_UNSOL_STK_EVENT_NOTIFY 主要用于EVENT DOWNLOAD

4.RIL_UNSOL_STK_CALL_SETUP 打CALL后的相关通知消息。

上图中的Baseband 一般由平台厂商进行开发,根据ANDROID的开源默认的机制,可以使用AT COMMAND来操作MODEM,也有其它的厂商会进行自己的MODEM开发,来达到提高MODEM的速度和效率。但对于RIL.java这个抽象层来说,不管采用哪种类型的MODEM,上层都是一样的,这样便于更好的Porting.这大概也是ANDROID的魅力吧。

请求发到StkService.java,即telephonyservice,将二进制的流进行解析,得到对应的类的结构,并将请求发送给StkApplicationService.java.

最后,在上层应用界面对相关的消息进行响应,和用户进行交互。

通过上面的图可以知道,大部分STK的协议是在MODEM这边实现的,比如Termianl Profile,USSD,SS,而在ANDROID上层,只对部分的协议进行了支持,主要是和用户有交互的操作,比如DISPLAY TEXT。

在StkService.java主要进行了三项工作

1.Parsing binary stream from ril.java and packing the result tomessage, and then send the message toStkApplicationService.java.

2.Parsing the terminal response from UI(mainly means user side) tobinary stream and send the stream to modem via ril.java.

3.Providing the service for StkApplicationService.java andMaintaining the status of STK.

在StkService.java中还用到了状态机,这个可以下次一起讲述状态机是怎么来解析BINARY STREAM.

PS:以上图是基于ANDROID2.2,而ANDROID2.3在StkService.java这层变化较大,有兴趣的朋友可以自己去查看,StkService.java变成CatService.java.

STK protocol refer to 3GPP 11.14,11.11, 51.011,31.101.

OK,今天就到这里面,累了,图画了半天,休息去了。有问题可以M我,大家相互交流下。

android stk流程,Android STK 实现相关推荐

  1. 【字节码插桩】Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术

    文章目录 一.Android 中的 Java 源码打包流程 1.Java 源码打包流程 2.字符串常量池 二.Android 中的字节码操作方式 一.Android 中的 Java 源码打包流程 Ja ...

  2. android 绘图流程,Android View绘制流程

    前言 不知道大家有没有想过一个问题,当启动一个Activity的时候,相应的XML布局文件中的View是如何显示到屏幕上的?有些同学会说是通过onMeasure().onLayout().onDraw ...

  3. android 电话 流程,android电话系统和ril分析(1)————概述和电话系统流程

    前段时间接触GSM模块,基于android源码实现打电话.这里把我自己的从最初的无知整体读懂实现过程,mark下来,其中引用很多网上各位达人的帖子,中间会附上链接,非常感谢他们的share自己的开发经 ...

  4. android 解锁流程,Android Q 指纹解锁流程

    Android Q 指纹解锁流程 // Authentation Finger Schedule: (close Screen, Authentation with finger(Success)) ...

  5. android去电流程,android 去电流程

    开始看代码. TwelveKeyDialer.java,既然要打电话,总要先输入号码才拨出,这个类就是拨号盘的界面,只是这个phone用到的类却是放在com.android.contacts包下,应该 ...

  6. 灵魂画师,Android绘制流程——Android高级UI

    目录 一.前言 二.我们的目标是啥 三.绘制流程从何而起 四.Activity 的界面结构在哪里开始形成 五.绘制流程如何运转起来的 1.onMeasure MeasureSpec是什么 (1)测量模 ...

  7. android 中断处理流程,Android P的native crash处理流程

    一.概述 Android系统有监控程序异常退出的机制,这便是本文要讲述得debuggerd守护进程.当发生native crash或者主动调用debuggerd时,会输出进程相关的状态信息到文件或者控 ...

  8. android 打电话流程,Android 打电话 流程

    需求: 在App调用打电话的时候,先把App隐藏,然后再打电话 实现: 1.把App隐藏的 使用 moveTaskToBack(true); 2.但是需要掉完打电话,就先把App隐藏 Intent i ...

  9. android pppd流程,Android pppd_gprs脚本启动过程

    android的gprs的上网过程: 1.在ril层中打开模块对应的数据业务设备,比如/dev/ttyUSB3 2.往数据设备发送AT+CGDCONT命令指定对应apn,发送ATDT*98*1#等拨号 ...

最新文章

  1. 安装php出现php-cgi error 1
  2. 《Git in Practice》作者访谈:关于Git的八个问题
  3. linux C++ 多线程编程
  4. phpstorm如何进行文件或者文件夹重命名
  5. 【存储过程】MySQL存储过程/存储过程与自定义函数的区别
  6. spring 查找实现类_69道Spring面试题和答案
  7. 2dpsk调制解调实验matlab_ila抓取数据,matlab分析,调试AD9361信号通路
  8. 你所能用到的数据结构(六)
  9. 聊聊storm的CheckpointSpout
  10. 将某表某列数据复制到另一张表的某列
  11. 【GIS】GIS矢量空间分析(上)
  12. UI设计中标签栏图标设计规范
  13. http://msdn.itellyou.cn/
  14. 计算机知网期刊排名,中国知网网络首发期刊榜单发布,《重庆医学》进入高发文量TOP50(科技类)...
  15. ArcGisJS实现地图常用工具条、距离测量和面积测量(非官方实例)
  16. PX4:【sensor_combined】
  17. CAD图纸导入REVIT内并精准建模
  18. Bootstrap的aria-label和aria-labelledby
  19. Linux云计算之OpenStack(Keyston - 认证服务)
  20. 【web】【django】datatable的button扩展实现纯前端下载和copy指定列内容,以及django的HTTPResponse实现下载功能

热门文章

  1. 210. 课程表 II(拓扑排序,Kahn 算法)
  2. 08和8的区别,二进制、八进制、十进制、十六进制。
  3. hohohoho...^_^
  4. 什么是压缩文件/压缩包?
  5. c语言中计算机随机给出的数,用c语言产生随机数
  6. 国密sm2公钥加密 私钥解密java代码实现
  7. VScode输入vue -V提示vue : 无法加载文件
  8. 寻ta分析与网站内容
  9. Windows7 x64 了解堆
  10. luogu P2331 [SCOI2005]最大子矩阵