1. 什么是AOD?

(要知道更多关于AOD的内容,百度。介绍概念不是这篇的重点。)
它的全称应该是:Always On Display,即我们常说的“熄屏显示”或”灭屏显示“功能,不点亮全屏点亮手机屏幕,只让屏幕局部亮起。

1.1 AOD的作用:

用户不做过多的操作,手机一直局部显示一些重要的内容(时间、重要信息等)。一个小区域能一直看到信息,且功耗小。

1.2 怎么开启AOD?

1)先确定下自己手机屏幕是LCD还是AMOLED,若是LCD,不用找了,没有AOD。
2)不同手机,操作不同。可以参考下面网页对号查看:

https://www.xda-developers.com/how-to-enable-always-on-display-android/#:~:text=To%20enable%20Always%20On%20Display%3A%20Open%20the%20Settings,on%20Home%20screen%2C%20Lock%20screen%20%26%20Always-On%20Display.

1.3 为什么我的手机上不能看到AOD这个功能?

值得注意的是,若是LCD显示屏,AOD功能的意义不是很大。因为LCD屏发光需要整屏的背光,即使是局部亮起,背光还是一直开着的,也就是说,一直是整块屏幕在发光,黑色是因为光没投射出来进入人眼。功耗还是在那里。即使有些APP可以在LCD手机上模拟AOD显示效果,但也不是真正的AOD。如果一直亮着,超级耗电。
若是AMOLED显示屏,就能做到使部分像素点单独显示,不显示的像素不点亮,大大降低了功耗,可以做到一直显示(做到Always on)。
所以知道为什么,即使android设备在软件方面支持AOD,手机厂商也不会开放这个功能,因为没意义。

2 修改Android源码实现AOD

android设备中,在Settings里有一个开关项:设置 - 显示 - 主动显示(Settings - Display - Ambient displays),就可以看到Always On Display。

若没找到,说明Android源码中没实现,这时,就要去改代码实现了。

代码不分析了,也不贴代码在这里了。源码改这2个地方:
1) frameworks/base/core/res/res/values/config.xml里,找到

<bool name="config_dozeAlwaysOnDisplayAvailable">false</bool>

将默认的 false 改为 true :

<bool name="config_dozeAlwaysOnDisplayAvailable">true</bool>

2)同样在 frameworks/base/core/res/res/values/config.xml里,找到

 <string name="config_dozeComponent" translatable="false"></string>

将默认的 false 改为 true :

  <string name="config_dozeComponent" translatable="true"></string>

编译生成image,更新设备image。再次reboot后,在设备中按照这个路径点击,出现了
Settings - Display - Ambient displays,点击进入,可以看到Always on开关。

如下:

在这里插入图片描述

在这里插入图片描述
息屏后,显示:在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐