android12解决非CarProperty接口深色模式设置后开机无法保持

背景

AOSP AUTO车机系统和手机系统一样都加入了深色模式,可以自动或者用户手动切换显示设色或者浅色两种样式,尤其在夜间开车深色降低亮度能够有效避免司机分神,逐渐成为标配。

但是asop中并没有完整实现自动深色模式下传感器相关底层代码,只留下了java的CarProperty方式进行了回调传递,如果你的系统没有按照标准google接口实现CarProperty就会造成每次开机恢复成模式模式。

我遇到的情况就是公司接口没有标准实现,而是通过串口上报到应用内部,所以需要对现有代码模式这里进行修改。

源码修改

  • 源码:android12/packages/services/Car/service/src/com/android/car/CarNightService.java

可以看到这里每次开机执行后都会读取propertyValue来设置,这里进行了注释。

  • 源码:android12/frameworks/base/services/core/java/com/android/server/UiModeManagerService.java

这里去除了车机系统判断,强制改成了false,因为里面有对车机模式进行判断,导致如果不按照车机google的接口进行实现会造成开机重制深色模式。

  • 源码:/android/packages/services/Car/car_product/overlay/frameworks/base/core/res/res/values/config

配置默认首次开机是否深色模式。

总结

以上方法总结起来其实不是很推荐,因为他破坏了AUTOMOTIVE的相关逻辑,属于强行修改。类似我这种公司规定的不按照标准实现的可以考虑下。

调试命令

可以通过下面adb命令测试系统深色模式是否应用的ui已经匹配。

设置夜间模式是否启动

adb shell settings put secure ui_night_mode 0

具体可设置参数如下:

public static final int FORCED_SENSOR_MODE = 0;//传感器决定(自动)

public static final int FORCED_DAY_MODE = 1;(白色)

public static final int FORCED_NIGHT_MODE = 2;(深色)

相关推荐
GitLqr11 小时前
Flutter 3.44 插件内置 Kotlin (KGP) 双向兼容适配指南
android·flutter·dart
随遇丿而安16 小时前
第11周:Activity 跳转与传值 + 跳转优化
android
私人珍藏库17 小时前
[Android] BBLL 开源第三方B哩电视TV端
android·app·生活·工具·多功能
杉氧19 小时前
跨平台资源管理:一套代码如何搞定 Android、iOS 和 Web 的图片与多语言?
android·架构·android jetpack
安卓修改大师20 小时前
安卓修改大师实战:从反编译到定制的完整APK修改指南
android
柚鸥ASO优化21 小时前
安卓APP推广的“降本增效”密码:守好商店内,打好商店外
android·aso优化
我是一颗柠檬1 天前
【Java项目技术亮点】EXPLAIN深度分析与慢查询治理
android·java·开发语言
Android-Flutter1 天前
android compose shadow 阴影 使用
android·kotlin·compose
帅次1 天前
Android 高级工程师面试:Java 多线程与并发 近1年高频追问 22 题
android·java·面试
2501_943782351 天前
【共创季稿事节】摩斯电码转换器:编码表与双向转换的实现
android·华为·鸿蒙·鸿蒙系统