Search code examples
androidtelephonymanager

Android Handle phone call


I have audio recording, when a phone call come I need to stop the recording, how can I do this?


Solution

  • You have to use the PhoneStateListener:

    TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
    tm.listen(mPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
    
    // somewhere else
    private PhoneStateListener mPhoneListener = new PhoneStateListener() {
        public void onCallStateChanged(int state, String incomingNumber) {
            try {
                switch (state) {
                case TelephonyManager.CALL_STATE_RINGING:
                    // do something...
                    break;
    
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    // do something...
                    break;
    
                case TelephonyManager.CALL_STATE_IDLE:
                    // do something...
                    break;
                default:
                    Log.d(TAG, "Unknown phone state=" + state);
                }
            } catch (RemoteException e) {}
        } 
    };
    

    Make sure to include this permission in your Manifest:

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