gpt4 book ai didi

Android:如何以编程方式打开和关闭屏幕?

转载 作者:行者123 更新时间:2023-12-05 07:50:25 24 4
gpt4 key购买 nike

在将这篇文章标记为“重复”之前,我写这篇文章是因为没有其他文章能解决问题。

我正在尝试关闭设备,然后在几分钟或传感器更换后重新打开。

关闭显示测试

我可以使用以下方法关闭屏幕:

params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);

我一直无法使用 wl.release() 方法关闭屏幕。

开启显示测试

我的第一个猜测,如下,是行不通的。没有任何反应,屏幕保持关闭状态。

params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = -1f;
getWindow().setAttributes(params);

然后我也尝试使用唤醒锁,但没有成功。

PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "tag");
wl.acquire();

最后我尝试了以下方法,但没有结果。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

总而言之,对于这些方法中的任何一种,我都没有在控制台中收到任何类型的错误。当我使用电源按钮打开设备时,我的测试文本“Screen should be on”出现在屏幕上。这表明代码应该已经运行了。请仅在您测试过代码后才回答,似乎许多函数(例如 params.screenBrightness = -1)根据 sdk 无法正常工作。

最佳答案

我假设您只希望它在您的应用程序在前台运行时生效。

这段代码:

params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);

不会关闭传统意义上的屏幕。它使屏幕尽可能暗。在标准平台中,它的暗淡程度是有限制的;如果您的设备实际上允许屏幕完全关闭,那么这是该设备实现的一些特殊性,而不是您可以跨设备依赖的行为。

事实上,将它与 FLAG_KEEP_SCREEN_ON 结合使用意味着您永远不会让屏幕关闭(因此设备进入低功耗模式),即使特定设备允许您将屏幕亮度设置为全-离开。请牢记这一点。与屏幕真正关闭时相比,您将消耗更多电量。

现在要将屏幕调回正常亮度,只需设置亮度值即可:

WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = -1;
getWindow().setAttributes(params);

我无法解释为什么这不会替换您之前设置的 0 值。作为测试,您可以尝试在其中设置强制全亮度以强制达到特定亮度:

WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 1;
getWindow().setAttributes(params);

这绝对有效。例如,Google 的图书应用程序使用它允许您在阅读书籍时将屏幕亮度设置为暗,然后在关闭时恢复正常亮度。

为了帮助调试,您可以使用“adb shell dumpsys window”来查看窗口的当前状态。在窗口的数据中,它会告诉您当前为其设置的 LayoutParams。确保您认为的值(value)实际存在。

同样,FLAG_KEEP_SCREEN_ON 是一个单独的概念;它和亮度互不直接影响。 (如果您在将亮度设置为 0 时已经设置了标志,则在撤消亮度时没有理由再次设置标志。标志将保持设置状态,直到您更改它。)

关于Android:如何以编程方式打开和关闭屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36199613/

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