我正在考虑使用隐藏的api在我的应用程序中关闭屏幕.
setScreenState
来自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
您认为让Android团队添加支持以关闭屏幕或定义屏幕是否应该通过Lock mediator替换来唤醒,类似于您如何编程替代Home Launcher应用程序,这有多难?