当前位置: 首页 > news >正文

pos机网站模板/太原做网络推广的公司

pos机网站模板,太原做网络推广的公司,佛山网站制作在线,智慧旅游网站开发与设计与实现最近做一个VOIP的项目,调研了CSipSimple。都说CSipSimple结构清晰,但是代码下下来看了一下,还是一头雾水,不知从何看起。于是想到从最简单的打电话开始,借助网上一篇博文"CSipSimple 拨通电话机制分析"&…

  最近做一个VOIP的项目,调研了CSipSimple。都说CSipSimple结构清晰,但是代码下下来看了一下,还是一头雾水,不知从何看起。于是想到从最简单的打电话开始,借助网上一篇博文"CSipSimple 拨通电话机制分析",看看整个流程是怎么走的。由于工程围绕sip协议这个核心,因此我们从底层往上层逐步分析。

流程梳理

   1. jni

  CSipSimple底层sip协议栈用的是pjsip,而pjsip是用c写的,这必然牵扯到jni的问题。jni的代码位于org.pjsip.pjsua包中。该包里面的文件非常多。目前我们先关心两个,一个是pjsuaJNI.java,另一个是pjsua.java,分别对应两个类。 ua是User Agent的简称,也就是客户端代理,用于处理打开会话,维护,收发等。pjsuaJNI里面的函数都有native关键字,这些函数是直接调用so库中用c写的函数的。从这里往上是java代码,是我们要关注的;往下是c代码,也就是pjsip的内容,暂时不管。pusua对pjsuaJNI作了一个轻度封装:基本上是直接调用。这样就对上层屏蔽了本地调用的代码。

     2. sip协议接口

 

  上面说到pjsua。该类可以理解为java层sip协议的接口。我们要用sip协议的哪个功能,最终都要调用该类的方法。与打电话相关的函数名为call_make_call,具体参数暂不作分析。另外还有call_setting_default函数等进行一些设置。

  3. sip服务

  sip协议接口中的函数都是基本函数,功能单一,不方便使用,因此作进一步分装。该封装位于包com.csipsimple.pjsip中。最主要的类为PjSipService。与打电话对应的函数是makeCall,它在打电话之前作了一些设置。PjSipService可以认为是高层次的API。目前来看,进行二次开发基本上调用这一层的代码就可以了。

  4. android框架

  以上其实都没有涉及到android的部分。为了维护一些状态等,也为了方便使用,CSipSimple把sip服务封装成了android中的标准service。所有的csipsimple的服务接口都定义在com.csipsimple.api中,与sip服务相关的定义是ISipService.aidl,其中关于打电话的函数是makeCallWithOptions。服务接口定义在aidl文件中,看来是为了方便进程间通信,不过这是后话,先不管。

  当然,eclipse会把aidl编译为java文件,在gen文件中,包名仍为com.csipsimple.api,文件名为ISipService.java。打开文件,毫无疑问会有一个makeCallWithOptions函数。

  接口的实现在com.csipsimple.service包中的SipService类。

  

// Implement public interface for the serviceprivate final ISipService.Stub binder = new ISipService.Stub() {/*** {@inheritDoc}*/@Overridepublic void sipStart() throws RemoteException {SipService.this.enforceCallingOrSelfPermission(SipManager.PERMISSION_USE_SIP, null);Log.d(THIS_FILE, "Start required from third party app/serv");getExecutor().execute(new StartRunnable());}... ...
}

  上述服务肯定是要在android的服务管理器中注册的。

  5. 使用服务

  既然是标准的android服务,那么使用起来也是很简单的。使用服务的基本方法可以参考com.csipsimple.ui.dialpad.DialerFragment.java。先调用ServiceConnection.onServiceConnected()获得IBinder对象,再用ISipService.Stub.asInterface((IBinder)service)转为ISipService对象,这样就可以调用它的函数了。

 

流程简图

  综合上述分析,可以得出如下简要流程图。  

  

  

 

  

转载于:https://www.cnblogs.com/zhizhizhiyuan/p/3816397.html

http://www.lbrq.cn/news/960355.html

相关文章:

  • 富士康/百度刷排名seo
  • 求国外做任务赚钱的网站/网络营销公司名字
  • 如何安装wordpress的插件安装/郑州谷歌优化外包
  • 有人在相亲网站骗人做传销/seo客服
  • 网页制作三剑客是指/seo网络排名优化哪家好
  • 特色个人网站/百度一下官方网址
  • 长沙移动网站建设哪家好/百度网络营销app
  • 网站建设主要用什么软件/如何注册百度账号
  • 怎样建设网站客服服务/上海网站关键词排名
  • 重庆奉节网站建设/网上推广用什么平台推广最好
  • 网站建设制作软件/网站推广的方法和途径
  • 做跨境电商被骗了三万/seo顾问是什么职业
  • 购物商城网站开发目的文档/市场营销策略
  • 洛阳做网站的公司/东莞做网站公司电话
  • 网站备案多久做一次/网络营销试卷
  • 黄石建委网工程建设城建网站/网站关键词怎么优化排名
  • 网址导航系统/网站seo优化公司
  • jquery 单击input输入框弹出选择框多用于人才类网站/今日头条指数查询
  • 宝安网站建设哪家便宜/seo优化是怎么优化的
  • 做网站怎么弄/网络营销的种类有哪些
  • 可做宣传的网站都有哪些/跨界营销案例
  • 南京做网站开发 待遇/邢台市seo服务
  • 小组网站建设方案书/自己如何制作网站
  • 景区网站建设材料/电脑系统优化工具
  • 做收费网站/太原推广团队
  • 做网站公司法人还要拍照吗/外包网站有哪些
  • wordpress博客 centtos/seo整站优化技术培训
  • 做外贸网站挣钱吗/企业网站建设的一般要素
  • 做网站推广维护需要学些什么/正规的培训学校
  • 介绍在家里做的点心的网站/信息流优化师面试常见问题
  • K8s与Helm实战:从入门到精通
  • 目标检测中的标签分配算法总结
  • 传统行业和AIGC的结合及应用
  • Node.js链接MySql
  • 搜索引擎优化全攻略:提升百度排名优化
  • 【网易云-body1】