From 288b50da7fb1726e8ea11de3cfcd5d9ac928aeea Mon Sep 17 00:00:00 2001 From: darthpaul Date: Sun, 19 Sep 2021 23:33:09 +0100 Subject: [PATCH] ref: handle notification in CallService - remove notification handling from CallActivity - handle notification in CallService, including adding a Call.Callback method to update notification when the call state changes --- .../dialer/activities/CallActivity.kt | 4 ---- .../dialer/services/CallService.kt | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt index 95334fc1..619b319b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt @@ -22,7 +22,6 @@ import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.getHandleToUse import com.simplemobiletools.dialer.helpers.CallContactAvatarHelper import com.simplemobiletools.dialer.helpers.CallManager -import com.simplemobiletools.dialer.helpers.CallNotificationManager import com.simplemobiletools.dialer.models.CallContact import java.util.Timer import java.util.TimerTask @@ -38,7 +37,6 @@ class CallActivity : SimpleActivity() { private var proximityWakeLock: PowerManager.WakeLock? = null private var callTimer = Timer() private val callContactAvatarHelper by lazy { CallContactAvatarHelper(this) } - private val callNotificationManager by lazy { CallNotificationManager(this) } override fun onCreate(savedInstanceState: Bundle?) { supportActionBar?.hide() @@ -54,7 +52,6 @@ class CallActivity : SimpleActivity() { callContact = contact val avatar = callContactAvatarHelper.getCallContactAvatar(contact) runOnUiThread { - callNotificationManager.setupNotification() updateOtherPersonsInfo(avatar) checkCalledSIMCard() } @@ -68,7 +65,6 @@ class CallActivity : SimpleActivity() { override fun onDestroy() { super.onDestroy() - callNotificationManager.cancelNotification() CallManager.unregisterCallback(callCallback) callTimer.cancel() if (proximityWakeLock?.isHeld == true) { diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/services/CallService.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/services/CallService.kt index c53d9a13..ecf98650 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/services/CallService.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/services/CallService.kt @@ -5,8 +5,17 @@ import android.telecom.Call import android.telecom.InCallService import com.simplemobiletools.dialer.activities.CallActivity import com.simplemobiletools.dialer.helpers.CallManager +import com.simplemobiletools.dialer.helpers.CallNotificationManager class CallService : InCallService() { + private val callNotificationManager by lazy { CallNotificationManager(this) } + private val callListener = object : Call.Callback() { + override fun onStateChanged(call: Call, state: Int) { + super.onStateChanged(call, state) + callNotificationManager.setupNotification() + } + } + override fun onCallAdded(call: Call) { super.onCallAdded(call) val intent = Intent(this, CallActivity::class.java) @@ -14,11 +23,20 @@ class CallService : InCallService() { startActivity(intent) CallManager.call = call CallManager.inCallService = this + CallManager.registerCallback(callListener) + callNotificationManager.setupNotification() } override fun onCallRemoved(call: Call) { super.onCallRemoved(call) CallManager.call = null CallManager.inCallService = null + callNotificationManager.cancelNotification() + } + + override fun onDestroy() { + super.onDestroy() + CallManager.registerCallback(callListener) + callNotificationManager.cancelNotification() } }