まずはシステムサービスから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 件のコメント:
コメントを投稿