我有一个我正在尝试构建的快速示例应用程序,用于演示与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);我会找到一位有效的经理.
我看到很多关于类似问题的帖子,但没有发现任何报告true的SipManager.isVoipSupported(Context context)电话.有任何想法吗?
注意:我不确定这是否重要,但是cSipSimple(另一个用于android的SIP/Voip应用程序)可以在这个设备上运行.
更新(12/20/12):我按照pboy的建议尝试了SipDemo.这也行不通.在注册步骤中,该应用和我的应用都失败了.使用调试器,我打破了onRegistrationFailed回调SipRegistrationListener.从这里我可以看到int errorCode-9和一个String errorMessage"0".我查找了这个错误代码,它对应于以下内容(取自SIP API文档):
public static final int IN_PROGRESS
Run Code Online (Sandbox Code Playgroud)
在API级别9中添加
客户端处于事务中,无法启动新事务.
常数值:-9(0xfffffff7)
我没有运行其他SIP程序.我的应用程序只是刚刚安装,目前还没有运行.我不确定它中间会有什么其他交易?
小智 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" />
Run Code Online (Sandbox Code Playgroud)
另外,请确保您在连接 wifi 时进行测试,因为当您连接 wifi 而不是其他网络时,android SIP 会提供连接。