2016-09-30 4 views
0

Ich habe erfolgreich Pjsip-Bibliothek mit Android integriert. Ich bekomme auch einen eingehenden Anruf und mache einen ausgehenden Anruf. Einzige Sache ist, ich muss eingehenden Anruf ereignisbasiert machen. Zum Beispiel, wenn ein eingehender Anruf kommt, muss ich zuerst eine Option dem Benutzer zeigen, um den Anruf auszuwählen, und wenn die Taste gedrückt wird, muss ich den Anruf annehmen. Aber gerade jetzt, wenn ich den Code einlege, um zu einer Aktivität zu gehen, um den Aufruf auszuwählen, schlägt die Methode fehl. Wenn ich innerhalb von onIncomingCall sofort answerIncomingCall() anrufe, wird der Anruf vom Programm selbst statt von Handler.post perfekt beantwortet.So fangen Sie eingehenden Anruf pjsip

Kann mir jemand helfen, wie dies zu tun

@Override 
     public void onIncomingCall(OnIncomingCallParam prm) { 
      System.out.println("*** Incoming call....... " + prm.getCallId()); 

      onIncomingCallParam = prm; 

      System.out.println("*** Incoming call....... 1"); 

      Handler mainHandler = new Handler(context.getMainLooper()); 

      Runnable runnable = new Runnable() { 
       @Override 
       public void run() { 
        Log.d(TAG,"Sip callback=>"+sipCallbacks); 

        if(sipCallbacks != null) { 
         sipCallbacks.onIncomingCall(); 
        } 
       } 
      }; 

      mainHandler.post(runnable); 

      try { 
       Thread.sleep(10000); 
      } catch (InterruptedException ie) { 
       ie.printStackTrace(); 
      } 

      System.out.println("*** Incoming call....... 2"); 

     } 

     public void answerIncomingCall() { 
      Call call = new MyCall(acc, onIncomingCallParam.getCallId()); 
      CallOpParam callOpParam = new CallOpParam(); 
      callOpParam.setStatusCode(pjsip_status_code.PJSIP_SC_OK); 

      try { 
       call.answer(callOpParam); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
+0

"Die Methode schlägt fehl" - was sagt das Protokoll dazu? – user1506104

+0

Ich habe das Problem, für iOS – Eesha

Antwort

0

Sie haben den Anruf innen „onIncomingCall“ zu beantworten. Wenn Sie einen Dialog für den Benutzer anzeigen möchten, um den Anruf anzunehmen oder abzulehnen, müssen Sie den Anruf sofort mit dem Code 180 (Klingeln) beantworten.

Verwandte Themen