PowerManager.WakeLock请求锁时强制打开Screen和keyboardlight导致按Power键,系统也不会进Sleep问题!
来源:互联网 发布:mac wav 转 mp3 编辑:程序博客网 时间:2024/05/29 12:38
写一个Activity启动该服务即可,用一个线程开启服务,要是黑屏的状态下启动才有效果。主要代码如下:
/获取系统服务
KeyguardManager mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
//初始化键盘锁,可以锁定或解开键盘锁
KeyguardLock mKeyguardLock = mKeyguardManager.newKeyguardLock("");
mKeyguardLock.disableKeyguard();
//获取电源的服务
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
//点亮亮屏
WakeLock wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
ACQUIRE_CAUSES_WAKEUP:一旦有请求锁时强制打开Screen和keyboardlight ON_AFTER_RELEASE:在释放锁时resetactivity timer 如果申请了partialwakelock,那么即使按Power键,系统也不会进Sleep,如Music播放时 如果申请了其它的wakelocks,按Power键,系统还是会进Sleep。此时要怎么解决呢?个人建议可以在启动Service时,注册一个广播,广播的onReceive方法中通过ComponentName类跳转到一个Activity,让这个Activity在锁屏界面上方提醒(点亮屏幕)!
onReceive方法主要代码://FILE_PACKAGE变量为跳转Activity的包名,FILE_PACKAGE_CLASS变量为跳转Activity的类名
Intent intent = new Intent();
ComponentName cn = new ComponentName(FILE_PACKAGE,FILE_PACKAGE_CLASS );
intent.setComponent(cn);
startActivity(intent);
Activity中的主要代码:
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
winParams.flags |= (WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
private void acquireWakeLock() {
if (mWakelock == null) {
Log.i(TAG, "Activity begin start ");
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakelock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, this.getClass().getCanonicalName());
mWakelock.acquire();
}
}
private void releaseWakeLock() {
if (mWakelock != null && mWakelock.isHeld()) {
mWakelock.release();
mWakelock = null;
}
}
@Override
protected void onResume() {
super.onResume();
acquireWakeLock();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
protected void onPause() {
super.onPause();
......
releaseWakeLock();
}
@Override
protected void onStop() {
super.onStop();
}
- PowerManager.WakeLock请求锁时强制打开Screen和keyboardlight导致按Power键,系统也不会进Sleep问题!
- PowerManager和PowerManager.WakeLock
- PowerManager和PowerManager.WakeLock
- PowerManager和PowerManager.WakeLock详解
- android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- 安卓开发----------------PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- Android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- android的PowerManager和PowerManager.WakeLock
- oracle 一行列转换问题
- MVC设计模式概览
- android usb挂载分析----vold启动
- Nutch如何读取CrawlDb中的<Text,CrawlDatum>键值对
- 7月份37个新鲜的jQuery图片内容滑块和幻灯片出炉啦
- PowerManager.WakeLock请求锁时强制打开Screen和keyboardlight导致按Power键,系统也不会进Sleep问题!
- 基于WebGrid的文本框下拉选择
- 远程下载音乐为手机铃声核心代码(RingtoneManager与铃声存放路径)
- apache 配置 ssl
- 黑马程序员_sql一些知识点总结
- android usb挂载分析---vold处理内核消息
- Lua性能优化技巧
- oracle row_number()函数的小实例
- windows2003升级至centos5.7 后 ORA-12519: TNS:no appropriate service handler found