在android中调用隐藏的API来关闭屏幕

时间:2009-12-09 17:55:55

标签: android

我正在考虑使用隐藏的api在我的应用中关闭屏幕 来自https://android.googlesource.com/platform/frameworks/base/+/eclair-release/core/java/android/os/Power.javasetScreenState做我想要的,但它是一个隐藏的API。这是否意味着我不应该使用它?我认为它是一个相当稳定的API 目前,我将屏幕超时设置为1毫秒,然后在屏幕关闭后重置超时。然而,android忽略了1毫秒,而关闭它需要大约3秒钟,有时它会完全忽略它并且不会关闭。
有什么建议吗?

3 个答案:

答案 0 :(得分:11)

这就是我为解决屏幕睡眠问题所做的工作。您可以在活动窗口中执行此操作。我将这个自定义锁屏活动的睡眠超时时间减少到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

上查看我的其他来源

您认为安卓团队是否有兴趣添加支持以关闭屏幕或定义屏幕是否应通过Lock mediator更换来唤醒,类似于您如何编程替代Home Launcher应用程序?

答案 1 :(得分:2)

答案 2 :(得分:1)

  

setScreenState ...做我想要的,但是   它是一个隐藏的API。这是否意味着我   不应该使用它吗?

是的,这意味着你不应该使用它。在这种情况下,整个类似乎被排除在SDK之外。 Please stick to the SDK