Recipe 4.2 Monitoring the State of the Phone

Android Versions
Level 1 and above
Permissions
android.permission.READ_PHONE_STATE
Source Code Download from Wrox.com
Phone.zip

The phone on the Android device is always in one of the three states: idle (when it is not engaged in any calls), ringing (when there is an incoming call), or off hook (when the user answers the call). The capability to monitor the states of the phone enables you to write some interesting applications. For example, if there were an incoming call when you were driving, you may want to automatically send an SMS message to the caller to inform them that you are busy and cannot answer the call. This recipe shows you how to monitor the state of your phone.

Solution

To monitor for changes to the state of the phone, you need to create a class that extends the PhoneStateListener base class:

package net.learn2develop.phone; import android.content.Context; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.widget.Toast; public class PhoneReceiver extends PhoneStateListener { Context context; public PhoneReceiver(Context context) { this.context = context; } @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); Toast.makeText(context, "onCallStateChanged state=" + state + "incomingNumber=" + incomingNumber, Toast.LENGTH_LONG).show(); switch (state) { case TelephonyManager.CALL_STATE_IDLE: ...

Get Android Application Development Cookbook: 93 Recipes for Building Winning Apps now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.