반응형
Android12로 들어서며 PhoneStateListener가 deprecated 되었습니다.
이를 TelephonyCallbck으로 대체해야 합니다.
private val mPhoneStateListener = object : PhoneStateListener(){
override fun onCallStateChanged(state: Int, phoneNumber: String?) {
super.onCallStateChanged(state, phoneNumber)
Log.d(TAG, "onCallStateChanged is listen changed state : $state")
callStateIntent = Intent(applicationContext, CallHandleService::class.java)
callStateIntent?.putExtra("callState", state.toString())
startService(callStateIntent)
}
}
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE)
전화 상태가 변화되면, state를 행들링할 서비스를 실행시키며 call state도 넘기도록 구현한
PhoneStateListener입니다.
이걸 TelephonyCCallback으로 구현해 보겠습니다.
fun registerTelephonyCallback(telephonyManager: TelephonyManager){
telephonyManager.registerTelephonyCallback(
mainExecutor,
object : TelephonyCallback(), TelephonyCallback.CallStateListener {
override fun onCallStateChanged(state: Int) {
Log.d(TAG, "onCallStateChanged is listen changed state : $state")
callStateIntent = Intent(applicationContext, CallHandleService::class.java)
callStateIntent?.putExtra("callState", state.toString())
startService(callStateIntent)
}
})
}
listen을 사용해 리스너와 뭘 받을지에 대한 상수를 매개변수르 받는것에 비해서 훨씬 직관적으로 변했습니다.
telephonyManager의 인스턴스에서 바로 callback을 호출해서 오버라이드 할 수 있습니다.
이상입니다.
반응형
'IDE & Framework > Android' 카테고리의 다른 글
Android Log 라이브러리 Logger (0) | 2022.02.24 |
---|---|
Android Proguard (0) | 2022.02.20 |
[Kotlin] RecyclerView (3) - ItemTouchHelper로 Swipe event 구현 (0) | 2022.02.08 |
[Kotlin] RecyclerView (2) - Filter와 SerachView로 검색기능 구현 (2) | 2022.02.05 |
[Kotlin] ViewPager2 사용하기 (0) | 2022.01.31 |