Wear OS应用如何在屏幕被遮挡时保持唤醒状态
Wear OS 运动计时应用屏蔽遮挡锁屏方案
你当前使用的FLAG_KEEP_SCREEN_ON仅能在设备未被遮挡时保持亮屏,无法覆盖Wear OS的遮挡锁屏机制。要解决这个问题,可通过PowerManager唤醒锁实现,具体步骤如下:
添加权限:在
AndroidManifest.xml中声明唤醒锁权限:<uses-permission android:name="android.permission.WAKE_LOCK" />实现唤醒锁逻辑:在Activity中初始化并管理唤醒锁,配合原有亮屏Flag使用:
private var wakeLock: PowerManager.WakeLock? = null override fun onStart() { super.onStart() // 保持屏幕常亮基础配置 window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) // 获取PowerManager实例并创建唤醒锁 val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager // SCREEN_BRIGHT_WAKE_LOCK:保持屏幕高亮,不受遮挡传感器影响 wakeLock = powerManager.newWakeLock( PowerManager.SCREEN_BRIGHT_WAKE_LOCK or PowerManager.ACQUIRE_CAUSES_WAKEUP, "MyTimerApp:WakeLockTag" ) wakeLock?.acquire() } override fun onStop() { super.onStop() // 必须释放唤醒锁,避免不必要的电池消耗 wakeLock?.release() wakeLock = null // 移除亮屏Flag window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) }关键说明:
SCREEN_BRIGHT_WAKE_LOCK类型的唤醒锁会强制保持屏幕高亮,无视遮挡传感器的触发信号,正好解决你遇到的衣袖遮挡锁屏问题。- 务必在Activity停止时释放唤醒锁,结合你提到的"短时间使用+可关闭设置",建议在计时器结束、用户退出页面或关闭功能时立即执行释放操作,控制电池消耗。
内容的提问来源于stack exchange,提问作者Paul Clarke
相关产品推荐
相关产品推荐

