Android 9休眠时任意键唤醒屏幕

Android 9休眠时任意键唤醒屏幕

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

bash 复制代码
@Override
    public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
        if (!mSystemBooted) {
            // If we have not yet booted, don't let key events do anything.
            return 0;
        }

        Log.d(TAG, "interceptKeyBeforeQueueing" );

        PowerManager powerManager=(PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
        boolean isScreenOn =powerManager.isInteractive();//flag为true,屏幕状态为黑屏或亮屏未解锁,反之为亮屏。
        Log.d(TAG, "interceptKeyBeforeQueueing isScreenOn:"+isScreenOn );
        if(!isScreenOn){
            PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.SCREEN_BRIGHT_WAKE_LOCK
                                                | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE,getClass().getName());
            wakeLock.setReferenceCounted(false);
            if (!powerManager.isInteractive() ||(wakeLock != null && !wakeLock.isHeld())) {
                wakeLock.acquire();
                wakeLock.release();
            }
        }

        final boolean interactive = (policyFlags & FLAG_INTERACTIVE) != 0;
        final boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
        final boolean canceled = event.isCanceled();
        final int keyCode = event.getKeyCode();

acquire()和release()要成对调用,如果只申请了亮屏,没有释放,屏幕会一直处于亮屏状态。所以调用acquire()后一定要记得释放!

相关推荐
Decay__15 小时前
12_MySQL InnoDB 内存与锁调优 —— Buffer Pool、redo log、隔离级别与锁等待
运维·数据库·sql·mysql·架构
好的佩奇16 小时前
Dart 之扩展类型
android·flutter·dart
java_logo17 小时前
Docker 部署 Dify:轻松搭建 LLM 应用开发平台
运维·docker·容器
方便面不加香菜18 小时前
Docker Container -- 综合实战案例详解
运维·docker·容器
alexhilton18 小时前
2027 Android 开发者路线图:学习、面试与 AI
android·kotlin·android jetpack
LongRunning19 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
海洋之恒19 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·自动化·github
灿飞屋20 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
迪康coolmu20 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
疯华整猫21 小时前
我用 Trae 把 Android 内存账重算了一遍
android·性能优化·源码