Android 中的SIP协议

概述:

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android实现SIP协议客户端,可以使用Android提供的SIP API。以下是使用Android SIP API实现SIP协议客户端的基本步骤: 1. 添加SIP权限。在AndroidManifest.xml文件添加以下权限: ``` <uses-permission android:name="android.permission.USE_SIP" /> <uses-permission android:name="android.permission.INTERNET" /> ``` 2. 创建SipProfile对象。可以使用以下代码创建一个SipProfile对象: ``` String username = "alice"; String domain = "example.com"; String password = "password"; SipProfile.Builder builder = new SipProfile.Builder(username, domain); builder.setPassword(password); SipProfile sipProfile = builder.build(); ``` 3. 创建SipManager对象。可以使用以下代码创建一个SipManager对象: ``` SipManager sipManager = SipManager.newInstance(context); ``` 4. 注册SipProfile。可以使用以下代码注册SipProfile: ``` int port = 5060; SipRegistrationListener listener = new SipRegistrationListener() { @Override public void onRegistering(String localProfileUri) { // 正在注册 } @Override public void onRegistrationDone(String localProfileUri, long expiryTime) { // 注册成功 } @Override public void onRegistrationFailed(String localProfileUri, int errorCode, String errorMessage) { // 注册失败 } }; sipManager.open(sipProfile); sipManager.register(sipProfile, expiryTime, listener); ``` 5. 创建SipAudioCall对象。可以使用以下代码创建一个SipAudioCall对象: ``` SipAudioCall.Listener listener = new SipAudioCall.Listener() { @Override public void onCallEstablished(SipAudioCall call) { // 呼叫已建立 } @Override public void onCallEnded(SipAudioCall call) { // 呼叫已结束 } }; SipAudioCall call = sipManager.makeAudioCall(sipProfile.getUriString(), calleeUri, listener, timeout); ``` 6. 发送SIP消息。可以使用以下代码发送一个SIP消息: ``` String toUri = "sip:bob@example.com"; String message = "Hello, Bob!"; SipURI toSipUri = sipManager.createSipURI(null, toUri); SipMessage sipMessage = new SipMessage(toSipUri, message.getBytes()); sipManager.sendSipMessage(sipProfile.getUriString(), toUri, sipMessage); ``` 以上是基本的实现步骤,具体实现还需要根据需要添加其他的Header和Body等信息。需要注意的是,在使用Android SIP API时,必须先获得SIP权限,并且需要运行在支持SIP协议的设备上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值