我无法使用此代码关闭屏幕。我使用了PowerManager
和wl.release()
方法,但它不起作用。有人能告诉我一个例子吗?
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");
这是我职能的一部分:
stateString = "nextone";
if(stateString=="nextone"){
wl.release();
}
我还在清单中添加了权限但没有结果。
答案 0 :(得分:2)
我在堆栈溢出时找到了答案:Turn off screen on Android
从那里复制:
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
我尝试了这个,似乎有效。
答案 1 :(得分:0)
如果您不使用权限,程序将在尝试锁定时因SecurityException
而崩溃,因此这不是问题。正确的方法是:(在启动时获取WakeLock,在应用程序失去焦点时放弃它(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"))
答案 2 :(得分:0)
请在继续唤醒锁之前检查此链接。如果它不能解决您的问题,那么您可以继续进行唤醒锁定。
答案 3 :(得分:0)
您可以使用
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
答案 4 :(得分:0)
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);
}