Andrid 按键 在Settings内每按一次按键,设置中的亮度值不是等比减少/增加

Posted 王睿丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Andrid 按键 在Settings内每按一次按键,设置中的亮度值不是等比减少/增加相关的知识,希望对你有一定的参考价值。

核心思路:
滑动时用本机算法计算亮度值
按键时使用我发明的算法计算亮度值

frameworks/base/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java

如果滑动改变亮度,设置中的百分比计算算法会改变

 @Override
    public void onChanged(ToggleSlider toggleSlider, boolean tracking, boolean automatic,
                          int value, boolean stopTracking) 
++        Intent intent = new Intent("xxx.settings");
++        intent.putExtra("type",1);
++        mContext.sendBroadcast(intent);

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

如果按下按钮更改亮度,则设置中的百分比计算算法将更改

 ++       if (keyCode == KeyEvent.KEYCODE_BRIGHTNESS_DOWN || keyCode == KeyEvent.KEYCODE_BRIGHTNESS_UP)
 ++           Intent intent = new Intent("xxx.settings");
 ++           intent.putExtra("type",2);
 ++           mContext.sendBroadcast(intent);
 ++       

packages/apps/Settings/src/com/android/settings/display/BrightnessLevelPreferenceController.java

百分比计算指标

++ private int typePercentage = 1;

更改计算百分比类型

++    private final BroadcastReceiver myReceiver = new BroadcastReceiver() 
++       @Override
++        public void onReceive(Context context, Intent intent) 
++            typePercentage = intent.getIntExtra("type",0);
++        
++    ;

注册广播

 public BrightnessLevelPreferenceController(Context context, Lifecycle lifecycle) 
        super(context);
 ++       context.registerReceiver(myReceiver, new IntentFilter("xxx.settings"));

修复:每次按下按钮,设置中的亮度值不成比例地减少/增加

getPercentage() 里面的逻辑我几乎全改了

    private double getPercentage(double value, int min, int max) 
        double sliderVal = 0;
//	1 - 使用本机算法
        if (typePercentage==1)
            if (value > max) 
                return 1.0;
            
            if (value < min) 
                return 0.0;
            
            sliderVal =  (value - min) / (max - min);
        else if (typePercentage==2)             //		2 - 使用新算法
                if (value>0 && value<=35657)
                    sliderVal = 0.1;
                else if (value>35657 && value<=45474)
                    sliderVal = 0.2;
                else if (value>45474 && value<=50741)
                    sliderVal = 0.3;
                else if (value>50741 && value<=54361)
                    sliderVal = 0.4;
                else if (value>54361 && value<=57123)
                    sliderVal = 0.5;
                else if (value>57123 && value<=59357)
                    sliderVal = 0.6;
                else if (value>59357 && value<=61232)
                    sliderVal = 0.7;
                else if (value>61232 && value<=62848)
                    sliderVal = 0.8;
                else if (value>62848 && value<=64269)
                    sliderVal = 0.9;
                else if (value>64269) 
                    sliderVal = 1.0;
                
        
        return sliderVal;
        //end
    

以上是关于Andrid 按键 在Settings内每按一次按键,设置中的亮度值不是等比减少/增加的主要内容,如果未能解决你的问题,请参考以下文章

手机九宫格键盘

九度oj 题目1079:手机键盘

按住一个按键不松手的加速匀速触发

基于51单片机的按键计数设计,4位,0到9999

resignFirstResponder 没有按预期工作。每次按键时键盘都会弹出,而不是仅返回

欧拉定理p4861按钮