如何完全调暗屏幕亮度

时间:2016-12-14 14:33:59

标签: android

我希望使用seekbar以编程方式完全调暗屏幕亮度我正在使用此代码进行操作,但它并未完全调暗屏幕亮度。我想完全消除屏幕亮度

代码:

public class Night extends AppCompatActivity {

private SeekBar brightbar;
private int brightness;
private ContentResolver contentResolver;
private android.view.Window window;
TextView txtPerc;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_night);

    brightbar=(SeekBar)findViewById(R.id.brightbar);
    txtPerc=(TextView)findViewById(R.id.txtPercentage);
    contentResolver=getContentResolver();
    window=getWindow();
    brightbar.setMax(255);
    brightbar.setKeyProgressIncrement(1);

    try{
        brightness= Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS);
    }catch (Exception e) {
        e.printStackTrace();
    }

    brightbar.setProgress(brightness);

    brightbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            if (progress<=5)
            {
                brightness=5;
            }else {
                brightness=progress;
            }

            float perc=(brightness/(float)255)*100;
            txtPerc.setText((int)perc + "%");
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

            Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS,brightness);
            WindowManager.LayoutParams layoutpars=window.getAttributes();

            layoutpars.screenBrightness=brightness/(float)255;
            window.setAttributes(layoutpars);
        }
    });



}

}

任何人都可以建议我怎么做。

2 个答案:

答案 0 :(得分:1)

大多数&#34;夜间模式&#34; /&#34;保护你的眼睛&#34;一种应用程序使用View覆盖整个屏幕的服务。

然后,他们根据你想要的暗度设置这个视图的透明度/ alpha。背景颜色可以是不同的色调或黑色。

看看这个问题,该问题展示了如何从服务Starting a View from a Service?

创建视图 希望它有所帮助。

答案 1 :(得分:0)

使用对我有用的波纹管代码

 WindowManager.LayoutParams layout = getWindow().getAttributes();
     layout.screenBrightness = 1F;
     getWindow().setAttributes(layout);