android sip协议通话代码实现

android里面的voip(voice over internet protocol)网络通话基于sip(session initiation protocol)协议,关于voip和sip协议的了解,请感兴趣的读者参考其它相关文档,本文不做解释.

基于sip的voip网络通话基本过程是:(1),建立sip服务器,关于如何搭建sip服务器,请参考我的博客点击打开链接 (2)需要参与通话的所有客户端注册用户到sip服务器(3)一个客户端发起sip通话到另一个客户端,这个消息首先发到sip服务器,sip服务器收到消息后转发到目的客户端(4)目的客户端接收电话.

android已经集成了sip协议栈,并提供了相应的api给应用开放使用,开发者不需要了解具体的协议内容.

关于sip网络通话的主要类和描述入下表所示.

类/接口
描述
 SipAudioCall  通过SIP处理网络音频电话
 SipAudioCall.Listener  关于SIP电话的事件监听器,比如收到一个电话(on ringing)或者呼出一个电话(on calling)
 SipErrorCode  定义在SIP活动中的错误代码
 SipManager  为SIP任务提供APIs,比如初始化一个SIP连接,提供相关SIP服务的访问。
 SipProfile  定义了SIP的相关属性,包含SIP账户、域名和服务器信息
 SipProfile.Builder  创建SipProfile的帮助类
 SipSession
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在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协议的设备上。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值