2016-09-30 168 views
0

我已成功将pjsip库与Android整合。我也接到来电并打出电话。唯一的事情是,我需要基于来电呼叫事件。例如,当有来电时,我需要先向用户显示一个选项,以便接听电话,当按下该按钮时,我需要接听电话。但是现在,如果我把代码放到一个活动中去选择调用,那么这个方法就会失败。如果我在onIncomingCall中直接调用answerIncomingCall(),则该调用完全由程序本身而不是Handler.post来回答。如何拦截来电pjsip

有人可以帮助我如何做到这一点

@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

“该方法失败” - 日志对此有何评论? – user1506104

+0

我有问题,对于iOS – Eesha

回答

0

你必须回答“onIncomingCall”内部呼叫。如果您想要显示一个对话框让用户接受或拒绝该呼叫,则必须立即用180(响铃)接听来电。