如前一篇博文所分析,我们可以使用广播的形式在快速按下两次音量下键的时候发出广播,以方便客户端进行捕捉.既然有两种方式可以实现该Issue那么哪种方式是首选呢?     我个人推荐使用启动服务的方式,这样的话可以避免多次连续按键导致重复发送广播,而使用服务不会重复启动服务. 具体实现方式如下: /framework/base/policy/src/com/android/policy/impl/PhoneWindowManager.java private long lastTime=0;…
    如前一篇博文所分析.我们能够使用广播的形式在高速按下两次音量下键的时候发出广播,以方便client进行捕捉. 既然有两种方式能够实现该Issue那么哪种方式是首选呢?     我个人推荐使用启动服务的方式,这种话能够避免多次连续按键导致反复发送广播.而使用服务不会反复启动服务. 详细实现方式例如以下: /framework/base/policy/src/com/android/policy/impl/PhoneWindowManager.java private long lastTi…
思想的实现:     WindowManagerService循环读取下面的关键信息和分发形式.在PhoneWindowManager.interceptKeyBeforeQueueing方法中进行消息的过滤. 因此该实现方式为在消息分发前的interceptKeyBeforeQueueing方法中监听当前按键为音量下键,假设当前状态为锁屏状态.并按键为音量下键,且两次按键间隔时间小于800ms时发送抓拍广播--"com.bill.snapshot". 详细实现方式例如以下: /fra…
研究这个问题的初衷在于项目中碰到了一个问题:横屏的时候灭屏再亮屏,亮屏的时候用户能够清晰的看到先启动竖屏(过程1)再切换到横屏的过程,因为灭屏的时候onSaveInstanceState()保存的时横屏时的状态信息,因此过程1竖屏会使用到横屏的状态參数并且这一过程用户是可见的.因此会导致一些意想不到的Bug的出现. 探究使用的实例中我用了屏幕的横竖屏和宽这两个配置信息来说明生命周期中此时系统所知道的屏幕的客观状态,注意这个客观状态与我们在onSaveInstanceState()中要保存的"状态…
本篇从按下power按键后,按键事件从InputManagerService 传到PhoneWindowManager.java开始分析power 按键做屏幕亮灭过程的分析,关于power 按键的其他行为参考另一篇博文(Android 7.0 Power 按键处理流程) 言归正传,本篇涉及的几个模块(文件)如下,先做个简单的介绍有个直观大概的了解,方便后面流程细节的理解. Ø  PowerManagerService.Java:(/frameworks/base/services/core/ja…
Android 锁屏状态/锁屏密码等相关 开始是在设备管理器方面找方法,但一直不行,可能在公司系统组同事的帮助下,知道KeyguardManager这个类 /** * 当前系统锁屏是否有密码 * @param mContext * @return */ public boolean hasScreenLockPwd(Context mContext){ KeyguardManager keyguardManager = (KeyguardManager )mContext.getSystemSe…
实现锁屏的方式有多种(锁屏应用.悬浮窗.普通Activity伪造锁屏等等).但国内比较主流并且被广泛应用的Activity伪造锁屏方式. 实例演示图片如下: 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 (二) [Android] Android 锁屏实现与总结 (三) 代码文件地址: https://github.com/wukong1688/Android-BaseLockScreen 1.广播注册 2.A…
本篇注意接着上篇[Android7.0 PowerManagerService 之亮灭屏(一)]继续分析量灭屏的流程,这篇主要分析PMS的状态计算和更新流程,也是PMS中最为重要和复杂的一部分电源状态管理. 接上篇继续,在Notifier的广播处理完毕后就会调用PMS的内部函数updatePowerStateLocked()来更新全局电源状态.         任何涉及到电源的操作(如量灭屏和应用获取wakeLock锁等)PMS都会调用updatePowerStateLocked()来更新电源的…
权限                                                                                             <uses-permission android:name="android.permission.DEVICE_POWER"/> <uses-permission android:name="android.permission.WAKE_LOCK"/>…
上接: [Android] Android 锁屏实现与总结 (一) 系列文章链接如下: [Android] Android 锁屏实现与总结 (一) [Android] Android 锁屏实现与总结 (二) [Android] Android 锁屏实现与总结 (三) 代码文件地址: https://github.com/wukong1688/Android-BaseLockScreen 2.Activity设置 锁屏Activity LockScreenActivity.java package…