toggle proximity sensor with the external speaker

This commit is contained in:
Mysochenko Yuriy 2022-05-04 21:14:20 +03:00
parent 72e547228d
commit 0881127f9a
2 changed files with 18 additions and 44 deletions

View File

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

View File

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