什么是息屏显示
息屏显示就是手机在息屏状态下,屏幕上会显示当前时间、日期信息,无需点亮手机屏幕即可查看。息屏显示的原理主要是利用了OLED屏幕像素点自发光的特性,仅显示时间的像素点发光,功耗相比LCD屏幕要低很多。
Android原生的主动显示
玩过Android源码的同学应该知道,在Settings里有一个开关项:
设置 - 显示 - 主动显示
这就是设置 - 显示下的主动显示选项,勾选了这个选项后,当设备在息屏时接到一条新通知会显示这样的效果:
是不是发现与息屏显示的效果一模一样,但触发条件却不一样,需要息屏后有通知才会显示出来,并且过一段时间又会自动消失回归黑屏,那么怎样才能做到息屏后就能一直都显示呢?
源码分析
既然知道主动显示开关是放在设置里面的,那不妨先从Settings的源码看起,首先找到主动显示对应的Preference
<Preference
android:key="ambient_display"
android:title="@string/ambient_display_screen_title"
android:fragment="com.android.settings.display.AmbientDisplaySettings" />
然后发现在AmbientDisplaySettings里注册了一些controller
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
Lifecycle lifecycle, AmbientDisplayConfiguration config,
MetricsFeatureProvider metricsFeatureProvider,
AmbientDisplayAlwaysOnPreferenceController.OnPreferenceChangedCallback aodCallback) {
final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new AmbientDisplayNotificationsPreferenceController(context, config,
metricsFeatureProvider));
controllers.add