Android VOIP SipException:无法创建 SipSession

2024-03-04

我正在尝试使用 Android 3.1 上内置的 SIP 运行 VOIP 呼叫。我有物理平板电脑设备(galaxy Tab 10.1)。

为了测试目的,我创建了一个项目SipDemo 示例 http://developer.android.com/resources/samples/SipDemo/index.html- 效果很好! (这意味着我的凭据正常工作并且我的设备/网络正常)。

我的清单.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="modera.com.doorcontroller" android:versionCode="1" android:versionName="1.0">

    <application android:icon="@drawable/logoeditedsmall" android:label="@string/app_name" android:debuggable="true">
      <activity android:name="MainActivity" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>

      <activity android:name="CallActivity"></activity>

</application>

<uses-sdk android:minSdkVersion="11" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-feature android:name="android.hardware.sip.voip" android:required="true" />
<uses-feature android:name="android.hardware.wifi" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />

</manifest>

我的后端代码:

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

    if (me != null) {
        closeLocalProfile();
    }

    try {
        SipProfile.Builder builder = new SipProfile.Builder(username,
                domain);
        builder.setPassword(password);
        builder.setOutboundProxy(proxy);
        me = builder.build();

        manager.open(me);

        manager.setRegistrationListener(me.getUriString(),
                new SipRegistrationListener() {

                    @Override
                    public void onRegistering(String localProfileUri) {
                        Log.i("MY", "onRegistering");

                    }

                    @Override
                    public void onRegistrationDone(String localProfileUri,
                            long expiryTime) {
                        Log.i("MY", "onRegistrationDone");

                    }

                    @Override
                    public void onRegistrationFailed(
                            String localProfileUri, int errorCode,
                            String errorMessage) {
                        Log.i("MY", "onRegistrationFailed");

                    }
                });

    } catch (ParseException pe) {
        Log.e("MY", pe.toString());
    } catch (SipException se) {
        Log.e("MY", se.toString());
    }
}



public void initiateCall() {

    try {
        SipAudioCall.Listener listener = new SipAudioCall.Listener() {

            @Override
            public void onCallEstablished(SipAudioCall call) {
                call.startAudio();
                call.setSpeakerMode(true);
                call.toggleMute();
                Log.i("MY", "oonCallEstablished");
            }

            @Override
            public void onCallEnded(SipAudioCall call) {
                Log.i("MY", "onCallEnded");
            }
        };

        call = manager.makeAudioCall(me.getUriString(), sipAddress,
                listener, 30);

    } catch (Exception e) {
        Log.e("MY", e.toString());
        if (me != null) {
            try {
                manager.close(me.getUriString());
            } catch (Exception ee) {
                Log.e("MY", ee.toString());
            }
        }
        if (call != null) {
            call.close();
        }
    }
}

运行此代码(首先使用 initalizeManager 进行初始化,然后运行 ​​initateCall),我收到一个异常:

android.net.sip.SipException: Failed to create SipSession; network unavailable?

...和 ​​LogCat 日志:

07-14 13:35:16.200: ERROR/SipService(364): openToMakeCalls()
07-14 13:35:16.200: ERROR/SipService(364): javax.sip.SipException: only creator can access the profile
07-14 13:35:16.200: ERROR/SipService(364):     at com.android.server.sip.SipService.createGroup(SipService.java:337)
07-14 13:35:16.200: ERROR/SipService(364):     at com.android.server.sip.SipService.open(SipService.java:185)
07-14 13:35:16.200: ERROR/SipService(364):     at android.net.sip.ISipService$Stub.onTransact(ISipService.java:58)
07-14 13:35:16.200: ERROR/SipService(364):     at android.os.Binder.execTransact(Binder.java:320)
07-14 13:35:16.200: ERROR/SipService(364):     at dalvik.system.NativeStart.run(Native Method)
07-14 13:35:16.200: WARN/SipService(364): only creator can set listener on the profile
07-14 13:35:16.230: WARN/SipService(364): only creator or radio can close this profile

Google 还没有给出任何结果,因为 Android 2.3+ SIP 上没有足够的数据,所以你提出的每一个建议都对我有很大帮助!


问题解决了:您不能在initializeManager()之后立即调用initiateCall()。 SIP 组件初始化后,您必须等待大约 4 秒。

EDIT-SipManager 注册似乎仍然存在一些问题:呼叫用户未注册(403)。重新安装应用程序并重新启动设备即可解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android VOIP SipException:无法创建 SipSession 的相关文章

  • 键入时将编辑文本中的每个单词大写

    我想在打字时将编辑文本中的每个单词大写 My XML
  • 使用选项卡式活动中的捆绑包将值从活动传递到片段

    我是一个java文盲 但仍在尝试开发一个供我个人使用的应用程序 我从 android studio 的 Tabbed Activity 开始 除了 MainActivity 中的一个片段和一个包之外 大部分没有改变 这是我的代码 主要活动
  • 启动时的 Android pin 活动

    我有一个应用程序 它将自身注册为默认启动器 并在启动时自动固定自身 安装应用程序时这一切都正常 它会自行固定 并且只有后退按钮可见 问题是 当设备首次启动时 它无法正确固定 我多次看到一系列 屏幕固定 和 屏幕取消固定 的 toast 主页
  • 未安装 newrelic 的应用程序上出现 NoClassDefFoundError

    我已经使用他们的 Eclipse 指南为我的 Android 应用程序安装了 newrelic 它在该应用程序上运行正常 现在 如果我创建一个简单的 hello world 项目 我将收到 NoClassDefFoundError 我该如何
  • Android:从 https url 获取响应

    问候 我正在开发一个 Android 应用程序 需要通过 https 打开一个 url 带有 POST 参数 并获取响应 我有一个自签名证书 这让情况更加复杂 我还需要接受cookies 有人知道从哪里开始吗 提前谢谢了 Android 附
  • 方法不必要地被调用?

    我有一个 BaseActivity 它可以通过其他所有活动进行扩展 问题是 每当用户离开 暂停 活动时 我都会将音乐静音 我也不再接听电话 问题是 onPause每当用户在活动之间切换时就会被调用 这意味着应用程序不必要地静音和停止tele
  • Android BLE - 如何分块读取大特征值(使用偏移量)?

    我正在使用 Android SDKandroid 蓝牙 and android 蓝牙 le APIs 我想实现一个应用程序 发挥核心作用 并连接到 BLE 外设以读取特征值和描述符 应用程序需要读取的特征值较大 因此需要分块连续读取 我对如
  • 如何在phonegap上使用GCM处理android中的多个推送通知

    当推送通知到达时 如果用户无法查看该通知 他收到另一条通知 之前的通知正在更新为新的 但它不应该更新为最新的 我们需要单独显示每个通知 这可以使用 GCM 吗 我已经使用Phonegap来开发应用程序 PushPlugin 支持在有效负载中
  • Android:多图像密度支持 - 缩放高度宽度和 dpi?

    我有一个 Android 应用程序 我正在尝试添加对不同密度 屏幕尺寸等的支持 我已经在具有 HVGA 支持的模拟器上开发了该应用程序 并使用了我们 iphone 应用程序中的所有图标 自从分辨率以来 结果很好分辨率为 320x480 现在
  • CollapsingToolbarLayout 禁用绘制扩展

    我有一个已有条件禁用的 CollapsingToolbar 当用户在这种情况下加载视图时 它看起来就像一个普通的 ToolBar 对象 唯一奇怪的是 如果它们向下拖动 例如在拉动刷新样式操作中 折叠工具栏就会展开 尽管我的愿望和代码与此相反
  • AWS MobileHub:重命名 Android / iOS 示例项目

    我是 AWS Mobilehub 的新手 我喜欢它允许我使用 AWS 配置选项创建项目 但是 当我尝试构建应用程序 ios swift android 时 它总是使用我的示例项目作为项目名称 在 AWS 项目的大多数配置设置中 例如使用 c
  • 使用 Asp.Net 的 GCM 推送通知

    正如您可能已经看到的 Google 正在迁移其推送通知系统 http developer android com guide google gcm c2dm html http developer android com guide goo
  • 即使获得平台签名也无法读取系统文件

    我已经构建了一个自定义 Android ROM 我已经使用平台签名签署了我的应用程序并添加了android sharedUserId android uid system 在清单文件中 我的应用程序被授予所有 签名 和 系统 级别权限 但不
  • android 从图库中选择图像

    我想从图库创建一个图片选择器 我使用代码 intent new Intent Intent ACTION PICK android provider MediaStore Images Media EXTERNAL CONTENT URI
  • getViewByID 对于 Listview 返回 null

    我的 main xml 如下
  • Android 上的 Jetty 上的 Jersey 抛出 ContainerException:“不存在 WebApplication 提供程序”

    我正在尝试在 Android 上的 Jetty 上运行 Jersey 我创建了一个 Android 它使用 Jersey Servlet 实例化 Jetty 服务器 无论如何 当我启动 Jetty 并访问 REST 资源时 在我的例子中 h
  • 在 Android 版 Glide 中离线时加载已获取的图像

    我正在使用 Glide 版本 4 8 0 为了加载图像我这样做 GlideApp with HomePageFragment this load remoteURL diskCacheStrategy DiskCacheStrategy A
  • Android - 如何合并两个视频

    基本上 我正在寻找一种将两个 mp4 视频文件 在 SD 卡上 组合在一起的方法 更像是在第一个视频的末尾附加第二个视频 我进行了很多搜索 但找不到合适的解决方案 好吧 我根本找不到任何解决方案 所以我的问题是 是否有一个库可以组合 并可能
  • 如何自动更新Android Studio?

    我需要将 Android Studio 更新到 0 9 9 版本 但是当我按 下载 在更新信息对话框上 时 它会将我发送到此处 http developer android com sdk index html http developer
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提

随机推荐

  • 为什么从实例获取类属性会引发 AttributeError?

    通常 您可以从该类的实例访问常规类属性 字段 然而 当尝试访问一个类时property 会引发 AttributeError 为什么实例看不到类对象的属性 class Meta type property def cls prop cls
  • 扭曲的 dns 不起作用

    我想知道为什么以下不起作用 from twisted internet import defer reactor from twisted python failure import Failure import twisted names
  • 有没有类似于 LinkedIn Engineering 发布的案例研究?

    LinkedIN Engineering 发布了一系列关于他们在开发 iPad 混合移动应用程序时的经验和发现的精彩案例研究 http engineering linkedin com mobile linkedin ipad native
  • RegisterHotKey 不适用于不可见表单 (c#)

    我试图在系统托盘中放置一个图标 然后为其提供一个全局键盘快捷键来执行某项功能 我使用 RegisterHotKey 设置全局键盘快捷键 如果与图标关联的主窗体可见 则它可以工作 但如果窗体不可见 则永远不会调用 WndProc 方法 有任何
  • 谁分享了我的 Facebook 帖子?

    使用任何适用于 Python 的 Facebook API 我试图获取分享我的帖子的人数以及这些人是谁 我目前有第一部分 gt gt gt from facepy import gt gt gt graph GraphAPI CAAEr g
  • monodevelop 3 - 支持“附加到进程”

    MonoDevelop 3 支持附加到进程吗 如果是这样 有人可以指出它在哪里或任何可能的解决方法 简短的回答是 不 据我所知不是 但是 如果您希望在不从 MonoDevelop 启动项目的情况下进行调试 则可以选择使用此处描述的软调试器
  • 将 xtext 编辑器支持与外部 ANTLR 解析器链接起来

    我当前的项目 将其命名为 IoTSuite 采用高级规范 解析它们 并生成 Java 和 Android 代码 在这个项目中 我编写了 ANTLR 语法来解析高级规范 并使用 StringTemplate 作为代码生成器 然而 由于良好的编
  • 使用自定义 Maven 插件“无法设置 org.eclipse.aether.spi.log.Logger”

    我写了一个小的自定义 Maven 插件 它运行良好 大多数时候 使用它时 它被配置为在测试阶段运行 并且我看到它正在执行 没有问题 现在问题来了 当我这样做时mvn 干净安装 or mvn 干净部署在使用该插件的项目中 它失败并显示一条我无
  • 加密 AES/CBC/PKCS7Padding

    帮我加密一下AES CBC PKCS7Padding 下面是我的解密代码AES CBC PKCS7 它正在工作 但是当我加密一些字符串并从我自己解密时 这是错误的 下面我添加代码来加密和解密 AES CBC PKCS7Padding NSD
  • 在 ZF2 控制器中获取请求授权标头

    我正在使用 ZF2 出于某种原因 我可以获取我发送的所有标头 授权标头除外 就像它被过滤掉一样 我试图获取控制器中的所有标头 如下所示 public function createAction data request this gt re
  • SSAS Cube 处理日志

    SSAS立方体在哪里加工 不是错误 不是飞行记录器 日志存储了吗 我们有一个运行 SQL Server Analysis Services 命令的 SQL 代理作业 其中有一些 DMX 处理每个维度 然后处理多维数据集数据库 包含两个多维数
  • 通过 testcafe-browser-tools 将自定义参数传递到 Chrome 二进制文件时,无头运行 testcafe

    在 Vagrant VM 中运行 testcafe 即mostly在职的 但是 Chrome 在启用硬件加速的环境中无法正常启动 因此我必须使用命令行标志来启动它 disable gpu 我利用 testcafe browser tools
  • 如何在webapi上传中获取多部分文件的流?

    我需要使用流 Azure Blob 存储 上传文件 但无法找到如何从对象本身获取流 请参阅下面的代码 我是 WebAPI 的新手 并且使用过一些示例 我正在获取文件和文件数据 但对于我的上传方法来说 它的类型不正确 因此 我需要将其获取或转
  • 将java程序编译为可执行文件[重复]

    这个问题在这里已经有答案了 可能的重复 如何为 Java 程序创建 exe https stackoverflow com questions 516399 how do i create an exe for a java program
  • Xpath 表达式

    我需要获得的价值
  • 无法访问复制到 /var/www/ 或其他文件夹中的 php 文件

    我使用的是带有 LAMP 设置的 Ubuntu 12 10 我将 Windows PC 上的 xampp htdocs 中包含项目文件 php html css 的子目录复制到我的 ubuntu 的 var www 中 但是 当我从浏览器访
  • reinterpret_cast 与 c 风格强制转换 [重复]

    这个问题在这里已经有答案了 可能的重复 c 风格强制转换与reinterpret cast https stackoverflow com questions 8427107 c style cast vs reinterpret cast
  • Tridion 命令扩展如何找到它扩展的命令?

    Tridion 的用户界面允许您扩展特定的命令 这是修改某些现有命令的行为的好方法 在编辑器的配置文件中 这是通过如下部分完成的
  • 通过反射获取枚举值

    我试图在运行时循环并打印给定枚举类的所有枚举值 但我似乎只能返回与值相关的常量 大多数解决方案都指向使用 getEnumConstants values 或 valueOf 但我无法让它们按预期工作 我能找到的最接近的问题是通过反射获取en
  • Android VOIP SipException:无法创建 SipSession

    我正在尝试使用 Android 3 1 上内置的 SIP 运行 VOIP 呼叫 我有物理平板电脑设备 galaxy Tab 10 1 为了测试目的 我创建了一个项目SipDemo 示例 http developer android com