简体   繁体   English

接收SIP呼叫时在BroadcastReceiver上开始活动

[英]Start activity on BroadcastReceiver while receiving SIP Calls

I have my IncomingCallReceiver class from which I want to send my incoming calls to another activity to give user option to Receive or Decline incoming call this is my IncomingReceiver class and clearly out of ideas so If someone might suggest how do I do that. 我有自己的IncomingCallReceiver类,我想从该类将传入的呼叫发送到另一个活动,以为用户提供接收或拒绝传入呼叫的​​选项,这是我的IncomingReceiver类,显然没有主意,所以如果有人建议我该怎么做。

public class IncomingCallReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {     

    SipAudioCall incomingCall = null;
    try {

        SipAudioCall.Listener listener = new SipAudioCall.Listener() {
            @Override
            public void onRinging(SipAudioCall call, SipProfile caller) {
                try {
                    call.answerCall(30);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };

        MainActivity wtActivity = (MainActivity) context;                       

        incomingCall = wtActivity.manager.takeAudioCall(intent, listener);
        incomingCall.answerCall(30);
        incomingCall.startAudio();
        incomingCall.setSpeakerMode(true);

        wtActivity.call = incomingCall;

        wtActivity.updateStatus(incomingCall);

    } catch (Exception e) {
        if (incomingCall != null) {
            incomingCall.close();
        }
    }
}
}

Hi the question has already been answered in stackoverflow , Anyway change your onRinging method as follows. 嗨,问题已经在stackoverflow中得到了回答,无论如何请如下更改您的onRinging方法。

SipAudioCall incomingCall = null;
try {

    SipAudioCall.Listener listener = new SipAudioCall.Listener() {
        @Override
        public void onRinging(SipAudioCall call, SipProfile caller) {

          super.onRinging(call, caller);
        }
    };

    MainActivity wtActivity = (MainActivity) context;                       

    incomingCall = wtActivity.manager.takeAudioCall(intent, listener);
    //Method call which handles incoming call.
    showIncomingCall(intent, context);
    wtActivity.call = incomingCall;

    wtActivity.updateStatus(incomingCall);

} catch (Exception e) {
    if (incomingCall != null) {
        incomingCall.close();
    }
}

private void showIncomingCall(Intent intent, Context context) {

    Intent incomingCall = new Intent(context, IncomingCallActivity.class);
    context.startActivity(incomingCall);
}

public static void answerIncomingCall() {

    try {
        incomingCall.answerCall(30);
        incomingCall.startAudio();

        if (incomingCall.isMuted()) {
            incomingCall.toggleMute();

        }
    }

    catch (Exception e) {

        System.out.println(e.toString());
    }

}

public static void rejectIncomingCall() {

    try {
        if (incomingCall != null) {

            incomingCall.endCall();
            incomingCall.close();
        }

    } catch (Exception e) {

        System.out.println(e.toString());
    }
}

} }

And in your incoming call Activity where you have Answer and Reject call buttons, put the following code. 在具有“接听”和“拒绝”按钮的来电活动中,输入以下代码。

btnAnswer.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            IncomingCallReceiver.answerIncomingCall();

        }
    });

    btnDecline.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {


            IncomingCallReceiver.rejectIncomingCall();
            finish();
        }
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM