0

android.net.sipAPIを使用して発信コールを行うときに、コール ID を取得する方法を知りたいです。私は現在、Android sip デモと同じように発信通話を行っています。 call = manager.makeAudioCall(me.getUriString(), sipAddress, listener, 30);
また、ドキュメントで、通話IDを取得するために通話を行うときにsipセッションを作成できることを見ましたが、それを理解することはできません. のドキュメントについては、http://developer.android.com/reference/android/net/sip/SipManager.html#createSipSession(android.net.sip.SipProfileを参照してくださいSipManager。音声通話を行う前にこれも行っています。

manager.createSipSession(me, new SipSession.Listener(){
        @Override
        public void onCalling(SipSession session) {
            String callId = session.getCallId();
            Log.d(TAG, "onCalling. call ID: " + callId);
        }
        @Override
        public void onRingingBack(SipSession session) {
            String callId = session.getCallId();
            Log.d(TAG, "onRinging. call ID!!!: " + callId);
        }
        @Override
        public void onCallEstablished(SipSession session,
                String sessionDescription) {
            String callId = session.getCallId();
            Log.d(TAG, "onCallEstablished: call ID!!!: " + callId);

        }

    });

しかし、発信呼び出しを行うときにどのメソッドも呼び出されていません。

4

1 に答える 1

0

私はついに問題の解決策を見つけました。ここにあります:

private SipAudioCall myMakeAudioCall(Context context, SipProfile sipProfile, SipProfile peerProfile, int timeout) throws SipException{

    SipAudioCall.Listener l = new SipAudioCall.Listener(){
        @Override
        public void onCallEstablished(SipAudioCall call) {
        }
        //add more methods if you want to
    };

    SipAudioCall testCall = new SipAudioCall(context,sipProfile);
    testCall.setListener(l);

    SipSession.Listener sessionListener = new SipSession.Listener(){
        @Override
        public void onCalling(SipSession session) {
            String callId = session.getCallId();
            Log.d(TAG, "onCalling. call ID: " + callId);
        }
        //add more methods if you want to
    };

    SipSession ss = manager.createSipSession(sipProfile, sessionListener);
    if(ss == null){
        throw new SipException("Failed to create SipSession; Network available?");
    }
    testCall.makeCall(peerProfile, ss, timeout);
    Log.d(TAG,"iD: " + ss.getCallId());
    return testCall;
}

SipAudioCallマネージャーを使用して呼び出しを行う代わりに、独自のオブジェクトを作成するだけです。manager を使用して を作成します。SipSessionこれは、オブジェクトを呼び出すためのメソッドで使用しSipAudioCallます。

于 2012-08-02T12:39:04.880 に答える