gpt4 book ai didi

android - 接近唤醒锁并不总是重新打开屏幕

转载 作者:行者123 更新时间:2023-12-04 06:17:25 24 4
gpt4 key购买 nike

我正在尝试创建一个自定义手机应用程序,我尝试实现的功能之一是在手机靠近脸部时关闭屏幕以避免意外触摸。

我在 android 文档中阅读了有关接近传感器的信息,并看到这个确切的功能是通过 PROXIMITY_SCREEN_OFF_WAKE_LOCK 实现的。唤醒锁。

我创建了一个测试应用程序来单独测试此功能,其中包括两个按钮:一个用于要求唤醒锁定,一个用于释放它。

class MainActivity: AppCompatActivity() {

private lateinit var mPowerManager:PowerManager
private lateinit var mWakeLock:PowerManager.WakeLock

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

mPowerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
mWakeLock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "TEST_PROXIMITY_SENSOR_TAG:wake_lock_tag")

button_activate.setOnClickListener {
if (!mWakeLock.isHeld)
mWakeLock.acquire()
}

button_deactivate.setOnClickListener {
if (mWakeLock.isHeld)
mWakeLock.release()
}
}
}

并将以下 WakeLock 权限添加到我的 AndroidManifest.xml
<uses-permission android:name="android.permission.WAKE_LOCK" />

在大多数情况下,此代码工作正常。但是,有时当我解锁接近传感器时,屏幕不会在 10-30 秒内打开,而不是立即打开。

起初,我虽然这是我正在测试的物理设备(Nexus 5,android Pie)的硬件问题,但我已经在 Activity 中添加了接近传感器值的额外日志记录。
override fun onCreate(savedInstanceState: Bundle?) {

...

mSensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)

mSensorManager.registerListener(
this as SensorEventListener,
mSensor,
SensorManager.SENSOR_DELAY_NORMAL
)
}

override fun onSensorChanged(event: SensorEvent?) {
Log.d(TAG,"${event?.values?.get(0)}")
}

传感器报告了正确的测量值。当WakeLock错误地关闭屏幕时,传感器报告“远”。

我已经使用默认拨号器应用程序测试了相同的场景,但它工作正常。我的实现有什么问题?我查看了 AOSP 拨号器代码和 Signal 的 android 应用程序,但找不到明显的区别。

最佳答案

没有完整代码很难诊断,但请尝试检查您的认识是否正确here .还要检查所有标志和延迟,如 here 所述。 .最后,您可以运行示例 app .

关于android - 接近唤醒锁并不总是重新打开屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58672669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com