Android-P夜间模式

news2025/1/20 11:02:13

0 前言

    Android-P可通过“Developer options > Night mode”打开夜间模式,本文研究其配置和效果。

验证环境:Pixel 3a、模拟器

1 设置

图1.1 Night mode

     上图对应XML配置如下:

        <ListPreference
            android:key="dark_ui_mode"
            android:title="@string/dark_ui_mode"
            android:dialogTitle="@string/dark_ui_mode_title"
            android:entries="@array/dark_ui_mode_entries"
            android:entryValues="@array/dark_ui_mode_values" />
<!-- @file: packages/apps/Settings/res/xml/development_settings.xml -->
图1.2 Set Night mode

    上图对应XML配置如下:

    <!-- Titles for ui dark mode preference. -->
    <string-array name="dark_ui_mode_entries" >
        <item>Automatic (based on time of day)</item>
        <item>Always on</item>
        <item>Always off</item>
    </string-array>

    <!-- Values for ui dark mode preference. -->
    <string-array name="dark_ui_mode_values" translatable="false" >
        <item>auto</item>
        <item>yes</item>
        <item>no</item>
    </string-array>
<!-- @file: packages/apps/Settings/res/values/arrays.xml -->

    对应代码如下:

packages/apps/Settings/src/com/android/settings/development/DarkUIPreferenceController.java

frameworks/base/core/java/android/app/UiModeManager.java

frameworks/base/core/java/android/app/IUiModeManager.aidl

frameworks/base/services/core/java/com/android/server/UiModeManagerService.java

    从下面函数来看,需要“MODIFY_DAY_NIGHT_MODE”权限才能设置夜间模式:

        @Override
        public void setNightMode(int mode) {
            if (isNightModeLocked() &&  (getContext().checkCallingOrSelfPermission(
                    android.Manifest.permission.MODIFY_DAY_NIGHT_MODE)
                    != PackageManager.PERMISSION_GRANTED)) {
                Slog.e(TAG, "Night mode locked, requires MODIFY_DAY_NIGHT_MODE permission");
                return;
            }
            ...
        }
// @file: frameworks/base/services/core/java/com/android/server/UiModeManagerService.java

    设置结果保存到如下字段中:

public static final String UI_NIGHT_MODE = "ui_night_mode";
// @file: frameworks/base/core/java/android/provider/Settings.java

    可通过下面命令查看当前设置:

adb shell settings get secure ui_night_mode
# 0 - Automatic (based on time of day)
# 1 - Always on
# 2 - Always off

2 实现

TODO

参考资料

[1]Android P 开启和关闭夜间模式以及调节浓度的方法

[2]android 夜间模式

[3]简洁优雅地实现夜间模式

[4]Android夜间模式 - DayNight Mode的使用

[5]日夜切换两种模式

[6]Android中夜间模式的三种实现方式

[7]Android日间模式夜间模式切换(无需重启)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/44012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】六、程序流程控制综合训练

文章目录实验目的一、列表定义二、元组定义三、列表的常用操作append() -- 向列表的尾部添加元素insert(index&#xff0c;object) -- 向指定的下标处添加元素sort&#xff08;&#xff09;-- 进行排序&#xff08;从下到大 int类型&#xff09;可以对字母进行排序&#xff08;…

多态原理、虚表指针与虚基表的内存布局。

文章目录前言多态虚函数静态类型与动态类型重载、覆盖和隐藏的区别final和override虚函数的默认实参虚析构函数在构造函数和析构函数中调用虚函数多态原理各种形式继承的虚函数内存布局单一继承无覆盖单一继承有覆盖单一虚拟继承有覆盖多继承无覆盖多继承有覆盖菱形继承有覆盖菱…

STC/MLLT--学习笔记

gmm建模方差使用对角矩阵的前提是假设特征之间相互独立&#xff0c;使用full或者block-diagonal矩阵可以对相关性的特征建模&#xff0c;但是参数增多。为了解决使用这个问题&#xff0c;有两种方法&#xff1a; feature-space 使用DCT或者LDA去相关model-space 不同的模型可以…

连续时间系统的时域分析

一.微分方程的求解 1.求微分方程的齐次解 &#xff08;1&#xff09;写出特征方程并求解 2.写出齐次解 2.求微分方程的特解 已知 &#xff08;1&#xff09;根据表2-2&#xff0c;写出特解函数 ​​​​​​​ &#xff08;2&#xff09;带入并求解 3.完全解 二.微分方…

基于GRU与注意力机制实现法语-葡萄牙语的翻译详细教程 数据+代码

本教程通过机器翻译的例子来介绍和实现一个简单的机器翻译方法,机器翻译是指将一段文本从源语言(如语言A)自动翻译到目标语言(如语言B)。本教程通过加载和预处理数据、构造编码器和解码器、训练模型、结果评价得到一个可以应用的机器翻译工具。 1.2 任务描述 神经机器翻译方…

uni-app 介绍及使用

一、什么是uni-app uni-app由dcloud公司开发的多端融合框架&#xff0c;是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到iOS、Android、Web&#xff08;响应式&#xff09;、以及各种小程序&#xff08;微信/支付宝/百度/头条/飞…

单文件组件环境配置步骤---vue-cli版

因为浏览器只认识&#xff1a;html、css、js文件&#xff0c;其他一概不认识&#xff1b; 所以要把单文件组件的vue文件转化为上面浏览器能认识的文件&#xff1b; 有两种环境配置途径&#xff1a; 第一种就是&#xff1a;配置webpack环境&#xff0c;要下载很多东西&#x…

灰色预测GM(1.1)模型及matlab程序负荷预测

灰色GM(1.1)预测模型 GM&#xff08;1.1&#xff09;模型由包含单一变量的一阶微分方程构成的模型&#xff0c;是灰色模型中最常用的模型。 设有负荷变量为的原始数据列: (3-1) 生成一阶累加数据列&#xff1a; (3-2) 其中 (3-3) 一阶微分方程的解呈指数增长形式&#xff0c…

URLDNS利用链分析

目录 前言&#xff1a; (一&#xff09;原理 &#xff08;二&#xff09;利用链 再来分析 URLDNS.java 这个文件&#xff0c;并且在入口处设置断点进行调试&#xff1a; &#xff08;三&#xff09; POC 参考资料 前言&#xff1a; URLDNS是Java反序列化中比较简单的一个链…

引擎入门 | Unity UI简介–第2部分(1)

欢迎回来! 在这个三部分教程系列的第二部分中&#xff0c;你将学习如何在用户界面中加入动画。 在上一个部分中你学习并创建了一个带有两个按钮的场景&#xff0c;也学会了如何使用图像、按钮和文本UI控件&#xff0c;并学习了RectTransform、Anchors和Pivots等核心概念&#…

元宇宙的核心技术之我见

14天学习训练营导师课程&#xff1a; 张子良《 元宇宙体系结构、关键技术和实践探索》 前言 提起元宇宙&#xff0c;相比读者都有所耳闻&#xff0c;而且元宇宙最近两年时间里异常的火&#xff0c;堪比之前的人工智能的火爆场景&#xff0c;甚至要超越人工智能的火爆度了。但是…

kubernetes namespace pod label deployment介绍与命令

kubernetes namespace pod label deployment 介绍与命令 1&#xff1a; namespace Namespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下&#xff0c;kubernetes集群中的所有的Pod都是可以…

STM32实战总结:HAL之wifi

关于无线传输的基础知识&#xff0c;参考&#xff1a; 无线通信技术概览_路溪非溪的博客-CSDN博客 学了这么多&#xff0c;发现信息技术主要就是数据的存储、处理以及传输这几个过程。通过各种各样的技术&#xff0c;来实现这几个目标。 wifi模块 现在常用的是wifi模块&#xf…

今天面了个腾讯拿38K出来的,让我见识到了基础的天花板

各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 俗话说得好&#xff0c;他山之石&#xff0c;可以攻玉&#xff0c;多看多借鉴还是有帮助的&#xff0c;这次腾讯也在疯狂…

自动化测试如何实施落地?详细教程来了

目录 前言 落地前&#xff1a;分析因素 开展前&#xff1a;评估价值 落地过程&#xff1a;解决问题 推广运营&#xff1a;关注反馈&输出价值 文末总结 重点&#xff1a;配套学习资料和视频教学 前言 这篇文章&#xff0c; 就聊聊自动化项目如何落地&#xff0c;以及…

25. [Python GUI] PyQt5中拖放的基本原理

PyQt5的拖放 拖放涉及到的主要的一些类如下所示&#xff1a; 一、拖放的基本原理 1.1 拖放的动作 拖放操作包括两个动作&#xff1a; 拖动(drag)放下(drop 或称为放置)。 当被拖动时拖动的数据会被存储为 MIME 类型的对象&#xff0c; MIME 类型使用 QMimeData 类来描述。…

C++——new和delete关键字

什么是new和delete new和delete不是函数&#xff0c;和sizeof一样都是C定义的关键字&#xff0c;不同的是sizeof在编译时就可以确定其返回值&#xff0c;而new和delete相对复杂 示例 string *ps new string("hello world");如果换做c语言&#xff0c;上面这句话就…

数据库——数据库备份与恢复

目录 原因&#xff1a; 数据库的备份与恢复&#xff1a; 1、使用MySQLdump命令备份 2、恢复数据库 表的导入和导出 1、表的导出 2、表的导入 原因&#xff1a; 尽管采取了一些管理措施来保证数据库的安全&#xff0c;但是不确定的意外情况总是有可能造成数据的损失&#xff0c;…

数据库理论 05 关系数据库设计——基于《数据库系统概念》第七版

通过E-R图转换得出一组关系模式后 **选择1&#xff1a;**把一些关系模式合并为更大的关系 —— 会产生过多的数据冗余 inst_dept(ID, name, salary, dept_name, building, budget)如果通过E-R模型转换得出如下两个关系模式 sec_class(sec_id, building, room_number) and se…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java计算机专业建设管理系统3286d

面对老师五花八门的设计要求&#xff0c;首先自己要明确好自己的题目方向&#xff0c;并且与老师多多沟通&#xff0c;用什么编程语言&#xff0c;使用到什么数据库&#xff0c;确定好了&#xff0c;在开始着手毕业设计。 1&#xff1a;选择课题的第一选择就是尽量选择指导老师…