2012-07-17 123 views
20

我想知道如何在被叫方接通电话时发出警报。我已经使用PhoneStateListener以及BroadcastReceiver如何了解被叫方是否接听了电话(当他解除电话时,电话状态是什么)

通常它有三个状态CALL_STATE_IDLE , CALL_STATE_OFFHOOK, CALL_STATE_RINGING

CALL_STATE_OFFHOOK当呼叫正在连接时状态正在呼叫,被叫方应答 呼叫后,上述三种状态均未被呼叫。

这是我的BroadcastReceiver。

public class PhoneStateBroadcastReceiver extends BroadcastReceiver 
{ 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 

     TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
     telephonyManager.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE); 

    } 

    public class CustomPhoneStateListener extends PhoneStateListener 
    { 

     Context context; //Context to make Toast if required 
     ActivityManager activityManager; 

     public CustomPhoneStateListener(Context context) 
     { 
      super(); 
      this.context = context; 
     } 

     @Override 
     public void onCallStateChanged(int state, String incomingNumber) 
     { 
      super.onCallStateChanged(state, incomingNumber); 
      Log.v("PhoneStateBroadcastReceiver", "onCallStateChanged state"+state); 


      switch (state) 
      { 
      case TelephonyManager.CALL_STATE_IDLE: 
       Toast.makeText(context, "=CALL_STATE_IDLE==", Toast.LENGTH_LONG).show(); 
      break; 
      case TelephonyManager.CALL_STATE_OFFHOOK: 
       Toast.makeText(context, "CALL_STATE_OFFHOOK", Toast.LENGTH_LONG).show(); 

       break; 
      case TelephonyManager.CALL_STATE_RINGING: 
       Toast.makeText(context, "CALL_STATE_RINGING", Toast.LENGTH_LONG).show(); 

       break; 
      default: 
       break; 
      } 
     } 
     } 
} 

我看到有些应用程序在接听电话时录音。我想知道接听电话的状态。

是否有任何其他状态或听众知道被叫方何时接听电话?

回答