OPhone系统提供了PhoneStateListener对象做为监听器的抽象,它是用于即时监测:服务状态、信号强度、消息等待指示等各方面有关电话功能状态变化的回调方法机制。想要监测来电呼叫,PhoneStateListener的onCallStateChanged方法是入口点,它把电话呼叫状态分为三种类型:空闲(IDLE)、振铃(RINGING)和摘机(OFFHOOK),其中振铃状态正是来电呼入的标志,因此具体的方法是:重新实现PhoneStateListener对象的onCallStateChanged方法,并关注RINGING状态。请看示例代码:
- class MyPhoneStateListener extends PhoneStateListener {
- public void onCallStateChanged(int state, String incoming) {
- switch (state) {
- case TelephonyManager.CALL_STATE_RINGING:
- // Ringing-振铃,有电话呼入
- Log.d(tag, "RINGING~");
- Log.d(tag, "获得来电号码:" + incoming);
- // TODO:YOU CODE
- break;
- case TelephonyManager.CALL_STATE_OFFHOOK:
- // Offhook-摘机,呼出电话已接通或呼入电话已接起
- Log.d(tag, "OFFHOOK~");
- break;
- case TelephonyManager.CALL_STATE_IDLE:
- // IDLE-空闲,结束通话状态
- Log.d(tag, "IDLE~");
- break;
- }
- }
- }