안드로이드 개발 질문/답변
(글 수 45,052)
전화가 오면 전화 받은 시각과
전화가 끝났을 때 전화가 끝난 시간을 기록하는 어플을 제작중입니다.
public FILE fp = null; // 여기에 파일 포인터가 추가되었습니다.
TelephonyManager telMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
telMgr.listen(new PhoneStateListener() {
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.e("통화 시작", "통화 시작"); //로그를 남기고
//현재 시간 구해서 파일에 저장
break;
telMgr.listen(new PhoneStateListener() {
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.e("통화 시작", "통화 시작"); //로그를 남기고
//현재 시간 구해서 파일에 저장
break;
case TelephonyManager.CALL_STATE_IDLE:
if(fp != null)
{
Log.e("통화 종료", "통화 종료");
//종료 시간 구해서 파일에 저장
}
break;
}
}
}, PhoneStateListener.LISTEN_CALL_STATE);
if(fp != null)
{
Log.e("통화 종료", "통화 종료");
//종료 시간 구해서 파일에 저장
}
break;
}
}
}, PhoneStateListener.LISTEN_CALL_STATE);
코드는 위와 같은데요..
IDLE 상태를 탐지하도록 코드를 구성했는데요..
전화가 끊어진게 아니고, 통화는 계속 중인데 휴대폰이 대기상태(화면 전원이 나가는 상태)
로 들어가게 되면 IDLE 이벤트가 발생해서 통화중임에도 불구하고 통화 종료 시간을 기록해 버립니다.
정확하게 통화 종료 이벤트를 받으려면 어떻게 해야할까요??
도와주세요