问题
评估板设计LCD背光只用一根PWM管脚进行控制。产品LCD背光由背光电源使能GPIO管脚加PWM管脚进行控制,恢复出厂设置时出现背光关闭后闪一下界面的问题。为了解决此问题,把Android 9增加的背光电源使能GPIO管脚控制的修改支持移植到Android 11,移植完后系统启动过程出现7秒左右的背光关闭。
原因
Android 11 frameworks源码与Android 9进行比较,亮度的初始值改为BRIGHTNESS_INVALID_FLOAT = Float.NaN,再设置为BRIGHTNESS_OFF_FLOAT = -1.0f时,判断为背光亮度发生变化,启动过程(第8秒左右)多一次亮度设置为0的操作。第15秒左右,设置为之前保存的亮度。
SCREEN_BRIGHTNESS
screen_brightness
/data/system/users/0/settings_system.xml
<setting id="15" name="screen_brightness" value="102" package="android" defaultValue="102" defaultSysSet="true" />
LocalDisplayAdapter
frameworks/base/services/core/java/com/android/server/display/LocalDisplayAdapter.java
LocalDisplayDevice
android 9 mBrightnessState的初始值为BRIGHTNESS_DEFAULT = -1;android 11 mBrightnessState初始值为BRIGHTNESS_INVALID_FLOAT = Float.NaN。
173 private final class LocalDisplayDevice extends DisplayDevice {
174 private final long mPhysicalDisplayId;
175 private final LogicalLight mBacklight;
176 private final SparseArray<DisplayModeRecord> mSupportedModes = new SparseArray<>();
177 private final ArrayList<Integer> mSupportedColorModes = new ArrayList<>();
178 private final boolean mIsDefaultDisplay;
179
180 private DisplayDeviceInfo mInfo;
181 private boolean mHavePendingChanges;
182 private int mState = Display.STATE_UNKNOWN;
183 private float mBrightnessState = PowerManager.BRIGHTNESS_INVALID_FLOAT;
requestDisplayStateLocked
BRIGHTNESS_OFF_FLOAT与BRIGHTNESS_

最低0.47元/天 解锁文章

2276

被折叠的 条评论
为什么被折叠?



