usniyo 2012-10-11 05:40 采纳率: 0%
浏览 12107
已结题

android 关于调节屏幕亮度的问题

请问,设置屏幕亮度的值的范围是多少?网上有说是从0到1,我在设置时,从0.49到1.0这个范围内,每增加或减少0.01,亮度就会改变。但在0.0到0.48这个范围内,值的改变并不影响屏幕亮度,这是为何?

public static void brightnessPreview(Activity activity, float brightness)
{
    Window window = activity.getWindow();
    WindowManager.LayoutParams lp = window.getAttributes();
    lp.screenBrightness = brightness;
    window.setAttributes(lp);
}
  • 写回答

2条回答 默认 最新

  • usniyo 2012-12-05 15:16
    关注

    这是我自己封装的:

    import android.app.Activity;
    import android.content.ContentResolver;
    import android.content.Context;
    import android.provider.Settings;
    import android.provider.Settings.SettingNotFoundException;
    import android.view.Window;
    import android.view.WindowManager;
    
    public class ScreenBrightnessTool
    {
        /**
         * Activty自动调节亮度模式
         */
        public static final int ACTIVITY_BRIGHTNESS_AUTOMATIC = -1;
        /**
         * 自动调节模式
         */
        public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
        /**
         * 手动调节模式
         */
        public static final int SCREEN_BRIGHTNESS_MODE_MANUAL = Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
        /**
         * 默认亮度
         */
        public static final int SCREEN_BRIGHTNESS_DEFAULT = 75;
        /**
         * 最大亮度
         */
        public static final int MAX_BRIGHTNESS = 100;
        /**
         * 最小亮度
         */
        public static final int MIN_BRIGHTNESS = 0;
    
        private static final int mMaxBrighrness = 255;
        private static final int mMinBrighrness = 120;
    
        // 当前系统调节模式
        private boolean sysAutomaticMode;
        // 当前系统亮度值
        private int sysBrightness;
    
        private Context context;
    
        private ScreenBrightnessTool(Context context, int sysBrightness,
                boolean sysAutomaticMode)
        {
            this.context = context;
            this.sysBrightness = sysBrightness;
            this.sysAutomaticMode = sysAutomaticMode;
        }
    
        /**
         * 创建屏幕亮度工具
         * 
         * @param context
         * @return
         */
        public static ScreenBrightnessTool Builder(Context context)
        {
            int brightness;
            boolean automaticMode;
            try
            {
                // 获取当前系统亮度值
                brightness = Settings.System.getInt(context.getContentResolver(),
                        Settings.System.SCREEN_BRIGHTNESS);
                // 获取当前系统调节模式
                automaticMode = Settings.System.getInt(
                        context.getContentResolver(),
                        Settings.System.SCREEN_BRIGHTNESS_MODE) == SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
            }
            catch (SettingNotFoundException e)
            {
                return null;
            }
    
            return new ScreenBrightnessTool(context, brightness, automaticMode);
        }
    
        /**
         * 返回当前系统亮度调节模式
         * 
         * @return
         */
        public boolean getSystemAutomaticMode()
        {
            return sysAutomaticMode;
        }
    
        /**
         * 返回当前系统亮度值
         * 
         * @return
         */
        public int getSystemBrightness()
        {
            return sysBrightness;
        }
    
        /**
         * 设置调节模式
         * 
         * @param mode
         *            调节模式
         */
        public void setMode(int mode)
        {
            if (mode != SCREEN_BRIGHTNESS_MODE_AUTOMATIC
                    && mode != SCREEN_BRIGHTNESS_MODE_MANUAL)
                return;
    
            sysAutomaticMode = mode == SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
            Settings.System.putInt(context.getContentResolver(),
                    Settings.System.SCREEN_BRIGHTNESS_MODE, mode);
        }
    
        /**
         * 设置屏幕亮度
         * 
         * @param brightness
         *            亮度值,值为0至100
         */
        public void setBrightness(int brightness)
        {
            int mid = mMaxBrighrness - mMinBrighrness;
            int bri = (int) (mMinBrighrness + mid * ((float) brightness)
                    / MAX_BRIGHTNESS);
    
            ContentResolver resolver = context.getContentResolver();
            Settings.System
                    .putInt(resolver, Settings.System.SCREEN_BRIGHTNESS, bri);
        }
    
        /**
         * 亮度预览
         * 
         * @param activity
         *            预览activity
         * @param brightness
         *            亮度值(0.47~1)
         */
        public static void brightnessPreview(Activity activity, float brightness)
        {
            Window window = activity.getWindow();
            WindowManager.LayoutParams lp = window.getAttributes();
            lp.screenBrightness = brightness;
            window.setAttributes(lp);
        }
    
        /**
         * 亮度预览
         * 
         * @param activity
         *            预览activity
         * @param percent
         *            百分比(0.0~1.00)
         */
        public static void brightnessPreviewFromPercent(Activity activity,
                float percent)
        {
            float brightness = percent + (1.0f - percent)
                    * (((float) mMinBrighrness) / mMaxBrighrness);
            brightnessPreview(activity, brightness);
        }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘