Android 中的SIP协议

本文详细介绍了在Android平台上使用SIP协议开发VoIP应用的步骤,包括设置Manifest权限,创建SipManager,注册SIP服务器,启动和接收音频呼叫。SIP API允许开发者在APP中轻松实现呼入和呼出功能,而无需处理底层通信细节。开发者需要注意设备必须运行Android2.3及以上版本,并且需要SIP和互联网权限。
摘要由CSDN通过智能技术生成

概述:

Android提供了支持SIP(SessionInitiation Protocol)协议的API. 这让我们可以向APP中添加基于SIP的网络电话功能. Android包括了完整的SIP协议栈并集成了呼叫管理服务, 它可以让APP经过简单的设置就可以支持呼入和呼出, 而不用必须管理会话, 传输级别, 通信或者音频记录或者直接播放. 这里有两种APP可能使用到的SIP API: Video conferencing和Instant messaging.

要求和限制:

这是开发SIP APP的要求:

1.      必须有个移动设备并且配备Android2.3及更高版本.

2.      SIP通过一个无线数据连接来运行,所以设备必须有一个数据连接(通过移动数据服务或者WiFi). 这意味着我们不能用AVD来测试--只能在物理设备上测试.

3.      每个APP连接会话的参与者必须拥有一个SIP账号. 有很多不同的SIP提供者提供SIP账号.

SIPAPI类和接口:

下面是Android SIP API中类和接口的概述:

类/接口

描述

SipAudioCall

通过SIP处理一个网络音频呼叫.

SipAudioCall.Listener

SIP呼叫相关的事件监听器, 比如什么时候收到呼叫(on ringing)或者发出呼叫(on calling).

SipErrorCode

定义SIP操作期间返回的错误码.

SipManager

提供SIP任务的API, 比如启动SIP连接, 提供相关SIP服务的访问.

SipProfile

定义一个SIP配置文件, 包括SIP账户, 域和服务器信息.

SipProfile.Builder

创建SIP配置文件的帮助类.

SipSession

代表一个SIP会话. 该会话与一个SIP dialog相关联或者不与dialog关联的独立的事务.

SipSession.Listener

SIP会话相关的监听器, 比如当一个会话将要注册的时候(on registering)或者将要呼出的时候(on calling).

SipSession.State

定义SIP会话状态, 比如”注册”, “呼叫”, “呼入”.

SipRegistrationListener

一个接口, 是SIP注册事件的监听器.

创建Manifest:

如果我们要开发一个使用SIP API的APP, 需要记得该功能只有在Android2.3及以上版本才能支持. 同样, 在运行Android2.3及以上版本的设备中, 并非所有设备都提供对SIP的支持. 想要使用SIP, 要增加下列的权限到APP的manifest中:

l  android.permission.USE_SIP

l  android.permission.INTERNET

要确保APP可以只被安装在支持SIP的设备上, 需要增加如下权限:

l  <uses-sdk android:minSdkVersion=”9” />. 这表示我们的APP需要Android2.3及更高的版本.

要控制APP如何过滤不支持SIP的设备(比如在Google Play上), 增加下列权限到manifest中:

l  <uses-feature android:name=”android.hardware.sip.voip” />. 这声明了APP使用SIP API. 声明应该包含一个android:required属性, 表示我们是否希望APP被从不支持SIP的设备中过滤.

如果APP被设计来接收呼叫, 我们必须在manifest中定义一个接收器(BroadcastReceiver的子类):

l  <receiver android:name=".IncomingCallReceiver"android:label="Call Receiver"/>

这里是SipDemo中摘录的片段:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.android.sip">
  ...
     <receiver android:name=".IncomingCallReceiver" android:label="Call Receiver"/>
  ...
  <uses-sdk android:minSdkVersion="9" />
  <uses-permission android:name="android.permission.USE_SIP" />
  <uses-permission android:name="android.permission.INTERNET" />
  ...
  <uses-feature android:name="android.hardware.sip.voip" android:required="true" />
  <uses-feature and

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值