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() } }