Adnroid屏幕亮度调节——设置到指定的值与恢复到原来的值

应用场景:手机上有一张条形码图片,需要用扫码设备扫描。当手机屏幕太暗时,识别度低,因此我就想当切换到条形码图片所在的界面时,调亮屏幕方便扫码设备识别。当离开该界面时恢复用户原来设置的屏幕亮度调节模式和屏幕亮度值。

一、存储当前屏幕亮度调节模式值和屏幕亮度值:

 /*
                     * 获得当前屏幕亮度的模式 
                     * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
                     * SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
                     */
                     screenMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
                     Log.i(TAG, "screenMode = " + screenMode);
                     
                     // 获得当前屏幕亮度值 0--255
                     screenBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
                     Log.i(TAG, "screenBrightness = " + screenBrightness);


二、改变当前屏幕亮度调节模式值和屏幕亮度值:

 // 如果当前的屏幕亮度调节调节模式为自动调节,则改为手动调节屏幕亮度
                     if(screenMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC){
                         setScreenMode(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
                     }
                     
                     // 设置屏幕亮度值为最大值255
                     setScreenBrightness(255.0F);


三、离开时恢复当前屏幕亮度调节模式值和屏幕亮度值:

  // 设置屏幕亮度值为原来的
                    setScreenBrightness(screenBrightness);
                    // 设置当前屏幕亮度的模式 为原来的
                    setScreenMode(screenMode);

四、所需权限:

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

五、完整代码:

package com.easipass.setting.screen.luminance;

import android.app.Activity;
import android.os.Bundle;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

/**
 * 功能描述:设置与恢复当前的屏幕亮度调节模式和屏幕亮度值
 * 
 * @author android_ls
 */
public class SettingScreenLuminanceActivity extends Activity {

    private static final String TAG = "ScreenLuminance";

    /**
     * 当前屏幕亮度的模式 
     */
    private int screenMode;

    /**
     * 当前屏幕亮度值 0--255
     */
    private int screenBrightness;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // 调亮屏幕到指定的值
        super.findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                try {
                    /*
                     * 获得当前屏幕亮度的模式 
                     * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
                     * SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
                     */
                    screenMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
                    Log.i(TAG, "screenMode = " + screenMode);

                    // 获得当前屏幕亮度值 0--255
                    screenBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
                    Log.i(TAG, "screenBrightness = " + screenBrightness);

                    // 如果当前的屏幕亮度调节调节模式为自动调节,则改为手动调节屏幕亮度
                    if (screenMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
                        setScreenMode(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
                    }

                    // 设置屏幕亮度值为最大值255
                    setScreenBrightness(255.0F);

                } catch (SettingNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        });

        // 恢复原来的亮度
        super.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // 设置屏幕亮度值为原来的
                setScreenBrightness(screenBrightness);
                // 设置当前屏幕亮度的模式 为原来的
                setScreenMode(screenMode);
            }
        });

    }

    /**
     * 设置当前屏幕亮度的模式 
    * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
    * SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
    */
    private void setScreenMode(int value) {
        Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, value);
    }

    /**
    * 设置当前屏幕亮度值 0--255,并使之生效
    */
    private void setScreenBrightness(float value) {
        Window mWindow = getWindow();
        WindowManager.LayoutParams mParams = mWindow.getAttributes();
        float f = value / 255.0F;
        mParams.screenBrightness = f;
        mWindow.setAttributes(mParams);

        // 保存设置的屏幕亮度值
        Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, (int) value);
    }

}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值