【问题标题】:Android Turn screen OffAndroid 关闭屏幕
【发布时间】:2011-08-25 23:21:26
【问题描述】:

我无法使用此代码关闭屏幕。我使用了PowerManagerwl.release() 方法,但它不起作用。谁能给我举个例子?

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

这是我的功能的一部分:

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

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

【问题讨论】:

  • 好吧,你与 stateString 的比较永远不会是真的。要在 java 中比较字符串,您应该改用 stateString.equals("nextone")

标签: android screen


【解决方案1】:

我在这里找到了堆栈溢出的答案: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);
  • 这段代码可以正常关闭屏幕,但如何将其重新打开?
  • 将 params.screenBrightness 设置为 0 到 1 之间的值,使您的亮度介于 0% 到 100% 之间。将其设置为负值可为您提供自动亮度。我忘记了我第一次看到这个的地方,但我一直在使用它。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    Force Screen On

    【讨论】:

      【解决方案4】:

      你可以使用

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

      【讨论】:

        【解决方案5】:
        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);
        }
        

        How to detect switching between user and device

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-06
          • 2013-01-15
          • 2013-12-08
          • 2011-12-23
          • 1970-01-01
          • 1970-01-01
          • 2014-11-18
          相关资源
          最近更新 更多