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 08d903e5..efd276bb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt @@ -80,9 +80,7 @@ class CallActivity : SimpleActivity() { override fun onDestroy() { super.onDestroy() CallManager.unregisterCallback(callCallback) - if (proximityWakeLock?.isHeld == true) { - proximityWakeLock!!.release() - } + disableProximitySensor() } override fun onBackPressed() { @@ -283,6 +281,12 @@ class CallActivity : SimpleActivity() { val newRoute = if (isSpeakerOn) CallAudioState.ROUTE_SPEAKER else CallAudioState.ROUTE_EARPIECE CallManager.inCallService?.setAudioRoute(newRoute) call_toggle_speaker.contentDescription = getString(if (isSpeakerOn) R.string.turn_speaker_off else R.string.turn_speaker_on) + + if (isSpeakerOn) { + disableProximitySensor() + } else { + enableProximitySensor() + } } private fun toggleMicrophone() { @@ -376,7 +380,7 @@ class CallActivity : SimpleActivity() { } private fun initOutgoingCallUI() { - initProximitySensor() + enableProximitySensor() incoming_call_holder.beGone() ongoing_call_holder.beVisible() } @@ -386,7 +390,7 @@ class CallActivity : SimpleActivity() { } private fun callStarted() { - initProximitySensor() + enableProximitySensor() incoming_call_holder.beGone() ongoing_call_holder.beVisible() callDurationHelper.onDurationChange { @@ -409,9 +413,7 @@ class CallActivity : SimpleActivity() { private fun endCall() { CallManager.reject() - if (proximityWakeLock?.isHeld == true) { - proximityWakeLock!!.release() - } + disableProximitySensor() if (isCallEnded) { finishAndRemoveTask() @@ -465,11 +467,17 @@ class CallActivity : SimpleActivity() { } } - private fun initProximitySensor() { + private fun enableProximitySensor() { if (!config.disableProximitySensor && (proximityWakeLock == null || proximityWakeLock?.isHeld == false)) { val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager proximityWakeLock = powerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "com.simplemobiletools.dialer.pro:wake_lock") proximityWakeLock!!.acquire(60 * MINUTE_SECONDS * 1000L) } } + + private fun disableProximitySensor() { + if (proximityWakeLock?.isHeld == true) { + proximityWakeLock!!.release() + } + } }