本文仅在Android4.0测试过,其余平台未知是否可行。
最近在写一个应用,想实现类似闹钟提醒界面,在网上找了关于Android屏幕点亮的文章,网上关于点亮的代码如下:
PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE);
//获取电源管理器对象
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");
//获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
wl.acquire();
//点亮屏幕
KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
//得到键盘锁管理器对象
KeyguardLock kl = km.newKeyguardLock("unLock");
//参数是LogCat里用的Tag
kl.disableKeyguard();
kl.reenableKeyguard();
//重新启用自动加锁
wl.release();
//释放
PowerManager需要的权限
<uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
代码摘自
http://www.pocketdigi.com/20110713/386.html
但是把这些代码打进去后发现Android已经不推荐用KeyguardLock,Android api推荐调用Activity的addFlags方法设置WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED属性,这种方法好处有:不需要其他权限,二,当你应用程序所有Activity finish后,不需要重新启动自动加锁。
最后Android 点亮屏幕最重要一点:PowerManager.WakeLock使用完成后,必须release()。