disable proximity sensor while external speaker is enabled

This commit is contained in:
Mysochenko Yuriy 2022-05-04 13:18:04 +03:00
parent c7c2d9108a
commit 72e547228d
2 changed files with 36 additions and 5 deletions

View File

@ -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)

View File

@ -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
}