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"/>
+
+