Android 开发 voip/sip 程序

       首先说明一下相关概念,voip 和Sip voip的意思是网络电话,会话发起协议(SIP)是建立VOIP连接的IETF标准。SIP是一种应用层协议,用于和一个或多个参与者创建、修改和终止会话。SIP的结构与HTTP(客户-服务器协议)相似。客户机发出请求,并发送给服务器,服务器处理这些请求后给客户机发送一个响应)。

简单点就是voip是网络电话,而sip则是网络电话使用的协议。别的信息就请各位读者自己百度了。至于Android voip程序也就是写一个程序用于实现网络电话功能。

注意:在本篇博客中voip sip是一致的,笔者是不分的(原因是在android 2.3以后提供的api中是用sip表示voip相关接口的)

其实关于这个程序还得说明这里的Android 的版本。因为Android版本不同,开发方式也可能不同。voip程序,如果是运行在Android 2.3 以上系统,使用的属于Android 基本变成(简单调用编程api就可以),但是如果用户群体还包括Android 2.3 以前的系统。那就得换方案了,原因如下,因为Android 系统是在2.3以后才支持sip网络电话的,2.3以前就意味着没有对应的编程接口。只能自己实现了。

既然要自己实现,就必须先知道要实现哪些东西(或者说2.3以后和2,3之前到底在sip方面究竟是增加了哪些东西),进过笔者分析2.3和2.2代码的知2.3主要做的是在框架层实现了sip协议还有与sip相关的呼叫管理服务,简单点就是说2.3以后的系统提供了一个支持会话发起协议(SIP)的API,通过它就可以让应用轻松无需管理会话和传输层的沟通就可设置传出和传入的语音通话,或直接音频记录或播放。如果自己实现相关借口还得实现音频编解码。

      现在总结一下,在android 2.3 以后的系统上开发voip程序要做的只是调用sip相关api就可以了。但是在Android 2.3 以前的系统上开发voip程序至少得完成如下几件事:

一.实现sip协议栈(在程序中把sip数据包封装好,发到网络上),或者实现别的完成同样功能的协议。

二.实现一个呼叫管理服务功能(例如 来电界面,拨号界面响铃界面等等,试具体功能需求而定)。

三.实现音频编解码(由于Android 的多媒体api中没有提供音频编解码的api,所以得自己实现,但是音频编解码是一个很庞大的事,并且现在有很多开源的音视频编解码库,常见的(笔者接触过的)有BroadVoice (音频编码的),ffmpeg(音视频编解码的),但是这些编解码库大多是以c语言写的。而Android 应用程序开发主要是java。所以在实现编解码音频时就得使用ndk开发(或者jni技术))。相信大家都知道了,开发voip程序在不同版本android上是不同的。而本篇博客主要是在2.3以后版本系统上开发voip 应用至于在2.3以前的开发的情况会在以后的博客中专门说明。

Android2.3 以后开发程序大致步骤如下

 

1.获取SipManager对象。

2.创建SipProfile对象(但是要先得到SipProfile.Builder 对象 ,并且在获取 Builder 对象时要传入sip账户信息),还得绑定监听器确定是否成功绑定;

3.有了前两个以后就可以拨号了(注意:另一个号也要是sip账号)。

4.使用广播接受器响应Sip呼叫广播(具体是响铃,唤醒屏幕)及设置过滤器。

 

 

 

       既然要开发2.3以后的voip程序那就必须知道android系统提供的api相关类有哪些。具体如下:

 

 

SipAudioCall

通过SIP处理网络音频电话

SipAudioCall.Listener

关于SIP电话的事件监听器,比如接受到一个电话(on ringing)或者呼出一个电话(on calling)的时候

SipErrorCode

定义在SIP活动中返回的错误代码

SipManager

SIP任务提供APIs,比如初始化一个SIP连接。提供相关SIP服务的访问。

SipProfile

定义了SIP的相关属性,包含SIP账户、域名和服务器信息

SipProfile.Builder

创建SipProfile的帮助类

SipSession

代表一个SIP会话,跟SIP对话框或者一个没有对话框的独立事务相关联

SipSession.Listener

关于SIP会话的事件监听器,比如注册一个会话(on registering)或者呼出一个电话(on calling)的时候

SipSession.State

定义SIP会话的声明,比如“注册”、“呼出电话”、“打入电话”

SipRegistrationListener

一个关于SIP注册事件监听器的接口

 

 

至于 更详细的api相关信息 可以打开这个网页(android sdk api 开发文档英文版) http://docs.huihoo

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值