まずはシステムサービスからTelephonyManagerを取得し、listenでリスナーを登録する。
※Permissonに"android.permission.READ_PHONE_STATE"の登録が必要。
// 電話状態監視リスナー PhoneStateListener mListener = new PhoneStateListener() { public void onCallStateChanged(int state, String number) { switch(state) { case TelephonyManager.CALL_STATE_RINGING:// 着信時 Log.d(TAG, "PhoneState: CALL_STATE_RINGING"); break; case TelephonyManager.CALL_STATE_OFFHOOK:// 通話時 Log.d(TAG, "PhoneState: CALL_STATE_OFFHOOK"); break; case TelephonyManager.CALL_STATE_IDLE:// 待機時(リスナー登録時も呼ばれるようだ) Log.d(TAG, "PhoneState: CALL_STATE_IDLE"); break; } } }; TelephonyManager m = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); m.listen(mListener, PhoneStateListener.LISTEN_CALL_STATE);不在着信の検知は、前回の電話状態を記録することで可能です。
・通話終了=CALL_STATE_RINGING -> CALL_STATE_OFFHOOK -> CALL_STATE_IDLE
・不在着信=CALL_STATE_RINGING -> CALL_STATE_IDLE
0 件のコメント:
コメントを投稿