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
This commit is contained in:
darthpaul 2021-09-19 23:33:09 +01:00
parent e032bdddce
commit 288b50da7f
2 changed files with 18 additions and 4 deletions

View File

@ -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) {

View File

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