我是靠谱客的博主 真实自行车,最近开发中收集的这篇文章主要介绍android设置和获取系统屏幕亮度,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    private SeekBar sb_brightness;

    private ContentObserver observer = new ContentObserver(new Handler()) {
        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            if (sb_brightness != null) {
                sb_brightness.setProgress(getBrightness());
            }
        }
    };
    
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_setup);
        initView();
        getContentResolver().registerContentObserver(
                Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS), true, observer);
    }
    /**
     * 获得当前亮度
     */
    private int getBrightness() {
        int brightness = 0;
        ContentResolver resolver = ScreenManageActivity.this.getContentResolver();

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

        return brightness;
    }

    /**
     * 设置当前亮度
     *
     * @param brightness
     */
    private void setBrightness(int brightness) {
        if (brightness < MIN_BRIGHTNESS) {
            brightness = MIN_BRIGHTNESS;
        } else if (brightness > MAX_BRIGHTNESS) {
            brightness = MAX_BRIGHTNESS;
        }
        String cmds = "echo " + brightness + " > /sys/class/leds/lcd-backlight/brightness";
        try {
            Runtime.getRuntime().exec(cmds);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 停止自动亮度调节,改为手动
     */
    public void stopAutoBrightness() {
        Settings.System.putInt(ScreenManageActivity.this.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
    }

    /**
     * 改变App当前Window亮度
     *
     * @param brightness
     */
    public void changeAppBrightness(int brightness) {
        Window window = this.getWindow();
        WindowManager.LayoutParams lp = window.getAttributes();
        if (brightness == -1) {
            lp.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
        } else {
            lp.screenBrightness = (brightness <= 0 ? 1 : brightness) / 255f;
        }
        window.setAttributes(lp);
    }
    
    private void initView() {
        sb_brightness = (SeekBar) findViewById(R.id.sb_brightness);
        int brightness = getBrightness();
        sb_brightness.setMax(255);
        sb_brightness.setProgress(brightness);
        brightness_value.setText(brightness+"");
        Log.e(TAG, "当前亮度:" + brightness);
        changeAppBrightness(brightness);
        sb_brightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                changeAppBrightness(i);
                setBrightness(i);
                saveBrightness(i);
                brightness_value.setText(i+"");
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

    }

最后

以上就是真实自行车为你收集整理的android设置和获取系统屏幕亮度的全部内容,希望文章能够帮你解决android设置和获取系统屏幕亮度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部