在Android活动中设置全屏亮度

Ale*_*ang 5 android window-managers screen screen-brightness android-activity

我正在使用此方法将屏幕设置为全亮度.

@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);        
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我希望在Activity的屏幕的整个生命周期中设置全亮度,那么onCreate方法是最好的调用方法吗?

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

小智 15

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

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 1.0f;
getWindow().setAttributes(params);
Run Code Online (Sandbox Code Playgroud)

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

  • 您也可以使用常量[`WindowManager.LayoutParams.BRIGHTESS_OVERRIDE_FULL`](https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html)代替`1.0F`.还有`BRIGHTNESS_OVERRIDE_NONE`将亮度重置为设备设置,而'BRIGHTNESS_OVERRIDE_OFF`则将亮度完全降低. (4认同)
  • @Bryan:“BRIGHTNESS_OVERRIDE_FULL”而不是“BRIGHTESS_OVERRIDE_FULL” (2认同)

reV*_*rse 5

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

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);
Run Code Online (Sandbox Code Playgroud)

并回答最初的问题:不,无法通过 XML 进行设置。