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

前段时间接触GSM模块,基于android源码实现打电话。这里把我自己的从最初的无知整体读懂实现过程,mark下来,其中引用很多网上各位达人的帖子,中间会附上链接,非常感谢他们的share自己的开发经验,让我这后来者得以少走很多弯路O(∩_∩)O~

首先,实现打电话,我得先熟悉其具体流程,不然无头苍蝇源码乱看一通,最后还是无厘头(我就是个典型例子╮(╯▽╰)╭)。下面贴上达人A的打电话流程,从android应用,到ril发送at指令:

1.这里我先简单描述下电话系统的模块:

拨号应用-->phone.apk服务-->ril-->GSM硬件集成

最后面的GSM模块咱就姑且不研究了,毕竟那已经是硬件厂商的事了。

这里值得注意的是:拨号应用和phone.apk的区分。

之前我一直以为android源码里把拨号、通话记录等应用全都实现在phone.apk里,后来我发现我错了,phone.apk只是个服务,并且是系统服务,得放在system/app里面。当一开机这个服务就一直存在着,你kill它,它又会重新启动。并且在phone.apk的AndroidManifest.xml文件里面,并没有相应的启动程序 main入口,即:拨号键盘等界面,所以拨号应用得自己实现或联系人里添加。

上面主要是java部分,接下来是C/C++部分。ril主要可分为:

(1). rild:rild等 (源码路径:android-2.3.1_r1\hardware\ril\rild)

职责:主要负责和ava层建立sokcet通道,接收和传递数据,管理event线程。后面会详细介绍

(2).libril:ril.cpp+ril_event.cpp+ril_commands.h等 (源码路径: android-2.3.1_r1\hardware\ril\libril )

职责:ril.cpp负责解析java传下来的序列化数据,ril_event.cpp主要创建线程,ril_commands.h和ril_unsol_commands.h是一个数组,定义相应的指令编号和相应的解析方法,相应的指令编号在ril/include/telephony/ril.h里被宏定义

(3).reference-ril:reference-ril.c+atChannel.c等 (源码路径: android-2.3.1_r1\hardware\ril\refernece-ril )

职责:reference-ril.c负责接收ril.cpp解析后的数据,发送相应的at指令,atChannel.c写at指令和读at指令从GSM模块中

2.电话系统详细调用流程

链接:http://blog.csdn.net/basonjiang_sz/article/details/6255881

上面这篇文章里很具体的跟踪了从应用按下拨号键到通话的具体调用流程,这里就不在累述了。

我大概知道流程了,接下来source Insight跟踪源码分析:

android电话系统和ril分析(2)----rild详细分析

转载于:https://my.oschina.net/blackylin/blog/82656

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值