2

我一直在尝试将亮度设置在 Android 设置的限制之下。Google Play 中有两个类似的应用程序这样做:

第二个,甚至允许使用黑屏手机,这正是我在我的应用程序中所需要的。

关于亮度还有很多其他问题,但不要将其设置在此系统限制下,我发现一个问题几乎相同但对我没有帮助: 亮度屏幕过滤器

所以经过大量搜索后,我得到了以下代码:

int brightness=0; //0 to 255, so I set it to a low level (not enough for me)
ContentResolver cResolver = getContentResolver();  

//set the system brightness value, and if active, disable auto mode.
System.putInt(cResolver, System.SCREEN_BRIGHTNESS, brightness);  
System.putInt(cResolver, System.SCREEN_BRIGHTNESS_MODE, System.SCREEN_BRIGHTNESS_MODE_MANUAL);  

//previous lines don't set the brightness to the current screen so we set it like this: 
LayoutParams layoutpars = getWindow().getAttributes();  
layoutpars.screenBrightness = brightness / (float)255; 

//Now we have brightness to the minimum allowed by Android but
//to achieve what these apps do, I have to reduce alpha of the window to the min
//then the screen is black like I want, and totally usable!
layoutpars.alpha=0.05f;
window.setAttributes(layoutpars);

这里 alpha 是关键,这是我想要做的,但仅适用于当前窗口/屏幕,我需要将此 alpha 作为默认值保存到系统中,就像我正在使用亮度和手动模式一样在任何地方应用.

你知道我应该怎么做吗?我找不到值“System.SCREEN_ALPHA”来使用 System.putInt 或其他方式设置它。

在我之前链接的另一个问题中,pheelick 回复了使用透明不可触摸屏幕的建议,但这对我不起作用,结果并没有像以前的应用程序那样给人一种关闭屏幕的感觉。

谢谢。

4

1 回答 1

0

我决定在我的应用程序中使用 alpha 实现这个功能。所以我根本无法解决最初的问题......

无论如何,最后似乎这个问题的解决方案是Pheelicks在这里回答的一个:https ://stackoverflow.com/a/4287597/1667990

-这是发起一项始终处于领先地位的活动,

- alpha 为 0.0f,所以它是透明的,

- 将触摸重定向到后面的活动:

//Let touches go through to apps/activities underneath.
Window window = activity.getWindow();
window.addFlags(FLAG_NOT_TOUCHABLE);

- 上一个链接中未解释的最重要的事情是将我们窗口后面的暗淡设置为 1(就像消息框中的暗淡,但设置为最大值以在后面为黑色 :D )

window.setDimAmount ((float)1.0) ;
window.setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
    WindowManager.LayoutParams.FLAG_DIM_BEHIND);

我没有尝试过,并决定不在我的应用程序中这样做,因为它可能会在我的情况下带来意想不到的行为,但我认为它绝对应该有效,如果有人尝试请添加您的反馈!

于 2013-03-27T09:33:02.200 回答