android - 增加 Activity 的屏幕亮度

标签 android screen brightness

在 Android 操作系统中显然至少有三种不同的更改屏幕亮度的技术。其中两个在纸杯蛋糕后不再工作,第三个被接受的技术显然有一个错误。

我想在单 View Activity 开始时增加屏幕亮度,然后在 Activity 结束时将亮度调回用户设置。没有按钮,没有第二个 View 或第二个 Activity 。只是在开始时达到最大亮度,在 Activity 结束时恢复到原始亮度设置。

我找到的使用 WindowManager.LayoutParams 的当前技术的示例从 2 行代码开始

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

几页源代码和大量 Activity 。

是否有人可以提供链接以在开始时最大化屏幕亮度的简单示例?

最佳答案

很简单,您可以使用拖放或编写其 xml 在 xml 中创建一个 SeekBar

 SeekBar
     android:id="@+id/brightnesSseeker"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_weight="1"
     android:max="255"
     android:progress="255" />

在 mainActivity 类中这样做:

brightnesSseeker = (SeekBar) findViewById(R.id.brightnesSseeker);

    brightnesSseeker
            .setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
                public void onStopTrackingTouch(SeekBar seekBar) {
                    // Nothing handled here
                }

                public void onStartTrackingTouch(SeekBar seekBar) {
                    // Nothing handled here
                }

                public void onProgressChanged(SeekBar seekBar,
                        int progress, boolean fromUser) {
                    // Set the minimal brightness level
                    // if seek bar is 20 or any value below
                    if (progress <= 20) {
                        // Set the brightness to 20
                        screenBrightness(20);
                    } else {
                        // Set brightness variable based on the progress bar
                        screenBrightness(progress);
                    }
                    stobeVariable=progress*10;
                }
            });

然后写一个简单的函数:

private void screenBrightness(double newBrightnessValue) {
    /*
     * WindowManager.LayoutParams settings = getWindow().getAttributes();
     * settings.screenBrightness = newBrightnessValue;
     * getWindow().setAttributes(settings);
     */
    WindowManager.LayoutParams lp = getWindow().getAttributes();
    float newBrightness = (float) newBrightnessValue;
    lp.screenBrightness = newBrightness / (float) 255;
    getWindow().setAttributes(lp);
}

在调用 screenBrightness 函数之前还要检查亮度模式,因为有时模式被选择为自动亮度,在这种情况下亮度不会改变。您还需要 list 文件中的权限。

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

在setOnSeekBarChangeListener之前在onCreate中调用下面的函数

  void changeBrightnessMode(){

    try {
        int brightnessMode = Settings.System.getInt(getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE);
        if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
            Settings.System.putInt(getContentResolver(),
                    Settings.System.SCREEN_BRIGHTNESS_MODE,
                    Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
        }


    } catch (Exception e) {
        // do something useful

    }
}

关于android - 增加 Activity 的屏幕亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2937365/

相关文章:

android - 在 Flutter 中调整手机亮度

android - 即使向左移动Seekbar的滚动条,图像的亮度也会不断增加

android - 在 Android 中实现亮度逐渐衰减的干净方法?

Android ListView 跳转到光标位置

android - 在 styles.xml 中为单个 TextView 背景色设置主题

android - Grails save() 领域对象实际上做一个选择?

android - 应用骨架支持多屏

未显示子项的 Android ViewFlipper 度量

XCode 6.0.1 - xmlParseEntityRef : no name on Launch Screen. xib

android - 粒子效果不渲染