2012-02-17 88 views
22

我有一個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

回答

64

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

27

要改變它的飛行做到這一點:

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