Reputation: 689
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();
}
}
}
}
Upvotes: 0
Views: 1576
Reputation: 166
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();
}
});
Upvotes: 1