URL : http://yoonhg84.tistory.com/97
.....
전화 상태로 발신을 구분을 할수 있습니다.
발신 : IDLE -> OFFHOOK -> IDLE
수신 : IDLE -> RINGING -> OFFHOOK -> IDLE
.....
PhoneStateReceiver.java
public class PhoneStateReceiver extends BroadcastReceiver { private static int pState = TelephonyManager.CALL_STATE_IDLE; private static CallLog cLog;
public void onReceive(Context context, final Intent intent) { TelephonyManager telManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telManager.listen(new PhoneStateListener(){ public void onCallStateChanged(int state, String incomingNumber){ if(state != pState){ if(state == TelephonyManager.CALL_STATE_IDLE){ Log.i("Phone","IDLE"); if(cLog != null){ cLog.setEndDate(System.currentTimeMillis()); Log.i("Phone",cLog.toString()); cLog = null; } } else if(state == TelephonyManager.CALL_STATE_RINGING){ Log.i("Phone","RINGING"); cLog = new CallLog(incomingNumber, LogKind.KIND_RECEIVE); cLog.setRingingDate(System.currentTimeMillis()); } else if(state == TelephonyManager.CALL_STATE_OFFHOOK){ Log.i("Phone","OFFHOOK"); cLog.setStartDate(System.currentTimeMillis()); }
pState = state; } } }, PhoneStateListener.LISTEN_CALL_STATE);
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){ Log.i("Phone","out"); cLog = new CallLog(intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER), LogKind.KIND_SEND); cLog.setRingingDate(System.currentTimeMillis()); } } } |
.....
'Programming > Android Java' 카테고리의 다른 글
Handler와 Looper (0) | 2015.07.15 |
---|---|
Bitmap - Caused by: java.lang.OutOfMemoryError (0) | 2014.10.13 |
Data Storage, Retrieval, and Sharing (0) | 2014.09.30 |
네이버 푸시 플랫폼과 Android WakeLock (0) | 2014.09.29 |
NFC: Host-based Card Emulation (0) | 2014.09.28 |