1

SIP 调用在 Android 果冻豆版本中不起作用。但相同的代码适用于冰淇淋三明治版本。在果冻豆中出现错误“sip 注册失败”和“无法创建 sip 会话,网络不可用”。我在 Nexus 果冻豆版平板电脑中检查了这个应用程序。

这是我的代码。请任何人帮助我...!

代码

SipProfile.Builder builder = new SipProfile.Builder(name, domain);
builder.setPassword(password);
me = builder.build();
Intent i = new Intent();
i.setAction("android.SipDemo.INCOMING_CALL");


PendingIntent pi = PendingIntent.getBroadcast(SipRegActivity.this, 0,i,Intent.FILL_IN_DATA);
manager.open(me, pi, null);

updateStatus("is opened ::  "+manager.isOpened(me.getUriString()));

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

public void onRegistering(String localProfileUri) {
    updateStatus("SipRegistering ... ");
}

public void onRegistrationDone(String localProfileUri,long expiryTime) {
    updateStatus("SipRegistering done ... ");
}

        public void onRegistrationFailed(String localProfileUri, int errorCode,String errorMessage) {

    }
});

initiateCall();

public void initiateCall() {

    audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

    try {
        SipSession.Listener sessionListener = new SipSession.Listener(){
            @Override
            public void onCalling(SipSession session) {

                String callId = session.getCallId();

            }

        };
        SipAudioCall.Listener listener = new SipAudioCall.Listener() {

            @Override
            public void onCallEstablished(SipAudioCall call) {

                updateStatus("Call is Established");
            }

            @Override
            public void onRinging(SipAudioCall call, SipProfile caller) { 
                super.onRinging(call, caller);
            }

            @Override
            public void onRingingBack(SipAudioCall call) {

                super.onRingingBack(call);

                 updateStatus("Ringing"+call.getState());

            }

            @Override
            public void onCallEnded(SipAudioCall call) {
                updateStatus("Call Ended.");


            }
        };


        SipSession ss = manager.createSipSession(me, sessionListener);
        call = manager.makeAudioCall(me.getUriString(),peerproile, listener, 120);
        call.startAudio();

我也被授予权限。

并且还检查了 isVoipSupported() 和 isApiSupported()。这些方法返回 true。

4

1 回答 1

1

它不依赖于 Android OS ICS 或 JB,它依赖于您的物理设备。

并非所有 Android 设备都支持使用 SIP 的 VOIP 呼叫。您应该始终调用isVoipSupported()以验证设备是否支持 VOIP 呼叫并isApiSupported()验证设备是否支持 SIP API。

参考这里:

于 2012-09-13T10:43:04.103 回答