如何拦截来电pjsip

时间:2016-09-30 12:58:50

标签: android pjsip

我已成功将pjsip库与Android集成。我也接到来电并拨打电话。唯一的问题是,我需要制作来电事件。例如,当有来电时,我需要首先向用户显示一个选项以选择呼叫,当按下按钮时,我需要接听电话。但是现在,如果我输入代码去活动来接听电话,那么该方法就失败了。如果我在onIncomingCall中直接调用answerIncomingCall(),则程序本身而不是Handler.post会完全回答该调用。

有人可以帮我怎么做

@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();
            }
        }

1 个答案:

答案 0 :(得分:0)

您必须在“onIncomingCall”内接听电话。如果要显示用户接受或拒绝呼叫的对话框,则必须立即使用代码180(振铃)应答呼叫。