2013-01-24 55 views
2

我嘗試了好幾種解決方案發布,試圖關閉屏幕在Android,包括:讓屏幕關閉全屏Android應用

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

導致沒有變化。

WindowManager.LayoutParams param = getWindow().getAttributes(); 
param.screenBrightness = 0; 
param.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON; 
getWindow().setAttributes(param); 

導致輕微變暗屏幕(在Android 4.2.1)

//Release all previously held WakeLocks 
if (mWakeLock.isHeld()) { 
    mWakeLock.release(); 
} 
//Then acquire a partial wake lock (which should allow the display to turn off) 
PowerManager powerMan = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
mWakeLock = powerMan.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Partial WakeLock"); 
mWakeLock.acquire(); 

導致沒有變化。

最後,非法

PowerManager powerMan = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); 
powerMan.goToSleep(1000); 

這顯然不起作用,因爲:

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

是不允許的(非系統應用)。

我假設這些問題是因爲我的應用程序是android:theme="@style/FullscreenTheme"

是否有任何可行的解決方案,讓全屏應用程序去睡覺而不犧牲美妙的全屏主題?

+1

「全屏」與保持屏幕無關。如果您不強制屏幕保持打開狀態,則會根據用戶的設置自行關閉屏幕。 – CommonsWare

+0

屏幕被設置爲15秒超時,在插入電源關閉時保持清醒狀態,並且在任何XML文檔中均無法找到android:keepScreenOn =「true」。 我不確定還有什麼問題:/ – Jono

+0

你在測試什麼設備? – CommonsWare

回答

0

在寫了一個簡單的答案來嘗試發佈到@CommonsWare後,我發現問題沒有持續。

我梳理了我的代碼幾次,仍然沒有找到任何會導致屏幕保持清醒的狀態。我從零開始重寫了整個應用程序(總是一個很好的練習,結束了更清潔的邏輯),問題就消失了。

獲得的經驗 - 如果所有其他方面都失敗了,請重新寫入所有內容。這本身是一個有用的練習:)