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内每按一次按键,设置中的亮度值不是等比减少/增加的主要内容,如果未能解决你的问题,请参考以下文章