Skip to content

Commit 2ef71bf

Browse files
committed
Enable proximity sensor by default
1 parent 7e69b87 commit 2ef71bf

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import android.media.AudioFocusRequest
1515
import android.media.AudioManager
1616
import android.os.Build
1717
import android.os.Bundle
18+
import android.os.PowerManager
1819
import android.util.Rational
1920
import android.view.WindowManager
2021
import android.webkit.PermissionRequest
@@ -31,6 +32,7 @@ import androidx.compose.runtime.mutableStateOf
3132
import androidx.compose.runtime.rememberUpdatedState
3233
import androidx.core.app.PictureInPictureModeChangedInfo
3334
import androidx.core.content.IntentCompat
35+
import androidx.core.content.getSystemService
3436
import androidx.core.util.Consumer
3537
import androidx.lifecycle.Lifecycle
3638
import io.element.android.features.call.api.CallType
@@ -81,6 +83,12 @@ class ElementCallActivity :
8183

8284
private var eventSink: ((CallScreenEvents) -> Unit)? = null
8385

86+
private val proximitySensorWakeLock: PowerManager.WakeLock? by lazy {
87+
getSystemService<PowerManager>()
88+
?.takeIf { it.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK) }
89+
?.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "$packageName:ProximitySensorCallWakeLock")
90+
}
91+
8492
override fun onCreate(savedInstanceState: Bundle?) {
8593
super.onCreate(savedInstanceState)
8694

@@ -94,6 +102,13 @@ class ElementCallActivity :
94102
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
95103
)
96104

105+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
106+
setShowWhenLocked(true)
107+
} else {
108+
@Suppress("DEPRECATION")
109+
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
110+
}
111+
97112
setCallType(intent)
98113
// If presenter is not created at this point, it means we have no call to display, the Activity is finishing, so return early
99114
if (!::presenter.isInitialized) {
@@ -132,6 +147,26 @@ class ElementCallActivity :
132147
}
133148
}
134149

150+
override fun onStart() {
151+
super.onStart()
152+
153+
if (proximitySensorWakeLock?.isHeld == false) {
154+
val proximitySensorEnabled = proximitySensorWakeLock?.acquire()
155+
Timber.d("Proximity sensor wake lock acquired: $proximitySensorEnabled")
156+
} else {
157+
Timber.d("Proximity sensor wakelock does not exist or is already held")
158+
}
159+
}
160+
161+
override fun onStop() {
162+
super.onStop()
163+
164+
if (proximitySensorWakeLock?.isHeld == true) {
165+
proximitySensorWakeLock?.release()
166+
Timber.d("Proximity sensor wake lock released")
167+
}
168+
}
169+
135170
private fun setCallIsActive() {
136171
requestAudioFocus()
137172
CallForegroundService.start(this)

0 commit comments

Comments
 (0)