Changing Screen brightness in 6.0 programmatically

Shashank picture Shashank · Apr 21, 2016 · Viewed 9.3k times · Source

I am working on an android application which changes the screen brightness programmatically. I have a set brightness method which works on 5.1.1,But when i run the application on 6.0,it gives an error and closes the application. Please Help.

Following is my approach:

 public void setBrightness(View view,int brightness){

    //Just a loop for checking whether the brightness changes
     if(brightness <46)
        brightness = 255;
    else if(brightness >150)
        brightness=45;
    ContentResolver cResolver = this.getApplicationContext().getContentResolver();
    Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS, brightness);

}

public void setDisplay(View view)
{
    ContentResolver  cResolver = getContentResolver();

    Window window = getWindow();
    int brightness=0;
    try
    {        Settings.System.putInt(cResolver,Settings.System.SCREEN_BRIGHTNESS_MODE
                                   Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
                   brightness = Settings.System.getInt(cResolver, Settings.System.SCREEN_BRIGHTNESS);
        System.out.println("Current Brightness level " + brightness);
    }
    catch (Exception e)
    {
                   Log.e("Error", "Cannot access system brightness");
        e.printStackTrace();
    }
    setBrightness(view,brightness);
}

Answer

Cristi Constantin picture Cristi Constantin · Feb 11, 2018

If you want for a specify activity/fragment, try this:

    WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.screenBrightness = 70 / 100.0f;
    getWindow().setAttributes(lp);