繁体   English   中英

Android关闭屏幕

[英]Android Turn screen Off

我无法使用此代码关闭屏幕。 我使用了PowerManagerwl.release()方法,但它不起作用。 有人能告诉我一个例子吗?

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

这是我的功能的一部分:

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

我还在清单中添加了权限但没有结果。

我在堆栈溢出时找到了答案: 在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);
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);
}

如何检测用户和设备之间的切换

如果您不使用权限,程序将在尝试锁定时因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"))

请在继续唤醒锁之前检查此链接。 如果它没有解决您的问题,那么您可以继续唤醒锁定。

强制屏幕

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM