繁体   English   中英

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

[英]Calling hidden API in android to turn screen off

我正在考虑使用隐藏的api在我的应用程序中关闭屏幕。
来自https://android.googlesource.com/platform/frameworks/base/+/eclair-release/core/java/android/os/Power.java的 setScreenState做我想要的,但它是一个隐藏的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

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

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

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

暂无
暂无

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

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