所以我正在使用本机sip库,我可以很好地连接并注册服务器。当我拨打电话时,它会触发一个代理,将其路由到普通电话,然后拨打该号码。它连接正常,另一端的电话接听电话,但没有音频。我知道代理可以处理音频,因为有一个iPhone应用程序命中同一个服务器,它连接得很好。
这是我打电话的代码:
public void makeCall(String s) {
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onCallEstablished(SipAudioCall call) {
Log.d(TAG, "Call Established");
call.startAudio();
//I've tried with speaker mode on and off
call.setSpeakerMode(true);
}
@Override
public void onCallEnded(SipAudioCall call) {
Log.d(TAG, "Call Ended");
}
};
if (sipManager != null && sipProfile != null) {
try {
Log.d(TAG, "Make call");
sipManager.makeAudioCall(sipProfile.getUriString(), app.sipToUri(s, sipProfile.getProxyAddress()), listener, 30);
} catch (SipException e) {
e.printStackTrace();
}
}
}
在我的清单中我有
<uses-permission android:name="android.permission.USE_SIP"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<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" />
我正在使用支持sip的平板电脑以及支持sip的笔记2进行测试。
答案 0 :(得分:6)
这可能是不必要的
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
SIP相关
<uses-permission android:name="android.permission.CONFIGURE_SIP" />
<uses-feature android:name="android.software.sip" android:required="true" />
<uses-feature android:name="android.software.sip.voip" android:required="true" />
如果你使用扬声器,你需要这个
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />