반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 안드로이드스튜디오
- android
- 디자인패턴
- mockito
- viewmodel
- kotlin강좌
- 책
- g 단위테스트
- 테스트
- 알게되는
- 글또
- Compose
- 병렬프로그래밍
- 안드로이드
- Gradle
- 스레드
- 회고
- Kotlin
- 코틀린
- 알고리즘
- ReactiveProgramming
- 병럴프로그래밍
- 자바
- Coroutine
- 코루틴
- theming
- 안드로이드강좌
- Rxjava
- k8s
- 커스텀상태
Archives
- Today
- Total
선생님, 개발을 잘하고 싶어요.
안드로이드 통화 상태 감지 코드 본문
잠금화면을 구현했는데 통화가 오는 경우에도 커스텀 잠금화면이 화면 위를 덮어서 통화가 불편했다. (잠금화면에 문제를 틀리면 일정시간 강제 잠금이라 생각보다 매우 화나더라.)
따라서 통화중인지 아닌지 여부를 판단하여 통화가 온 상태라면 잠금화면을 띄우지 않도록 구현하였다.
1. 전화상태를 체크하기 위해서 READ_PHONE_STATE 권한 필요
- <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
2. 전화상태를 읽는 리스너 등록
1 2 3 4 5 6 7 8 9 10 11 | private var mIsPhoneIdle = true private val phoneListener = object : PhoneStateListener() { override fun onCallStateChanged(state: Int, incomingNumber: String) { when (state) { TelephonyManager.CALL_STATE_IDLE -> mIsPhoneIdle = true TelephonyManager.CALL_STATE_RINGING -> mIsPhoneIdle = false TelephonyManager.CALL_STATE_OFFHOOK -> mIsPhoneIdle = false } } } | cs |
3. 전화상태가 대기 상태일때만 서비스를 켠도록 바꾼다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | override fun onReceive(context: Context, intent: Intent) { Log.d(TAG, "onReceive") if (intent.action == Intent.ACTION_SCREEN_ON) { // 전화 통화가 온 상태면 키면 화가 난다. if (mTelephonyManager == null) { mTelephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager } mTelephonyManager?.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE) if (mIsPhoneIdle) { // LockScreenService 를 시작해주어야 한다. // 이미 LockScreenService 를 띄워줄 권한은 받은 상태여야 한다. val intent = Intent(context, LockScreenService::class.java) val setting = SettingsPref.getSettings(context) intent.putExtra("forceLockPeriod", setting.slideForcePeriod) context.startService(intent) } } } | cs |
편--안 하게 전화 받을수 있게 되었다.
'개발 > android 개발' 카테고리의 다른 글
코틀린 데이터바인딩 연결시 (kotlin databinding) (0) | 2018.11.27 |
---|---|
androidx navigation 구현해보자 (0) | 2018.11.23 |
안드로이드 - 죽지않는 블루투스 스캐닝 (2) | 2018.11.22 |
잠금화면 어플리케이션(ProjectM) 개발 초기 개발리스트 (0) | 2018.11.20 |
안드로이드 서비스 정리 (0) | 2018.10.03 |
Comments