6

我正在使用这种方法将屏幕设置为全亮度。

@SuppressLint("NewApi") 
private void setFullBright() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
        WindowManager.LayoutParams windowParams = getWindow().getAttributes();
        windowParams.screenBrightness = 1.0f;
        getWindow().setAttributes(windowParams);        
    }
}

如果我想在 Activity 屏幕的整个生命周期中设置全亮度,onCreate 方法是调用它的最佳位置吗?

是否有可以实现此目的的 XML 标志?类似android:keepScreenOn="true"的东西反映了在代码中添加WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON的功能?

4

3 回答 3

20

将这些行放在所有用于查看页面的java文件的oncreate方法中,

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 1.0f;
getWindow().setAttributes(params);

这将解决您的问题,快乐编码...

于 2014-05-07T11:11:59.770 回答
5

对于每个试图在DialogFragment. 应用参数getActivity().getWindow()将无济于事,因为Activity窗口与Dialog正在运行的窗口不同。所以您必须使用对话框的窗口 - 请参见以下代码段:

getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
params.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL;
getDialog().getWindow().setAttributes(params);

并回答原来的问题:不,没有办法通过 XML 设置它。

于 2018-04-09T11:10:53.147 回答
1

Kotlin 版本,常量而不是浮点数:(不适用于对话框)

private fun setScreenBright() {
    with(window){
        addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
        attributes = attributes.also { 
            it.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL
        }
    }
}
于 2021-04-16T10:19:29.383 回答