toggle proximity sensor with the external speaker
This commit is contained in:
parent
72e547228d
commit
0881127f9a
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
Loading…
Reference in New Issue