Android SIP API:显示支持,但出现错误“不支持”。

13

我正在尝试构建一个简单的示例应用程序,以演示如何在Nexus 7上进行简单的SIP呼叫。该设备目前运行Android 4.2.1。

LogCat显示错误:

SipBroadcastRequest / SIP VOIP not supported: com.android.phone.SIP_REMOVE_PHONE

我从API文档(和代码)中看到,如果SipManager.isApiSupported(Context context)返回false,则会发生这种情况。为了保险起见,我都进行了检查:

SipManager.isVoipSupported(this);
SipManager.isApiSupported(this);

两者都返回true。我还从API代码中看到,如果api调用返回false,则SipManager.newInstance(Context context)将返回null。当我使用SipManager.newInstance(this)创建管理器时,我得到了一个有效的管理器。

我看到很多类似问题的帖子,但没有发现任何报告SipManager.isVoipSupported(Context context)调用返回true的帖子。有什么想法吗?

注意:我不确定这是否重要,但是cSipSimple(另一个Android SIP / Voip应用程序)在此设备上确实可以工作。

更新(12/20/12):我尝试了pboy的建议,使用SipDemo也无法工作。该应用程序和我的应用程序都在注册步骤中失败。使用调试器,我在SipRegistrationListeneronRegistrationFailed回调中断点。从这里我可以看到一个int errorCode为-9,一个String errorMessage为“0”。我查看了此错误代码,并对应以下内容(摘自SIP API文档):

public static final int IN_PROGRESS  

从API级别9开始添加
客户端正在事务中,无法启动新事务。
常量值:-9(0xfffffff7)

我没有其他SIP程序在运行。我的应用程序是最新安装的,当前也没有运行。我不知道它可能处于哪个其他事务中。


1
CSipSimple使用外部库,因此无法确定它是否真正有效。请尝试SipDemo,它使用本地库。 - plmaheu
1个回答

1

我希望你在清单文件中提及以下权限:

<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 android:name="android.hardware.wifi" android:required="true" />   
<uses-feature android:name="android.hardware.microphone" android:required="true" />

此外,请确保在连接WiFi时进行测试,因为Android SIP只在连接WiFi时提供连接,而不是其他网络。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接