android 唤醒和解锁屏幕
16lz
2022-05-24
/** * 唤醒手机屏幕并解锁 */ public void wakeUpAndUnlock() { // 获取电源管理器对象 PowerManager pm = (PowerManager) getApplicationContext() .getSystemService(Context.POWER_SERVICE); boolean screenOn = pm.isScreenOn(); Log.d("WakeScreen0","screenOn: " + screenOn); if (!screenOn) { // 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag @SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wl = pm.newWakeLock( PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright"); wl.acquire(10000); // 点亮屏幕 wl.release(); // 释放 } // 屏幕解锁 KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext() .getSystemService(KEYGUARD_SERVICE); KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("unLock"); // 屏幕锁定// keyguardLock.reenableKeyguard(); keyguardLock.disableKeyguard(); // 解锁 unLockScreen(); } private void unLockScreen(){ final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); }
/** * 唤醒手机屏幕并解锁 */ public void wakeUpAndUnlock(Activity activity) { Window win = activity.getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); PowerManager pm = (PowerManager) activity.getSystemService(POWER_SERVICE); @SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wakelock = pm.newWakeLock( PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "xx"); wakelock.acquire(); wakelock.release(); KeyguardManager keyguardManager = (KeyguardManager) activity.getApplicationContext() .getSystemService(KEYGUARD_SERVICE); if (mHomeActivity == null) return; keyguardManager.requestDismissKeyguard(mHomeActivity, new KeyguardManager.KeyguardDismissCallback() { @Override public void onDismissError() { super.onDismissError(); Log.d("xxx-->", "1 onDismissError"); } @Override public void onDismissSucceeded() { super.onDismissSucceeded(); Log.d("xxx-->", "1 onDismissSucceeded"); } @Override public void onDismissCancelled() { super.onDismissCancelled(); Log.d("xxx-->", "1 onDismissCancelled"); } }); if (mRemoteActivity == null) return; keyguardManager.requestDismissKeyguard(mRemoteActivity, new KeyguardManager.KeyguardDismissCallback() { @Override public void onDismissError() { super.onDismissError(); Log.d("xxx-->", "2 onDismissError"); } @Override public void onDismissSucceeded() { super.onDismissSucceeded(); Log.d("xxx-->", "2 onDismissSucceeded"); } @Override public void onDismissCancelled() { super.onDismissCancelled(); Log.d("xxx-->", "2 onDismissCancelled"); } }); }
转载:
https://blog.csdn.net/xinpengfei521/article/details/73065769/
http://www.voidcn.com/article/p-qvvwwkxf-hy.html
更多相关文章
- 软键盘弹出影响布局
- Android(安卓)中获取屏幕长度及宽度
- Android如何截取当前View 为图片
- Android: 屏幕截图
- Android待机流程分析
- Android(安卓)Launcher 分析 .
- 【Android】android开发---实现屏幕旋转的两种方法
- android 实现屏幕截图
- android 当环境配置发生变化 例如语言 屏幕变化