2011-08-25 257 views
5

我無法使用此代碼關閉屏幕。我使用PowerManagerwl.release()方法,但它不起作用。有人可以給我看一個例子嗎?Android關閉屏幕

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen"); 

這是我的部分功能:

stateString = "nextone"; 
    if(stateString=="nextone"){   
    wl.release(); 
    } 

我也在清單,但沒有結果添加權限。

+1

那麼,與stateString你的比較永遠不會爲真。要比較java中的字符串,你應該使用'stateString.equals(「nextone」)'。 – Eloff

回答

0

如果您沒有使用權限,程序在嘗試鎖定時會崩潰,並顯示SecurityException,所以這不是問題。正確的方法是:(獲得激活鎖定在啓動,給它當應用程序失去焦點(在onPause)

//declared globally so both functions can access this 
public PowerManager.WakeLock wl; 

///////////onCreate 
//stop phone from sleeping 
PowerManager powman = (PowerManager) getSystemService(Context.POWER_SERVICE); 
wl = powman.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "NameOfLock"); 
wl.acquire(); 

///////////onPause 
wl.release(); 

//////////for completion's sake, onResume 
if(!wl.isHeld()){ 
    wl.acquire(); 
} 

然而,你的問題其實就是在這個檢查

if(stateString=="nextone")

這應該是if(stateString.equals("nextone"))

0

請先檢查此鏈接繼續喚醒鎖定。如果它不解決你的問題,那麼你可以繼續喚醒鎖。

Force Screen On

2

我找到了答案在這裏對堆棧溢出:Turn off screen on Android

從那裏複製:

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

我嘗試了這一點,它似乎工作。

+0

這解決了這個問題:getWindow()。addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); – ademar111190

+0

此代碼可以很好地關閉屏幕,但如何打開它? – astuter

+0

將params.screenBrightness設置爲介於0和1之間的值可以使亮度在0%和100%之間。將其設置爲負值可以實現自動亮度。我忘了我第一次看到這個,但我一直都在使用它。 – Gdalya

0

您可以使用

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