實現手機電話狀態的監聽,主要依靠兩個類: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。