Android 系统提供了支持 SIP(Session Initiation Protocol)的 API,允许开发者添加基于 SIP 的因特网电话特性到自己的应用程序中。
Android 包含一个完整的 SIP 协议栈,整合了允许轻松创建来电和去电的电话管理服务,而不必开发者直接参与管理会话、传输层通信、音频录制等工作。
目前 SIP 已经被成功应用于视频会议和即时消息中,其应用程序开发需要基于 Android 2.3(API Level 9)以上的系统。
SIP 运行于无线数据连接,通过 AVD 无法调试。在 SIP 应用程序通信会话中,每一个参与者都必须拥有一个 SIP 账号。
相关 API
Android SDK 中与 SIP 开发相关的类和接口被放置在 android.net.sip 包中,相关类和接口介绍如下。
类/接口
作用
SipAudioCall
用于处理基于 SIP 的因特网音频呼叫。
SipAudioCall.Listener
用于处理 SIP 呼叫事件,如接收到呼叫和对外呼叫事件。
SipErrorCode
定义了 SIP 行为的错误代码。
SipManager
提供了 SIP 任务的相关 API,例如初始化 SIP 连接,提供对相关 SIP 服务的访问等。
SipProfile
定义了一个 SIP 配置文件,包括 SIP 账户、域和服务器信息等。
SipProfile.Builder
创建 SIP 配置信息的帮助类。
SipSession
代表一个与 SIP 对话框相关联的 SIP 会话或者一个单独的无对话框的事务。
SipSession.Listener
针对 SIP 会话事件的监听器,例如会话被注册或者一个电话正在呼出事件。
SipSession.State
定义了 SIP 会话的状态信息,例如注册、呼出、呼入等。
SipRegistrationListener
一个用于监听 SIP 注册事件的接口。
Manifest 文件配置
要开发基于 SIP 的应用程序,必须使用 Android 2.3 以上版本的设备,但是并不是所有 Android 2.3 以上版本的设备都支持 SIP 应用程序。
为应用程序添加 SIP 支持需要在应用程序的配置文件 AndroidManifest.xml 中添加如下内容。
1)添加使用 SIP 和因特网的权限:
2)确保应用程序只可以被安装在支持 SIP 的设备上,在 Manifest 文件中添加以下代码:
3)如果应用程序被设计为接收呼叫,则必须定义一个 receiver:
应用程序的 Manifest 文件示例代码如下:
...
...
...
创建 SipManager 对象
要使用 SIP APIÿ