安卓修改屏幕亮度

修改屏幕亮度有两种方案:

1、修改当前窗口的屏幕亮度,这种方案的亮度只保存在当前的window,退出当前的窗口就会恢复原样

2、修改系统中的亮度属性,这个是全局的,但是需要申请和打开权限,因为是直接对系统内容进行操作

    

以SeekBar为例,MainActivity代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);
        
        SeekBar seekBar = findViewById(R.id.seekBar);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                //修改系统的亮度
                Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, 10 * progress);

                //修改当前window的亮度
                WindowManager.LayoutParams lp = getWindow().getAttributes();
                lp.screenBrightness = 0.5f * progress / 100;
                getWindow().setAttributes(lp);
            }

            @Override public void onStartTrackingTouch(SeekBar seekBar) { }
            @Override public void onStopTrackingTouch(SeekBar seekBar) { }
        });
                
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (!Settings.System.canWrite(this)) {

                //此时会跳转到系统设置的activity,需要手动打开app的修改系统设置内容开关
                Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
                startActivity(intent, savedInstanceState);
                
            }
        }
    }
}

你可能感兴趣的:(android,android,studio,安卓)