Start activity on BroadcastReceiver while receiving SIP Calls

对着背影说爱祢 提交于 2019-12-25 02:35:09

问题


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.

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

回答1:


Hi the question has already been answered in stackoverflow , Anyway change your onRinging method as follows.

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


来源:https://stackoverflow.com/questions/22635605/start-activity-on-broadcastreceiver-while-receiving-sip-calls

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!