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()后一定要记得释放!

相关推荐
BullSmall10 小时前
规则+大模型混合评测:高效精准双保障
运维·自动化
网硕互联的小客服16 小时前
Linux服务器磁盘应该如何合理分区?
linux·运维·服务器
楚识科技16 小时前
合同比对全流程自动化:OCR识别+差异比对+法律风险字段抽取实战指南
运维·自动化·ocr
警醒与鞭策17 小时前
【无标题】
android·unity·性能优化·游戏引擎·perforce
代码方舟17 小时前
零信任架构实战:基于天远人企关联构建自动化供应链金融网关
运维·人工智能·架构·自动化
贵沫末18 小时前
Ubuntu——常用软件安装
linux·运维·ubuntu
Doraemomo18 小时前
Linux内核驱动开发——中断与定时器
linux·运维·驱动开发
2301_8084143818 小时前
Linux中动静态库的理解
linux·运维·服务器
传奇开心果编程18 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
分布式存储与RustFS19 小时前
模型 checkpoint 放对象存储:分片上传、断点续传与残留清理
运维·云原生·开源·对象存储·分布式存储·s3·性能基准