【问题标题】:How to change screen brightness programmatically in `Fragment`如何在“片段”中以编程方式更改屏幕亮度
【发布时间】:2019-06-17 17:11:57
【问题描述】:

当我的应用程序中显示对话框片段时,我需要将屏幕亮度设置为最大级别。我的应用程序对 Android SDK 23 的支持最低,我尝试在我的 Dialog Fragment 的onCreate() 内设置亮度,如下所示:

WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getActivity().getWindow().setAttributes(lp);

但屏幕亮度只会改变片刻。如何在打开对话框时将屏幕亮度设置为最大级别,并在关闭片段对话框时重新设置?

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:

    试试下面的代码

     //add below permission in your manifest file
      <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    
    // also ask setting permission at runtime
      if(Build.VERSION.SDK_INT>Build.VERSION_CODES.M) {
           boolean canWriteSettings = Settings.System.canWrite(this);
            if (!canWriteSettings) {
                Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
                startActivity(intent);
            }
        }
    
    
      //  finally use below method for set brightness
          public void setScreenBrightness(Context mContext,int brightnessValue){
        // Make sure brightness value between 0 to 255
        if(brightnessValue >= 0 && brightnessValue <= 255){
            Settings.System.putInt(
                    mContext.getContentResolver(),
                    Settings.System.SCREEN_BRIGHTNESS,
                    brightnessValue
            );
        }
    }
    

    【讨论】:

    • 感谢您的回复,但是当我在清单上插入权限时,android-studio 告诉我此权限仅适用于系统应用
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2012-02-14
    • 2017-04-25
    • 2011-11-30
    相关资源
    最近更新 更多