我正在考虑使用隐藏的 api 来关闭我的应用程序中的屏幕。
setScreenState
from https://android.googlesource.com/platform/frameworks/base/+/eclair-release/core/java/android/os/Power.java https://android.googlesource.com/platform/frameworks/base/+/eclair-release/core/java/android/os/Power.java做我想要的,但它是一个隐藏的 API。这是否意味着我不应该使用它?我认为它是一个相当稳定的 API。
目前,我将屏幕超时设置为 1 毫秒,然后在屏幕关闭后重置超时。然而,android 会忽略 1 毫秒,而是需要大约 3 秒才能关闭,有时它会完全忽略它并且不会关闭。
有什么建议么?
以下是我为解决使屏幕休眠的需要所做的工作。您可以在活动窗口中执行此操作。我将其与此自定义锁屏活动的睡眠超时减少到 5 秒相结合。您可以在我的项目页面上查看我的所有源代码,但这里是有关在机器人上为我工作的关闭屏幕的相关部分。
public void setBright(float value) {
Window mywindow = getWindow();
WindowManager.LayoutParams lp = mywindow.getAttributes();
lp.screenBrightness = value;
mywindow.setAttributes(lp);
}
//call this task to turn off the screen in a fadeout.
class Task implements Runnable {
public void run() {
if (bright != 0) {
setBright(bright/100); //start at 10% bright and go to 0 (screen off)
bright--;
serviceHandler.postDelayed(myTask, 100L);
} else {
setBright((float) 0.0);
bright = 10;//put bright back
}
}
}
我使用处理程序任务作为该方法的测试,当我在第一个构建中从 onBackPressed 调用它时,它起作用了。现在,我只是在 onCreate 时将活动 setBright 设置为 0.0。这样一来,即使我的用户意外按下音量键唤醒了 CPU,屏幕实际上也不会打开。当我希望屏幕继续亮起时,我将按键事件调用 setBright 设置为大于 0 的值(1.0 表示最大亮度)。我很幸运这适用于我的自定义锁屏活动。我发现更改文字亮度系统设置不起作用,并且不会关闭屏幕。
在我的项目 svn 上查看我的其他来源http://code.google.com/p/mylockforandroid/source/checkout http://code.google.com/p/mylockforandroid/source/checkout
您认为要求 Android 团队添加对关闭屏幕或定义屏幕是否应通过锁定中介替换唤醒的支持有多难,就像您如何编写替代的 Home Launcher 应用程序一样?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)