Telephony架构简述

   根据自己的一些理解有绘制如下Telephony架构图,其中有些遗漏并且也没有将一些功能汇入比如CallTracker,DataConnectionTracker等,这些也是其中比较关键的因素

以后有机会会陆续加入,可伴随着图后注解一起阅读。


1.Phone App通过Phone服务向外部提供如dial,showCallScreen,endCall等接口给外部程序,如Contacts.PhoneInterfaceManager是实现ITelephony并提供了Phone服务。Frameworks/base/telephony/java/com/android/internal/telephony/Itelephony.aidl


2.Phone程序在PhoneApp启动后调用PhoneFactory去创建PhoneBase,实例化CallManager并调用其registerPhone向Phonebase中注册消息监听。这些回调都是与Call相关的比如NewRingingConnection,CallWaiting等等。


3.TelephonyManager是Android提供给外部程序注册消息监听的接口。其主要通过TelephonyRegistry提供的registry服务去注册SIGNAL_STRENGTH,CALL_STATE等事件。并通过之前Phone App提供的Phone(Itelephony)服务去向外部应用程序提供取得Phonebase各种状态的接口。


4.TelephonyRegistry是在SystemServer启动后被注册的服务,此服务用于向外部程序提供registry服务,但一般应用程序多用TelephonyManager所封装的接口去监听事件改变。


5.PhoneNotifier是被每个phonebase保有的一个向外通知的接口。当phonebase接收到从ServiceStateTracker,CallTracker等传入的状态改变后便通过PhoneNotifier通知外部的TelephonyRegistry服务。其实有很多RIL消息并非都由PhoneBase去做处理,而是交由各事件单位去做单独处理,比如Call状态的改变会先由CallTracker去处理,比如其构造时会先调用ril的registerForCallStateChanged去注册RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED事件,当事件发生后会交由CallTracker处理,CallTracker将轮询每个call的状态,并把结果通知PhoneBase,PhoneBase将会调用PhoneNotifier去通知TelephonyRegistry服务。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值