android - How to detect when phone is answered or rejected -
i managed prepare activity when phone ringing. need know how cancel activity when anwser phone or reject call.do call extra_state_idle?extra_state_offhook?
any ideas?
<receiver android:name=".incomingbroadcastreceiver"> <intent-filter> <action android:name="android.intent.action.phone_state"/> </intent-filter> </receiver> public class incomingbroadcastreceiver extends broadcastreceiver { @override public void onreceive(context context, intent intent) { string state = intent.getstringextra(telephonymanager.extra_state); // if incoming call arrives if (state.equals(telephonymanager.extra_state_ringing)) { //did work }
in onreceive:
phonestatechangelistener pscl = new phonestatechangelistener; telephonymanager tm = (telephonymanager)this.getsystemservice(context.telephony_service); tm.listen(pscl, phonestatelistener.listen_call_state);
separate class:
private class phonestatechangelistener extends phonestatelistener { public static boolean wasringing; @override public void oncallstatechanged(int state, string incomingnumber) { switch(state){ case telephonymanager.call_state_ringing: log.i(log_tag, "ringing"); wasringing = true; break; case telephonymanager.call_state_offhook: log.i(log_tag, "offhook"); if (!wasringing) { // start new activity } else { // cancel old activity } // should last piece of code before break wasringing = true; break; case telephonymanager.call_state_idle: log.i(log_tag, "idle"); // should last piece of code before break wasringing = false; break; } } }
all need write code check if previous state 'ringing'. if current state idle , previous state ringing, cancelled call. if current state offhook , previous state ringing, answered call.
Comments
Post a Comment