如何基于接近传感器关闭屏幕?

How to turn screen off based on proximity sensor?

最初的想法是重新创建基本的 phone 行为,即当您靠近 phone 时关闭屏幕并在您远离时重新打开它。

我花了很多时间试图回答这个问题,但没有找到任何简单的解决方案,我相信在这里回答可能会对某些人有所帮助。我不会展示如何处理调用状态,因为此解决方案允许您在需要时 enable/disable 行为。

示例项目可以在 GitHub

上找到

首先你需要在AndroidManifest.xml声明你正在使用Wakelock :

<uses-permission android:name="android.permission.WAKE_LOCK" />

然后在您的 activity 中导入 PowerManager

import android.os.PowerManager

声明你的属性

private lateinit var powerManager: PowerManager
private lateinit var lock: PowerManager.WakeLock

在 onCreate 方法中实例化它们: (用另一个独特的标签替换“simplewakelock:wakelocktag”)

powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
lock = powerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,"simplewakelock:wakelocktag")

然后你可以启用和禁用锁定(和行为)使用:

// Enable : Acquire the lock if it was not already acquired
if(!lock.isHeld) lock.acquire()

// Disable : Release the lock if it was not already released
if(lock.isHeld) lock.release()

放在你想放的地方就行了,不用的时候不要忘记释放锁(onPause是个好地方),否则即使你切换app也会继续。