Android Sip使用及坑

本文介绍了Android Sip的使用步骤,包括权限配置、广播接收器、SipManager和SipProfile的创建。同时,列举了几个常见的坑,如类名限制、STUN设置问题以及注册失败的解决办法。提供了官方SipDemo的链接和相关API参考,以及代码实践中的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://github.com/android/platform_development/tree/master/samples/SipDemo
上面是Android自带的SipDemo,下
https://developer.android.com/reference/android/net/sip/package-summary.html
Android 官网对sip的相关使用的介绍。

使用

1、注册广播

 private void registerInComingCallReceiver() {
        IntentFilter filter = new IntentFilter();
        filter.addAction("android.SipDemo.INCOMING_CALL");
        callReceiver = new IncomingCallReceiver();
        this.registerReceiver(callReceiver, filter);
    }

2、实例SipManager

 if (manager == null) {
            manager = SipManager.newInstance(this);
        }

3、SipProfile

   SipProfile.Builder builder = new SipProfile.Builder("Android004", "115.236.167.22");
            builder.setPassword("78cdb4164g");
//            builder.setOutboundProxy("45.56.91.117");
            me = builder.build();

4、设置接听电话广播,如果不需要接电话可以直接manager.open(me);就可以了

  Intent i = new Intent();
            i.setAction("android.SipDemo.INCOMING_CALL");
            PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);

            manager.open(me, pi, null);

5、设置是否登录成功的监听,必须在上面的open方法之后调用

manager.setRegistrationListener(me.getUriString(), new SipRegistrationListener() {
                public void onRegistering(String localProfileUri) {
                //修改textview显示的文字
                    updateStatus("Registering with SIP Server...");
                }

                public void onRegistrationDone(String localProfileUri, long expiryTime) {
                    updateStatus("Ready");

                }

                public void onRegistrationFailed(String localProfileUri, int errorCode,
                                                 String errorMessage) {
                    updateStatus("Registration failed.  Please check settings.");
                }
            });

6、初始化电话

//sipaddress电话号码
  updateStatus(sipAddress);
  SipAudioCall.Listener listener = new SipAudioCall.Listener() {
                // Much of the client's interaction with the SIP Stack will
                // happen via listeners.  Even making an outgoing call, don't
                // forget to set up a listener to set things up once the call is established.
                @Override
                public void onCallEstablished(SipAudioCall call) {
           
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值