1

Android のジェリー ビーン バージョンでは、Sip 呼び出しが機能しません。しかし、同じコードがアイスクリーム サンドイッチ バージョンで動作しています。ジェリー ビーンで、「sip registration failed」および「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 に答える