From 0881127f9a4b13a07a638ec1af371018607376be Mon Sep 17 00:00:00 2001 From: Mysochenko Yuriy Date: Wed, 4 May 2022 21:14:20 +0300 Subject: [PATCH] toggle proximity sensor with the external speaker --- .../dialer/activities/CallActivity.kt | 29 +++++++++------- .../dialer/extensions/AudioManager.kt | 33 ------------------- 2 files changed, 18 insertions(+), 44 deletions(-) delete mode 100644 app/src/main/kotlin/com/simplemobiletools/dialer/extensions/AudioManager.kt 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 5e41097d..a0d02314 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt @@ -77,9 +77,7 @@ class CallActivity : SimpleActivity() { override fun onDestroy() { super.onDestroy() CallManager.unregisterCallback(callCallback) - if (proximityWakeLock?.isHeld == true) { - proximityWakeLock!!.release() - } + disableProximitySensor() } override fun onBackPressed() { @@ -280,6 +278,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() { @@ -373,7 +377,7 @@ class CallActivity : SimpleActivity() { } private fun initOutgoingCallUI() { - initProximitySensor() + enableProximitySensor() incoming_call_holder.beGone() ongoing_call_holder.beVisible() } @@ -383,7 +387,7 @@ class CallActivity : SimpleActivity() { } private fun callStarted() { - initProximitySensor() + enableProximitySensor() incoming_call_holder.beGone() ongoing_call_holder.beVisible() callDurationHelper.onDurationChange { @@ -406,9 +410,7 @@ class CallActivity : SimpleActivity() { private fun endCall() { CallManager.reject() - if (proximityWakeLock?.isHeld == true) { - proximityWakeLock!!.release() - } + disableProximitySensor() if (isCallEnded) { finishAndRemoveTask() @@ -462,12 +464,17 @@ class CallActivity : SimpleActivity() { } } - private fun initProximitySensor() { - if (!audioManager.hasExternalSpeaker() && !config.disableProximitySensor && - (proximityWakeLock == null || proximityWakeLock?.isHeld == false)) { + 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() + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/AudioManager.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/AudioManager.kt deleted file mode 100644 index 10c0f46d..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/AudioManager.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.simplemobiletools.dialer.extensions - -import android.media.AudioDeviceInfo -import android.media.AudioManager -import com.simplemobiletools.commons.helpers.isOreoPlus -import com.simplemobiletools.commons.helpers.isSPlus - -fun AudioManager.hasExternalSpeaker(): Boolean { - val audioDevices = getDevices(AudioManager.GET_DEVICES_INPUTS) - if (isSPlus()) { - if (audioDevices.find { - it.type == AudioDeviceInfo.TYPE_BLE_HEADSET || - it.type == AudioDeviceInfo.TYPE_BLE_SPEAKER - } != null) { - return true - } - } - if (isOreoPlus()) { - if (audioDevices.find { - it.type == AudioDeviceInfo.TYPE_USB_HEADSET - } != null) { - return true - } - } - if (audioDevices.find { - it.type == AudioDeviceInfo.TYPE_WIRED_HEADSET || - it.type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO || - it.type == AudioDeviceInfo.TYPE_BLUETOOTH_A2DP - } != null) { - return true - } - return false -}