如何防止在执行活动期间关闭android设备的屏幕?

问题描述:

我有一个Activity,通常需要一些时间来观看屏幕,而无需与屏幕交互。如何防止在执行活动期间关闭android设备的屏幕?

问题是,屏幕关闭,就像almos任何其他应用程序。 我想阻止我的Activity自动关闭,就像Dolphin HD一样(如果您从设置菜单进行配置)。

我想让用户关闭屏幕按通常的阻止按钮,但防止在我的Activity设备的自动阻止。

我该如何做到这一点?

Thanx。

+0

你正在寻找的东西是[wakelock](http://developer.android.com/reference/android/os/PowerManager.html)。 – 2012-02-17 21:52:25

+1

@alextsc:实际上,对于用户界面,有一个更好的答案。 – CommonsWare 2012-02-17 21:53:36

android:keepScreenOn="true"添加到此活动的布局XML资源中的某个窗口小部件。只要该小部件在屏幕上可见,屏幕就不会自动关闭。

编辑:

一个WakeLock,通过其他的答案的建议,在技术上将工作。但是,你必须手动释放WakeLock(如果你搞砸了,屏幕会保持很长时间)。而且,由于您可能会将搞乱,您需要WAKE_LOCK权限。使用keepScreenOn可以避免所有这些。

+0

你的意思是小部件的意义“小部件组件”?还是一些看法? – Gangnus 2012-02-17 22:00:54

+0

Thanx的答案,工作得很好:)我认为wakelock可能是一个好方法,但这一个更容易。 – Alex 2012-02-17 22:29:27

+1

我试图将这个属性添加到一个视图中,该视图位于最初为GONE的片段内,并被应用程序中的代码设置为可见。这不起作用:屏幕仍然关闭。 “noelicus”的答案效果很好。 – treesAreEverywhere 2014-05-12 14:33:22

您需要将WAKE_LOCK添加到您的清单中,并根据需要在您的应用程序中进行设置和删除。 看到谷歌文档这里PowerManager.WAKE_LOCK

http://developer.android.com/reference/android/os/PowerManager.html

+0

Thanx的答案,这是有用的 – Alex 2012-02-17 22:31:49

您可能需要使用唤醒锁,以防止屏幕off.Pleas参考http://developer.android.com/reference/android/os/PowerManager.WakeLock.html

+0

Thanx的答案和链接到文档,其总是很好理解如何做这种事情,但这次我想我会使用@CommonsWare解决方案:P – Alex 2012-02-17 22:31:29

要改变它的飞行做到这一点:

if (keepScreenOn) 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
else 
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);