保持手机屏幕常亮无需权限
最近遇到一个项目,运行起来后发现手机屏幕一直常亮,网上搜到有两种方法,但是都没有解决问题
第一种方法:
大家想一想,我们在android里那个地方老是常定义权限呀,有了这个提示,大家就会想到是哪个文件了吧,AndroidManifest.xml:我们要在这个文件里定义一下权限就可以实现我们的手机屏幕保持常亮了。这个方法也是最简单的一个方法,那么我们下面就来看看它的代码:
Java代码:
01.<uses-permission android:name="android.permission.WAKE_LOCK" />
01.PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
02.PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
03.// in onResume() call
04.
05.mWakeLock.acquire();
06.// in onPause() call
07.mWakeLock.release();
我们再在main代码中写上PowerManager.SCREEN_DIM_WAKE_LOCK,这个是我们android系统提供给我们的,我们要把它用上,这句代码的意思是长亮的意思,这样我们就可以实现了,因为我们在上面已经定义了权限。这样我们就有权利使用这个长亮属性。这就是第一种方法。
第二种方法:
第二种我们不怎么常用,但有的时候我们也能用得到,我们就来讲讲这第二种方法吧。这种方法我们就在main代码中做一个方法,这个方法就是onCreate(Bundle icicle)我们要在括号里写上参数,这样我们才可以用这个参数,我们在super.onCreate(icicle);这个句的意思就是得到参数,我们也就是实现完了,最后我们在找到LayoutParams.FLAG_KEEP_SCREEN_ON这个android系统提供给我们的属性,这样我们第二个方法就完事了,这个方法就是不用在AndroidManifest.xml:里定义权限了。这样也不比较麻烦,但有时会把参数给忘了,这个是重点,因为这样我们也实现不了效果,这么说的,两个方法有利有弊,用的时候就要看开发者自己的喜好了,喜好哪个就用哪个。Java代码:
01.@Override
02.protected void onCreate(Bundle icicle) {
03.super.onCreate(icicle);
04.
05.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
06.}
以上两种都没有解决我屏幕常亮不待机的问题
在纠结了一天多以后我决定写个Demo验证一下,就把原来项目主要的代码提取出来,测试一下,Demo写好后发现还是常亮,我就开始怀疑是不是android源生bug,在反复纠结之后我在代码中找到了这么一句,view.setKeepScreenOn(true)删掉后重测,到15秒后屏幕恢复待机,瞬间有种想死的感觉,简直太让人蛋疼了,解释一下setKeepScreenOn(true),
“请将屏幕一直保持为开启状态,以便校准。” true, 有校准之意。 并且 View.setKeepScreenOn(true) 需要 "android.permission.WAKE_LOCK" 权限吗? 我目前的推断是“G1 (cupcake 1.5)上不需要,emulator 和其他设备/平台可能需要”。如果你的程序也调用了 View.setKeepScreenOn() 并且出现了莫名其妙的
“Force close” 的话,不妨试试加上这个 permission。 到此蛋疼的问题终于解决了
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。