Android2.3 Sip简单分析( 三 )


以上是针对目录下Sip的分析 。其它引用分析如下:
如下是实现相关类图 。

Android2.3 Sip简单分析

文章插图
对象虽然也派生自 , 但实现机制及实例化过程与其它Phone对象大大不同 。
对象的实例化通过的的接口调用的进行实例化 。
对象的实例化调用也不是在对象中进行,而是在默认电话应用的对象的回调函数或者对象的ed函数中被调用 , 另外不同的是对对象的创建个数也没有限制 。
虽然实例化过程和、对象不同 , 但实例化的对象和、对象一样也被添加到对象中进行统一管理 。
实现机制是通过IP通道实现电话功能 , 而不是通过无线通讯模块 , 因此没有采用RIL和RIL  , 因此框架实现层与、有很大不同 , 框架实现主要是通过系统服务及调用第三方协议栈来完成 。
系统服务通过JNI来调用本地nist SIP协议堆栈 。
对象属于服务的客户端对象,其通过对象的接口调用 。
每个对象都对应一个对象(包括SIP帐户,地址连接信息以及服务信息等信息)用来标识通话一方 。
对象在调用实例化对象前根据网络通话的构建 , 并作为的参数传给对象 。
每个对象和其它具体Phone对象相同也包括三个Call对象():、、 , 每个对象也包含一个类型的对象 , 用来维护每个CALL拥有的通话连接 。
不过和其它Phone对象不同对象对每个Call对象拥有的个数没有限制 , 拥有的对象对应具体的对象 。
【Android2.3 Sip简单分析】对象包括主动和被动两种类型 , 主动类型的对象在对象的dial函数调用时创建 , 被动类型的对象在对象接收到输入CALL时 , 其函数调用时创建 。
创建的对象添加到对象的类型的数组列表中进行管理 。
每个对象也包括一个对象和一个对象 。
被动类型的对象和对象从对方获得 。
被动类型的对象和函数传进来的对象相同 , 对象通过调用的函数获得发起通话的对方的 。
主动类型的对象在dial函数中调用.对象的build函数根据发起的通话URL构建 , 用来标识本地通话方 , 对象在调用dial函数时通过调用对象的函数创建 。
对象中包括一个客户端对象 , 管理客户端的每一个会话过程 , 对象中有一个接口成员 , 通过该接口调用服务端对应的会话对象对象(一个实现接口的会话桩对象) , 共同完成通话一方的会话过程 , 客户端通过接口向服务端的对象发起IPC调用 。
主动类型的对象对应的对象在函数中调用进行实例化 , 在函数调用新创建对象的函数时 , 对象作为函数的参数传给对象 。
主动类型的对象中的类型的接口成员在中通过调用的函数创建 , 返回服务端对象的远程调用对象接口 。
的函数创建一个Sip会话对象的整个过程:
1、首先调用函数实例化一个对象 , 对象派生自 , 而是一个实现接口的桩类;
2、对象实例化时又调用p函数实例化一个对象;
3、对象实例化时由工厂对象实例化底层协议栈类对象 , 并有对象创建一个对象和一个对象 , 对象本身登记为对象的监听对象;
4、然后调用对象的函数 , 内部实际调用对象的函数 , 实例化对象 , 并返回实例化后的对象引用 。
5、属于类的内部类 , 客户端发起的通话请求都通过服务端的对象封装成类型的命令发起异步处理请求(调用对象的函数 , 函数的参数是一个类型的对象) , 最终通过对象的对象调用SIP协议栈的接口与通话对方交互 。