系統屏幕亮度

1、一般的app沒有修改系統屏幕亮度的權限,要system權限纔可以!
2、一般分兩種:
(1)、當前屏幕activity(window)
(2)、系統屏幕亮度
實現:
////設置爲手動

/*
     * 設置系統參數爲手動操作
     */
    private void setScrennManualMode() {
        ContentResolver contentResolver = this.getContentResolver();
        try {
            int mode = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE);
            if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
                Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
            }
        } catch (Settings.SettingNotFoundException e) {
            e.printStackTrace();
        }
    }

/////設置亮度值

ContentResolver contentResolver;
contentResolver = MoreActivity.this.getContentResolver();
Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, tmpInt);

3、使用進度條拉昇的形式修改值
///佈局:

<SeekBar
                    android:id="@+id/seekBar_light"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:padding="7dp"
                    android:max="255"
                    android:progressDrawable="@drawable/seekbar_light"
                    android:thumb="@drawable/night_mode_seekbar_thumb" />

// 取得當前亮度
        int normal = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 255);
        // 進度條綁定當前亮度
        mSeekBarBrightness.setProgress(normal);
        mSeekBarBrightness.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // 取得當前進度
                int tmpInt = seekBar.getProgress();

                // 當進度小於80時,設置成80,防止太黑看不見的後果。
                if (tmpInt < 50) {
                    tmpInt = 50;
                }
                // 根據當前進度改變亮度
                if (tmpInt > 0 && tmpInt <= 255) {
                    Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, tmpInt);
                }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            }
        });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章