OPhone系统提供了PhoneStateListener对象做为监听器的抽象,它是用于即时监测:服务状态、信号强度、消息等待指示等各方面有关电话功能状态变化的回调方法机制。想要监测来电呼叫,PhoneStateListener的onCallStateChanged方法是入口点,它把电话呼叫状态分为三种类型:空闲(IDLE)、振铃(RINGING)和摘机(OFFHOOK),其中振铃状态正是来电呼入的标志,因此具体的方法是:重新实现PhoneStateListener对象的onCallStateChanged方法,并关注RINGING状态。请看示例代码:

  1. class MyPhoneStateListener extends PhoneStateListener {     
  2.         public void onCallStateChanged(int state, String incoming) {     
  3.            switch (state) {     
  4.            case TelephonyManager.CALL_STATE_RINGING:     
  5.                // Ringing-振铃,有电话呼入     
  6.                Log.d(tag, "RINGING~");     
  7.                Log.d(tag, "获得来电号码:" + incoming);     
  8.                // TODO:YOU CODE     
  9.                break;     
  10.            case TelephonyManager.CALL_STATE_OFFHOOK:     
  11.                // Offhook-摘机,呼出电话已接通或呼入电话已接起     
  12.                Log.d(tag, "OFFHOOK~");     
  13.                break;     
  14.            case TelephonyManager.CALL_STATE_IDLE:     
  15.                // IDLE-空闲,结束通话状态     
  16.                Log.d(tag, "IDLE~");     
  17.                break;     
  18.            }     
  19.         }     
  20.     }