新增android.net.sip包,名为SipManager类,可以轻松开发基于Sip的Voip应用。同时使用时必须至少包含这两个权限 <uses-permission android:name="android.permission.INTERNET"> and <uses-permission android:name="android.permission.USE_SIP">,如果需要在Market上过滤仅显示支持VoIP API的机型,可以在发布时androidmanifest.xml中加入 <uses-feature android:name="android.software.sip" android:required="true"> 和 <uses-feature android:name="android.software.sip.voip"> 这两个标志。
实时IP呼叫和多媒体通信是下一代网络(NGN)业务提供的重要方面。H.323和SIP(session Initiation protoco1)都是实现VolP和多媒体应用的通信协议。基于纯IP的SIP协议是用于创建、修改、终止IP网上的多媒体会议或呼叫的应用层控制协 议,它借鉴了HTTP协议和SMTP协议,结构简单并具有可扩充性和可扩展性。SIP在全面满足(下一代网络)NGN特性要求的应用上具有独特的优势,将 成为下一代网络VolP的重要解决方案。
SIP如何实现VoIP:
SIP不是垂直型通信系统,不能独立提供业务,它必须与其它协议共同使用来构建一个完整的多媒体体系结构,所以在构建下一代网络的多媒体体系时,采用以下 的协议组合提供多媒体业务。① 网络层:使用IPv4或IPv6(建议IPv6);② 传输层:使用TCP或UDP(建议UDP);③ 应用层:包括以SIP为核心的多个协议。
SIP协议用于传送呼叫控制命令。在定义消息时只定义了消息的头部,在消息体中采用了文本格式的会话描述协议SDP,用于在消息中传送呼叫的媒体类型和格式等信息,加快了呼叫建立的速度。
RTSP(real time streaming protoco1)控制发送“一点到多点”文本格式的多媒体数据流。
RSVP(reservation protocal,资源预留协议)用于主机为特定应用数据流请求特定的QoS以及端点应用程序发送QoS请求为数据传送的各个节点保留网络资源(如带宽,缓冲区大小等),大大增强了现有Internet网络的QoS控制。
RTP(real-time transport protocol,实时传送协议)用于AMR(adaptive multi?rate)和AMR?WB(adaptive multi?rate wideband)编码的语音信号的实时传送,并提供QoS反馈。
RTCP(real-time transport control protocol,实时控制协议)用于传递实时信号的质量参数,提供Q0S监视机制,同时还可用于传送用户的信息,建立呼叫控制机制。媒体封装主要采用 ITU?T的G系列和H系列建议,G系列用于语音压缩,H系列用于视频压缩,提供视频电话。SIP在协议栈中完成的功能是建立和终止多媒体通信:① 用户定位(user location):确定通信使用的终端系统位置;② 用户可用性判定(user availablity):确定被叫方是否愿意加人通信;③ 用户能力判断(user capability):确定通信使用的媒体类型及参数;④ 会议建立(session setup):在主、被叫之间建立约定的支持特定媒体流传输的连接;⑤ 会议管理(session management):包括传输、终止会议,修改会议参数,调用业务。
从SIP电话协议结构可以看出,SIP基本的呼叫信令,用户的定位注 册与整个IP电话系统的服务质量,业务派生,任务内容描述和会议控制都是相互独立的。从这种模块化的协议结构来看,基于SIP的VolP得到了端到端的 QoS支持,使用UDP无连接协议,在网络负荷较重时又避免了在超时证实中导致的呼叫建立时延的增加。同时,SIP这种分布式的控制方式和TCP或UDP 支持本地多播信令,对于扩展多媒体会议规模非常有益。在NGN中,采用SIP把呼叫传输和呼叫控制分开,实现了媒体与业务的分离,媒体和控制的分离,这样 用户可以通过第三方控制机制定义新的业务而不必关心承载业务的网络形式和终端类型,使网络具备了可扩展性和快速部署新业务的能力,使网络运营者更有竞争 力。
SIP MESSAGE机制
在请求消息的起始行中,SIP定义了请求执行的操作。SIP提供了给用户扩充的功能集,到目前为止的版本共定义了:邀请(INVITE)、证实 (ACK)、选择(0PT10NS)、再见(BYE)、取消(CANCEL)、登记(REGISTER)、信息(1NFO)、分配(AIL0CATE)和 更新(UPDATE)。为了加强可扩充性,SIP采用了和HTTP一样的层次式的数字差错代码,在响应消息的状态行中共定义了6类响应来表示指示请求执行 的结果,每个响应代码均用3位数表示,第1位数字指示响应的类别,后2位数字表示具体的响应。
SIP的头部字段定义了:①From:指示请求 的发端;②T0:指示请求的收端;@Call?ID:用于唯一标识一个特定的邀请或标识某一客户的所有登记;@Cseq:表示命令序列号;⑤Via:指示 请求经历的路径;⑦Expires:给出消息内容超期的时间;⑧Contact:给出直接通信的地址。
SIP消息体采用SDP定义,而SDP的传送和媒体的协商则由RTSP,HTTP等来完成。
SDP会话描述由文本行组成,每个文本行的格式均为<类型>一<值>,包含了参与现存会话相关的必要信息。① 会话信息:会话名和目的;会话激活的时间区段;构成会话的媒体;接收媒体所需地址、端口、格式等;会话所用的带宽信息(任选);会话负责人的联系信息(任 选)。② 媒体信息:媒体类型(视频/音频等);传送协议(RTP/uDP/IP、H.323等);媒体格式(H.261视频/MPEG视频等);媒体地址和端口。 ③ 时间信息:会话的开始和结束时间。④ 加密信息:可选。
其中,用户号码用与E?mail地址类似的SIPURL来表示。
sip:用户名:口令@主机:端口;传输层协议参数;用户类型参数;方法参数;生存期参数;服务器地址参数?头部名一头部值&头部名一头部值
例如:sip:j.doe:secret@big.com;transport?tcp
从编码结构来看,SIP消息具有丰富的可扩充性。由于SIP基于文本,使得代码生成和语法解析都很简单,而且便于协议的扩展和调试,提高了其用户化程 度。SIP允许旧的头部字段和性能不用时将其去掉,从而保证了协议和编码的简洁清晰。SDP允许会话的开始结束时间可由多组时间段组成,而且可以包含重复 时间,对NGN用户来讲,这种业务设置的灵活性是倍受欢迎的。同时SDP分单点发送和多点发送操作,增强了SIP对呼叫的控制能力。SIPURI可以嵌入 到Web页或其它超文本链路中,使NGN能够实现click?to?call(用户点击鼠标来发出呼叫)的SIP扩充业务。
转载地址:http://www.cnblogs.com/hacxf/archive/2011/05/17/2048707.html