Android关闭屏幕
我无法使用此代码关闭屏幕。我使用PowerManager
和wl.release()
方法,但它不起作用。有人可以给我看一个例子吗?Android关闭屏幕
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");
这是我的部分功能:
stateString = "nextone";
if(stateString=="nextone"){
wl.release();
}
我也在清单,但没有结果添加权限。
如果您没有使用权限,程序在尝试锁定时会崩溃,并显示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"))
我找到了答案在这里对堆栈溢出:Turn off screen on Android
从那里复制:
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
我尝试了这一点,它似乎工作。
这解决了这个问题:getWindow()。addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); – ademar111190
此代码可以很好地关闭屏幕,但如何打开它? – astuter
将params.screenBrightness设置为介于0和1之间的值可以使亮度在0%和100%之间。将其设置为负值可以实现自动亮度。我忘了我第一次看到这个,但我一直都在使用它。 – Gdalya
您可以使用
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
try
{
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 1000*15);
}
catch (NumberFormatException e)
{
Log.e("aa", "could not persist screen timeout setting", e);
}
那么,与stateString你的比较永远不会为真。要比较java中的字符串,你应该使用'stateString.equals(“nextone”)'。 – Eloff