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

相关推荐
智塑未来33 分钟前
自动化立体库工业无线通信:AGV、AMR、RGV、穿梭车、无人叉车、堆垛机全覆盖
运维·自动化
flower_drop1 小时前
基于 WebUSB 与 CDP:在浏览器端实现 Android 设备通信与无证书抓包实践
android·chrome·测试工具·adb·bug·edge浏览器
T1mzhou2 小时前
ARM64 Linux 6.10内核启动流程7-ioremap和readl writel
linux·服务器·c语言
Elastic 中国社区官方博客2 小时前
教程:使用 ES|QL 进行威胁狩猎
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索·安全威胁分析
bwz999@88.com2 小时前
Ubuntu Server 24.04 设置中文
linux·运维·ubuntu
fly-973 小时前
Ubuntu FTP/SFTP 报错:找不到匹配的 hostkey 算法 完整解决
linux·ubuntu
Cx330❀3 小时前
【Linux网络】网络层协议 IP :从网络层原理到 Linux 内核源码
linux·运维·服务器·网络·tcp/ip·ai·ai编程
撩得Android一次心动3 小时前
Jetpack Compose 知识点整理1【个人用】
android·学习·kotlin·android jetpack·compose
志栋智能3 小时前
运维超自动化的变更管理实践
运维·自动化