如何让android设备实现AOD

1 篇文章 0 订阅
1 篇文章 0 订阅

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开关。

如下:

在这里插入图片描述

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AOD(Always-On Display)是一种功能,允许设备在熄屏状态下显示一些基本信息,比如时间、日期、通知等。下面是一个简单的AOD熄屏显示代码流程的示例: 1. 获取AOD的权限:在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> ``` 2. 创建AOD服务:创建一个继承自Service类的AOD服务,在服务的onCreate()方法中初始化AOD相关的布局和视图。 3. 设置AOD视图:在AOD服务中,可以使用自定义的布局或者系统提供的AOD布局。通过WindowManager来添加AOD视图到屏幕上: ```java WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, PixelFormat.TRANSPARENT); WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); windowManager.addView(aodView, params); ``` 4. 监听屏幕状态:注册BroadcastReceiver监听屏幕状态变化,当屏幕熄屏时启动AOD服务,并在屏幕点亮时停止AOD服务。 5. 管理电源锁:使用PowerManager来管理设备的电源状态,以便在屏幕熄屏时保持AOD服务运行。 这只是一个简单的AOD熄屏显示代码流程示例,实际开发中可能需要根据具体需求进行更多的定制和适配。请注意,不同的Android版本可能会有所差异,需要根据目标设备的要求进行相应调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值