public class VoiceCallBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (NgnInviteEventArgs.ACTION_INVITE_EVENT.equals(action)) { NgnInviteEventArgs arguments = intent.getParcelableExtra(NgnEventArgs.EXTRA_EMBEDDED); if (arguments == null) { Log.e(Constants.TAG, "Invalid event arguments"); return; } final NgnAVSession ngnAVSession = NgnAVSession.getSession(arguments.getSessionId()); if (ngnAVSession == null) { Log.e(Constants.TAG, "NgnAVSession could not be fetched for this session"); return; } NgnInviteSession.InviteState inviteState = ngnAVSession.getState(); NgnEngine ngnEngine = NgnEngine.getInstance(); switch(inviteState) { case NONE: default: Log.i(Constants.TAG, "Call state: " + inviteState); break; case INCOMING: Log.i(Constants.TAG, "Incoming call"); ngnEngine.getSoundService().startRingTone(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { ngnAVSession.acceptCall(); } }, Constants.ACCEPT_CALL_DELAY_TIME); break; case INCALL: Log.i(Constants.TAG, "Call started"); Toast.makeText(context, "Call connected", Toast.LENGTH_SHORT).show(); ngnEngine.getSoundService().stopRingTone(); break; case TERMINATED: case TERMINATING: Log.i(Constants.TAG, "Call ended"); Toast.makeText(context, "Call disconnected", Toast.LENGTH_SHORT).show(); ngnEngine.getSoundService().stopRingTone(); ngnEngine.getSoundService().stopRingBackTone(); break; } } } }