android - How to start something when voice call starts? -


i have built full voice recorder application.

i start recording when voice call starts on phone, how can detect calls state? tried code , didn't work me.

i need know hot start recording when voice call starts (incoming , outgoing).

here example of need.

declare receiver in androidmanifest

<receiver android:name=".incomingcall">                <intent-filter>                <action android:name="android.intent.action.phone_state" />             </intent-filter>     </receiver> 

give read phone state permission in androidmanifest

<uses-permission android:name="android.permission.read_phone_state"/> 

create class incomingcall extends broadcastreceiver class

import android.content.broadcastreceiver; import android.content.context; import android.content.intent; import android.telephony.phonestatelistener; import android.telephony.telephonymanager; import android.util.log; import android.widget.toast;  /**  * created matheszabi on aug/20/2017 0020.  */  public class incomingcall extends broadcastreceiver {      private context context;      public void onreceive(context context, intent intent) {          this.context = context;         try {             // telephony manager class object register 1 listner             telephonymanager tmgr = (telephonymanager) context                     .getsystemservice(context.telephony_service);              //create listner             myphonestatelistener phonelistener = new myphonestatelistener();              // register listener listen_call_state             tmgr.listen(phonelistener, phonestatelistener.listen_call_state);          } catch (exception e) {             log.e("phone receive error", " " + e);         }      }      private class myphonestatelistener extends phonestatelistener {          public void oncallstatechanged(int state, string incomingnumber) {              log.d("myphonelistener",state+"   incoming no:"+incomingnumber);              if (state == 1) {                  string msg = "new phone call event. incomming number : "+incomingnumber;                 int duration = toast.length_long;                 toast toast = toast.maketext(context, msg, duration);                 toast.show();              }         }     } } 

above android 6.0 need handle bit different permissions:

import android.manifest; import android.content.pm.packagemanager; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.widget.toast;  public class mainactivity extends appcompatactivity {      private static final int my_request_code = 1234;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);     }        @override     protected void onresume() {         super.onresume();          if (checkselfpermission(manifest.permission.read_phone_state)                 != packagemanager.permission_granted) {              requestpermissions(new string[]{manifest.permission.read_phone_state},                     my_request_code);         }     }       public void onrequestpermissionresult(int requestcode, string[] permissions, int[] grantresults) {         if (requestcode == my_request_code) {             if (grantresults[0] == packagemanager.permission_granted) {                 // user should able use camera                 toast.maketext(this, "i have  access", toast.length_short).show();             } else {                 toast.maketext(this, "i don't have  access", toast.length_short).show();             }           }     } } 

you must allow permissions @ first time run:

allow permission

here screenshot of working code:

phone ring


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -