下载此文档

Android通话过程分析.docx


文档分类:IT计算机 | 页数:约70页 举报非法文档有奖
1/70
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/70 下载此文档
文档列表 文档介绍
Android通话过程分析本文档主要对android平台下的call的实现做详细分析。Call处理的五大核心分别是:Call,Phone,CallTracker,DriverCall,ConnectionCallCall是Call应用中的最基本的单位,其主要是用来管理Connection的。Call中非常重要的是其状态,Call中共有九种状态:IDLE,ACTIVE,HOLDING,DIALING,ALERTING,ING,WAITING,DISCONNECTED,DISCONNECTING;对call的处理实际上是对状态转换上的处理。对这九中状态所对应的含义和call此时的现状要很熟。Call的继承关系图:Call是一个抽象类,从图中可知,实际操作是在其子类GsmCall和CdmaCall。在GsmCall中,有个成员变量:connections,这个变量是用来管理Call中的connection的,一个Call最大允许有5个connections:staticfinalintMAX_CONNECTIONS_PER_CALL=5;//only5connectionsallowedpercallPhonePhone不仅是call的处理核心,而且是整个Telephony处理的核心。Phone是一个最基本的概念,用来控制Phone系统相关(即无线相关的)模块的处理:simcard,call,message,datacall等。Phone的继承关系如下:在Phone的继承关系中可知,Phone只是一个接口,它被PhoneBase和PhoneProxy实现,而PhoneBase是抽象类,它被GsmPhone和CdmaPhone继承。所以有此可知Phone分为两类:GsmPhone和CdmaPhone。PhoneBase还有另外一个继承关系:继承自Handler。这就说明GsmPhone和CdmaPhone其实都是一个Handler。所以PhoneBase的子类是可以进行事件处理的。ConnectionConnection用来处理一个真正的通话通路,包含通话过程中call的数据,包括号码、通话时间、MT还是MO、是第几路通话、挂断原因等信息。Connection类关系图:GsmConnection中有个成员变量:GsmCallparent,这个成员变量是用来表示该connection是属于哪个Call的。由变量名(parent)可以看出Call与Connection的关系:父与子的关系,一个Call可以有多个Connection(3gpp中规定最多5个),但一个Connection只能属于一个Call。所以一个Connection必定要依附于一个Call。Connection是怎样依附于一个Call的呢?从Connection的构造方法中就可以知道:GsmConnection(Contextcontext,DriverCalldc,GsmCallTrackerct,intindex)这个构造方法是在MT的时候使用的,因为它有一个DriverCall的参数。它通过parentFromDCState方法来获得对应的parent(Call)(this,dc);把connection加入到Call的Connections变量进行管理。GsmConnection(Contextcontext,StringdialString,GsmCallTrackerct,GsmCallparent)这个构造方法是在MO的时候使用的,它会传入一个指定的parent(Call)(this,);调用把Connection加入到Call的Connections变量进行管理。 从上面知道Connection调用了Call的2个重要的方法:Attach和attachFake。这两个方法都是把一个connection加入到Call

Android通话过程分析 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数70
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198613
  • 文件大小306 KB
  • 时间2019-06-06
最近更新