请先看Sipdroid会话邀请流程一:http://www.shouyanwang.org/thread-50-1-1.html这里咱们要弄明白的是,Sipdroid会话邀请的结果是在哪里进行监听的,以及这种效果是怎么实现的?发送消息统一是由Sipdroid的sendMessage来进行发送的,然后返回的数据咱们可以在Sipdroid的OnReceiveMessage中来进行获取。在Sipdroid注册结果的监听:http://www.shouyanwang.org/thread-44-1-1.html这篇文章中,咱们分析了下,首先会话的类型有很多种,注册会话,邀请会话,通话会话等等,因此在OnReceiveMessage中会对当前进行的会话进行判断,根据当前的会话ID,判断出当前具体的会话类型,然后具体的会话类型通过调用自己的成员函数(会话接口对象的接口方法)将数据会话接口对象.那么分析就简单了,倒推下:1.邀请会话类是谁?2.邀请会话类得会话接口是哪个,邀请会话类会在获取到返回的数据后将获得到得数据传递给会话接口的接口方法中3.分析会话接口中的方法是怎么处理邀请回话类返回的数据的?只要咱们这样分析,咱们就可以倒推出最终数据是怎么处理的,处理数据的核心其实还是更新UI界面和进行逻辑判断,所以最终的处理必须是距离UI界面近的类。会话邀请类是:
-
InviteTransactionClient invite_tc = new InviteTransactionClient(sip_provider, invite_req, this);
-
nvite_tc.request();
复制代码
在啰唆一下,SipPorvider在获取到数据后是怎么传给会话邀请类得?以前已经说过了,再啰唆一次,每个具体的会话类都会继承一个抽象的会话类,这个抽象的会话类继承了SipProviderListener,在SipProvider获得message后,在OnReceiverMessage中,会通过执行SipProviderListener的接口方法将数据传给是实现了此接口的类,在会话邀请类中也就会传递给具体的会话类InviteTransaction.每一个具体类在初始化的时候,是必须有SipProvider作为参数的,然后在通过SipProvider的addSipProviderListener(id,SipProvierListner)指定会话类型和会话接口,还有SipProvider是唯一和独立的,因此一个会话中,只可能存在一种会话类型.InviteTransactionClient在onReceiveMessage会将数据传递给transaction_listener,transaction_listener其实就是InviteDialog,InviteDialog实现了TransactionClientListener,并在InviteTransactionClinet的时候传递进去了,所以数据都是按照这样的逻辑往上传的,剩下的分析就非常简单了,大家自己分析吧。所以最终的数据还是会回到UserAgent里面CallListenerAdapter接口方法里面。这个方法还挺巧的,谁发送的请求最后就由谁最终来处理这个返回的结果,然后呢,SipdroidEngined就是这些核心类用来交互的一个地儿,然后咱们在启动的Actiivity里面就只管调用SipdroidEngine提供的方法来控制指令就成了,牛X的框架啊。RegisterAgent最先发送注册请求,最后的注册结果也得RegisterAgent来处理。UserAgent最先发出会话邀请请求,最后的邀请结果也得UserAget来处理.掌声.........
转自http://www.shouyanwang.org/thread-51-1-2.html
分享到:
相关推荐
sipdroid源码
Sipdroid is an open-source SIP client for Android See http://sipdroid.org for more info Copyright (C) 2009 The Sipdroid Open Source Project (http://sipdroid.org) Copyright (C) 2008 Hughes Systique ...
Sipdroid3.4 官方APK,测试Sipdroid的同学可以下载
sipdroid已编译源码 android2.2下编译。
已经编译过的sipdroid.大致在三步就可以自己动手编译,1.到其他的项目拷贝project.properties到sipdroid目录下,2.修改jni目录下的Application.mk文件中:APP_PROJECT_PATH := $(call my-dir)这一行,将其修改为:...
Sipdroid目前有24个包,140多个java文件.首先学习Sipdroid,至少得明白Sipdroid是怎么玩的,实现的主要功能是什么,具体的流程操作是怎么执行的。本文就是教你认识sipdroid架构
Sipdroid是开源的一款SIP协议网络电话。标准SIP的软件,可以随便更换网络电话服务商。里面包括Sipdroid的安装包及源码。
sipdroid 语音 视频通话
Android手机的VoIP客户端 Sipdroid.rar
最新的sipdroid源文件,做android多媒体开发很好的例子
SipDroid教程、Sipdroid介绍
android android android android 视频通话 sipdroid.4.4.apk
这是国外的一个开源的sip android前段测试app,sipdroid可以直接使用,也可以自己在对应的网站获取源码编译之后获取自己的apk使用。。当然欢迎下载。。thank's a lot
SIPdroid源代码
sipdroid 目前为止最新的 好多源码不好使 所以直接apk了
编译完的Sipdroid源码,可以直接运行
Sipdroid是一个运行于Android手机平台上的SIP/VoIP客户端。
sipdroid-master源码,是一个很不错的Android源码,有兴趣的伙伴们抽时间可以看一下把。
手把手教你看懂sipdroid源码,解析了sipdroid里面通信函数
本压缩包包含了SipDroid源代码的2009.11/2011.12/2013.10共三个版本。