gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:24:20 25 4
gpt4 key购买 nike

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

最佳答案

以下是我为解决需要让屏幕休眠所做的工作。您可以在 Activity 窗口中执行此操作。我将此自定义锁屏 Activity 的 sleep 超时时间减少到 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 将 Activity setBright 设置为 0.0。这样一来,即使我的用户意外按下音量键唤醒了 CPU,屏幕也不会真正打开。当我希望屏幕继续显示时,我将键事件调用 setBright 设置为大于 0 的值(1.0 表示最大亮度)。我很幸运这适用于我的自定义锁屏 Activity 。我发现更改文字亮度系统设置不会像这样工作,并且不会关闭屏幕。

在我的项目 svn http://code.google.com/p/mylockforandroid/source/checkout 上查看我的其他资源

您认为要求 android 团队添加对关闭屏幕的支持或定义屏幕是否应通过 Lock mediator 替换唤醒的支持有多难,就像您如何编写替代 Home Launcher 应用程序一样?

关于android - 在android中调用隐藏的API来关闭屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1875669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com