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..5e41097d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt @@ -22,10 +22,7 @@ import com.simplemobiletools.commons.helpers.isOreoMr1Plus import com.simplemobiletools.commons.helpers.isOreoPlus import com.simplemobiletools.dialer.App import com.simplemobiletools.dialer.R -import com.simplemobiletools.dialer.extensions.addCharacter -import com.simplemobiletools.dialer.extensions.audioManager -import com.simplemobiletools.dialer.extensions.config -import com.simplemobiletools.dialer.extensions.getHandleToUse +import com.simplemobiletools.dialer.extensions.* import com.simplemobiletools.dialer.helpers.CallContactAvatarHelper import com.simplemobiletools.dialer.helpers.CallManager import com.simplemobiletools.dialer.models.CallContact @@ -466,7 +463,8 @@ class CallActivity : SimpleActivity() { } private fun initProximitySensor() { - if (!config.disableProximitySensor && (proximityWakeLock == null || proximityWakeLock?.isHeld == false)) { + if (!audioManager.hasExternalSpeaker() && !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) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/AudioManager.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/AudioManager.kt new file mode 100644 index 00000000..10c0f46d --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/AudioManager.kt @@ -0,0 +1,33 @@ +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 +}