2012-07-05 95 views

回答

19

必须声明该使用许可权的AndroidManifest:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 

并在代码中的活动:

PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock"); 
wakeLock.acquire(); 

只要记住释放此锁,当你的应用程序被暂停或销毁做此:

wakeLock.release(); 

通常,建议拨打获取方法onResume()您的活动和版本方法在onPause()。这样我们可以保证我们的应用程序在暂停或恢复的情况下仍然表现良好。

+3

FULL_WAKE_LOCK已被弃用,FLAG_KEEP_SCREEN_ON现在去:) – 2015-10-01 21:03:07

4
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); 
lock.disableKeyguard(); 

在androidmanifest:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> 

OR

关注this link

20

另一种方式来保持屏幕锁定,而不必要求准许参加manifiest是:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

您是否正在UI线程中执行长时间加载过程?有些东西看起来并不正确 - 如果进程太长以至于屏幕锁定超时并且您的进程结束,那么可能需要进入后台服务。

+0

我如何可以禁用这个标志的方式再次如果我想要? – 2016-01-28 12:13:37

+1

尝试getWindow()。clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); – barry 2016-06-09 09:23:22

0

一个尚未提到有趣的选项是

View#setKeepScreenOn(boolean onOff) 

方法。这实际上可以在应用运行时期间的任何时刻动态地使用,例如,设置取决于应用程序的状态

-1

去用钥匙防护代码的工作完美,画面模式

刚刚在Android清单文件中onCreate方法的代码粘贴在您的mainactivity文件和 权限

0

下面一行使您的手机设置为ON时,应用程序是在前台

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

下面的说明让我们禁用ŧ他在锁定按钮被按下时锁定屏幕。KeyguardLock类是在API级别13

/*onCreate*/ 
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); // Deprecated :/ 
lock.disableKeyguard(); 

而在你的清单弃用:因为API 17

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>