Change screen brightness onPause (Android app)

2019-08-09 12:27发布

问题:

My app saves the user original brightness with:

originalBrightness = Settings.System.SCREEN_BRIGHTNESS;

and then changes it while the program running.

originalBrightness is private global string. Now what I am trying to do is when the user clicks on "Home" or when the app paused the original screen is need to be set again, I have tried to do this like this but the app crushes:

public void onPause() {
    super.onPause();
    int brightness = Integer.getInteger(originalBrightness);
    setBrightness(brightness);
}
private void setBrightness(int brightness) {
    WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
    layoutParams.screenBrightness = brightness / 100.0f;
    getWindow().setAttributes(layoutParams);
}

Is there away to male it work? Thanks

回答1:

Try Using Settings.System.SCREEN_BRIGHTNESS to set system default brightness as:

android.provider.Settings.System.putInt(getContentResolver(),  
android.provider.Settings.System.SCREEN_BRIGHTNESS,brightness /100.0f); // 0-255 

and add these permission's in manifest :

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />