diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt index 3f13d618..f351b8e8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt @@ -10,6 +10,7 @@ import android.hardware.SensorEventListener import android.hardware.SensorManager import android.net.Uri import android.os.Bundle +import android.os.Handler import android.os.PowerManager import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.simplemobiletools.commons.extensions.* @@ -27,9 +28,12 @@ class DialerActivity : SimpleActivity(), SensorEventListener { private var number = "" private var isIncomingCall = false + private var isCallActive = false + private var callDuration = 0 private var sensorManager: SensorManager? = null private var proximity: Sensor? = null private var proximityWakeLock: PowerManager.WakeLock? = null + private var timerHandler = Handler() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -64,6 +68,11 @@ class DialerActivity : SimpleActivity(), SensorEventListener { sensorManager!!.unregisterListener(this) } + override fun onDestroy() { + super.onDestroy() + timerHandler.removeCallbacksAndMessages(null) + } + private val messageReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (intent.extras?.containsKey(CALL_STATUS) == true) { @@ -121,13 +130,29 @@ class DialerActivity : SimpleActivity(), SensorEventListener { } private fun statusActive() { + isCallActive = true + dialer_call_duration.beVisible() + updateCallDuration() + dialer_label.text = "" dialer_hangup_button.beVisible() dialer_incoming_accept.beGone() dialer_incoming_decline.beGone() } + private fun updateCallDuration() { + dialer_call_duration.text = callDuration.getFormattedDuration() + timerHandler.postDelayed({ + if (isCallActive) { + callDuration++ + updateCallDuration() + } + }, 1000) + } + private fun statusDisconnected() { + isCallActive = false + timerHandler.removeCallbacksAndMessages(null) dialer_hangup_button.beGone() dialer_hangup_button.postDelayed({ finish() diff --git a/app/src/main/res/layout/activity_dialer.xml b/app/src/main/res/layout/activity_dialer.xml index f4d4c3e3..163e4d1d 100644 --- a/app/src/main/res/layout/activity_dialer.xml +++ b/app/src/main/res/layout/activity_dialer.xml @@ -47,6 +47,21 @@ app:layout_constraintTop_toBottomOf="@+id/dialer_big_name_number" tools:text="123 456 789"/> + +