实现手机电话状态的监听,主要依靠两个类:TelephoneManger和PhoneStateListener。 TelephonseManger提供了取得手机基本服务的信息的一种方式。因此应用程序可以使用TelephonyManager来探测手机基本服务的情况。应用程序可以注册listener来监听电话状态的改变。我们不能对TelephonyManager进行实例化,只能通过获取服务的形式: Context.getSystemService(Context.TELEPHONY_SERVICE); 注意:对手机的某些信息进行读取是需要一定许可(permission)的。 主要静态成员常量:(它们对应PhoneStateListener.LISTEN_CALL_STATE所监听到的内容) int CALL_STATE_IDLE 空闲状态,没有任何活动。 int CALL_STATE_OFFHOOK 摘机状态,至少有个电话活动。该活动或是拨打(dialing)或是通话,或是 on hold。并且没有电话是ringing or waiting int CALL_STATE_RINGING 来电状态,电话铃声响起的那段时间或正在通话又来新电,新来电话不得不等待的那段时间。 手机通话状态在广播中的对应值 EXTRA_STATE_IDLE 它在手机通话状态改变的广播中,用于表示CALL_STATE_IDLE状态 EXTRA_STATE_OFFHOOK 它在手机通话状态改变的广播中,用于表示CALL_STATE_OFFHOOK状态 EXTRA_STATE_RINGING 它在手机通话状态改变的广播中,用于表示CALL_STATE_RINGING状态 ACTION_PHONE_STATE_CHANGED 在广播中用ACTION_PHONE_STATE_CHANGED这个Action来标示通话状态改变的广播(intent)。 注:需要许可READ_PHONE_STATE。 String EXTRA_INCOMING_NUMBER 在手机通话状态改变的广播,用于从extra取来电号码。 String EXTRA_STATE 在通话状态改变的广播,用于从extra取来通话状态。
主要成员函数 public int getCallState() 取得手机的通话状态。 public CellLocation getCellLocation () 返回手机当前所处的位置。如果当前定位服务不可用,则返回null 注:需要许可(Permission)ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION. public int getDataActivity () 返回当前数据连接活动状态的情况。 public int getDataState () 返回当前数据连接状态的情况。 public String getDeviceId () 返回手机的设备ID。比如对于GSM的手机来说是IMEI码,对于CDMA的手机来说MEID码或ESN码。如果读取失败,则返回null。