2011-08-25 151 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);