屏幕超时休眠-Android13

屏幕超时休眠-Android13

  • 1、设置界面
    • 1.2 属性值
      • 1.2.1 默认值
      • 1.2.2 最小值限制
    • 1.3 属性值疑问 Settings.System.SCREEN_OFF_TIMEOUT
  • 2、超时灭屏
    • 2.1 锁定屏幕的超时
    • 2.2 屏幕灭屏的超时
  • 3、永不休眠
  • * 关键日志

1、设置界面

在这里插入图片描述
packages/apps/Settings/src/com/android/settings/display/ScreenTimeoutSettings.java
packages/apps/Settings/res/xml/screen_timeout_settings.xml

12-16 12:13:54.707  7976  7976 D SettingsActivity: Switching to fragment com.android.settings.display.ScreenTimeoutSettings

1.2 属性值

Settings.System.SCREEN_OFF_TIMEOUT

adb shell settings get System screen_off_timeout

packages/apps/Settings/res/values/arrays.xml

    <!-- Display settings.  The delay in inactivity before the screen is turned off. These are shown in a list dialog. --><string-array name="screen_timeout_entries"><item>15 seconds</item><item>30 seconds</item><item>1 minute</item><item>2 minutes</item><item>5 minutes</item><item>10 minutes</item><item>30 minutes</item></string-array><!-- Do not translate. --><string-array name="screen_timeout_values" translatable="false"><!-- Do not translate. --><item>15000</item><!-- Do not translate. --><item>30000</item><!-- Do not translate. --><item>60000</item><!-- Do not translate. --><item>120000</item><!-- Do not translate. --><item>300000</item><!-- Do not translate. --><item>600000</item><!-- Do not translate. --><item>1800000</item></string-array>

1.2.1 默认值

def_screen_off_timeout : frameworks/base/packages/SettingsProvider/res/values/defaults.xml

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

    private void loadSystemSettings(SQLiteDatabase db) {SQLiteStatement stmt = null;try {stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"+ " VALUES(?,?);");loadBooleanSetting(stmt, Settings.System.DIM_SCREEN,R.bool.def_dim_screen);loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,R.integer.def_screen_off_timeout);// Set default cdma DTMF typeloadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0);// Set default hearing aidloadSetting(stmt, Settings.System.HEARING_AID, 0);// Set default tty modeloadSetting(stmt, Settings.System.TTY_MODE, 0);loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS,R.integer.def_screen_brightness);loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_FOR_VR,com.android.internal.R.integer.config_screenBrightnessForVrSettingDefault);loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE,R.bool.def_screen_brightness_automatic_mode);loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION,R.bool.def_accelerometer_rotation);loadIntegerSetting(stmt, Settings.System.USER_ROTATION, R.integer.def_user_rotation);loadDefaultHapticSettings(stmt);loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,R.bool.def_notification_pulse);loadUISoundEffectsSettings(stmt);loadIntegerSetting(stmt, Settings.System.POINTER_SPEED,R.integer.def_pointer_speed);/** IMPORTANT: Do not add any more upgrade steps here as the global,* secure, and system settings are no longer stored in a database* but are kept in memory and persisted to XML.** See: SettingsProvider.UpgradeController#onUpgradeLocked*/} finally {if (stmt != null) stmt.close();}}

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

<integer name="def_screen_off_timeout">60000</integer>

1.2.2 最小值限制

frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java

mMinimumScreenOffTimeoutConfig = resources.getInteger(com.android.internal.R.integer.config_minimumScreenOffTimeout);
Math.max(timeout, mMinimumScreenOffTimeoutConfig);

1.3 属性值疑问 Settings.System.SCREEN_OFF_TIMEOUT

在设置屏幕超时代码代码中,最大值可以为“Long.MAX_VALUE”,属性设置Settings.System.putLong(context.getContentResolver(), SCREEN_OFF_TIMEOUT, value);,但是实质最大值只能是Integer.MAX_VALUE(2147483647);该属性实质在fwk中是Integer保存,获取方式mScreenOffTimeoutSetting = Settings.System.getIntForUser(resolver, Settings.System.SCREEN_OFF_TIMEOUT, DEFAULT_SCREEN_OFF_TIMEOUT, UserHandle.USER_CURRENT);
在这里插入图片描述

frameworks/base/packages/SettingsProvider/src/android/provider/settings/validators/SettingsValidators.javaNON_NEGATIVE_INTEGER_VALIDATOR 检查非法值
在这里插入图片描述

    private Long getMaxScreenTimeout(Context context) {if (context == null) {return Long.MAX_VALUE;}final DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);if (dpm == null) {return Long.MAX_VALUE;}mAdmin = RestrictedLockUtilsInternal.checkIfMaximumTimeToLockIsSet(context);if (mAdmin != null) {return dpm.getMaximumTimeToLock(null /* admin */, UserHandle.myUserId());}return Long.MAX_VALUE;}private String getCurrentSystemScreenTimeout(Context context) {if (context == null) {return Long.toString(FALLBACK_SCREEN_TIMEOUT_VALUE);} else {return Long.toString(Settings.System.getLong(context.getContentResolver(),SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE));}}private void setCurrentSystemScreenTimeout(Context context, String key) {try {if (context != null) {final long value = Long.parseLong(key);mMetricsFeatureProvider.action(context, SettingsEnums.ACTION_SCREEN_TIMEOUT_CHANGED,(int) value);Settings.System.putLong(context.getContentResolver(), SCREEN_OFF_TIMEOUT, value);}} catch (NumberFormatException e) {Log.e(TAG, "could not persist screen timeout setting", e);}}

2、超时灭屏

2.1 锁定屏幕的超时

更新延时 mLockScreenTimeout 执行 mScreenLockTimeout

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

mLockScreenTimeout = Settings.System.getIntForUser(resolver,Settings.System.SCREEN_OFF_TIMEOUT, 0, UserHandle.USER_CURRENT);
mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);class ScreenLockTimeout implements Runnable {Bundle options;@Overridepublic void run() {synchronized (this) {if (localLOGV) Log.v(TAG, "mScreenLockTimeout activating keyguard");if (mKeyguardDelegate != null) {mKeyguardDelegate.doKeyguardTimeout(options);}mLockScreenTimerActive = false;mLockNowPending = false;options = null;}}public void setLockOptions(Bundle options) {this.options = options;}}

2.2 屏幕灭屏的超时

updateUserActivitySummaryLocked更新mUserActivitySummary的值,用户活动超时时调用updateUserActivitySummaryLocked,这里获取getScreenOffTimeoutLocked状态更新

frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java

mScreenOffTimeoutSetting = Settings.System.getIntForUser(resolver, Settings.System.SCREEN_OFF_TIMEOUT, DEFAULT_SCREEN_OFF_TIMEOUT, UserHandle.USER_CURRENT);@GuardedBy("mLock")private long getScreenOffTimeoutLocked(long sleepTimeout, long attentiveTimeout) {long timeout = mScreenOffTimeoutSetting;if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);}if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {timeout = Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);}if (sleepTimeout >= 0) {timeout = Math.min(timeout, sleepTimeout);}if (attentiveTimeout >= 0) {timeout = Math.min(timeout, attentiveTimeout);}return Math.max(timeout, mMinimumScreenOffTimeoutConfig);}private void handleUserActivityTimeout() { // runs on handler threadsynchronized (mLock) {if (DEBUG_SPEW) {Slog.d(TAG, "handleUserActivityTimeout");}mDirty |= DIRTY_USER_ACTIVITY;updatePowerStateLocked();}}/*** Updates the value of mUserActivitySummary to summarize the user requested* state of the system such as whether the screen should be bright or dim.* Note that user activity is ignored when the system is asleep.** This function must have no other side-effects.*/@GuardedBy("mLock")private void updateUserActivitySummaryLocked(long now, int dirty) {// Update the status of the user activity timeout timer.if ((dirty & (DIRTY_DISPLAY_GROUP_WAKEFULNESS | DIRTY_WAKE_LOCKS | DIRTY_USER_ACTIVITY| DIRTY_WAKEFULNESS | DIRTY_SETTINGS | DIRTY_ATTENTIVE)) == 0) {return;}mHandler.removeMessages(MSG_USER_ACTIVITY_TIMEOUT);final long attentiveTimeout = getAttentiveTimeoutLocked();final long sleepTimeout = getSleepTimeoutLocked(attentiveTimeout);long screenOffTimeout = getScreenOffTimeoutLocked(sleepTimeout,attentiveTimeout);final long screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);screenOffTimeout =getScreenOffTimeoutWithFaceDownLocked(screenOffTimeout, screenDimDuration);final boolean userInactiveOverride = mUserInactiveOverrideFromWindowManager;long nextTimeout = -1;boolean hasUserActivitySummary = false;for (int idx = 0; idx < mPowerGroups.size(); idx++) {int groupUserActivitySummary = 0;long groupNextTimeout = 0;final PowerGroup powerGroup = mPowerGroups.valueAt(idx);final int wakefulness = powerGroup.getWakefulnessLocked();if (wakefulness != WAKEFULNESS_ASLEEP) {final long lastUserActivityTime = powerGroup.getLastUserActivityTimeLocked();final long lastUserActivityTimeNoChangeLights =powerGroup.getLastUserActivityTimeNoChangeLightsLocked();if (lastUserActivityTime >= powerGroup.getLastWakeTimeLocked()) {groupNextTimeout = lastUserActivityTime + screenOffTimeout - screenDimDuration;if (now < groupNextTimeout) {groupUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;} else {groupNextTimeout = lastUserActivityTime + screenOffTimeout;if (now < groupNextTimeout) {groupUserActivitySummary = USER_ACTIVITY_SCREEN_DIM;}}}if (groupUserActivitySummary == 0 && lastUserActivityTimeNoChangeLights>= powerGroup.getLastWakeTimeLocked()) {groupNextTimeout = lastUserActivityTimeNoChangeLights + screenOffTimeout;if (now < groupNextTimeout) {if (powerGroup.isPolicyBrightLocked() || powerGroup.isPolicyVrLocked()) {groupUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;} else if (powerGroup.isPolicyDimLocked()) {groupUserActivitySummary = USER_ACTIVITY_SCREEN_DIM;}}}if (groupUserActivitySummary == 0) {if (sleepTimeout >= 0) {final long anyUserActivity = Math.max(lastUserActivityTime,lastUserActivityTimeNoChangeLights);if (anyUserActivity >= powerGroup.getLastWakeTimeLocked()) {groupNextTimeout = anyUserActivity + sleepTimeout;if (now < groupNextTimeout) {groupUserActivitySummary = USER_ACTIVITY_SCREEN_DREAM;}}} else {groupUserActivitySummary = USER_ACTIVITY_SCREEN_DREAM;groupNextTimeout = -1;}}if (groupUserActivitySummary != USER_ACTIVITY_SCREEN_DREAM&& userInactiveOverride) {if ((groupUserActivitySummary &(USER_ACTIVITY_SCREEN_BRIGHT | USER_ACTIVITY_SCREEN_DIM)) != 0) {// Device is being kept awake by recent user activityif (mOverriddenTimeout == -1) {// Save when the next timeout would have occurredmOverriddenTimeout = groupNextTimeout;}}groupUserActivitySummary = USER_ACTIVITY_SCREEN_DREAM;groupNextTimeout = -1;}if ((groupUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0&& (powerGroup.getWakeLockSummaryLocked()& WAKE_LOCK_STAY_AWAKE) == 0) {groupNextTimeout = mAttentionDetector.updateUserActivity(groupNextTimeout,screenDimDuration);}if (isAttentiveTimeoutExpired(powerGroup, now)) {groupUserActivitySummary = 0;groupNextTimeout = -1;}hasUserActivitySummary |= groupUserActivitySummary != 0;if (nextTimeout == -1) {nextTimeout = groupNextTimeout;} else if (groupNextTimeout != -1) {nextTimeout = Math.min(nextTimeout, groupNextTimeout);}}powerGroup.setUserActivitySummaryLocked(groupUserActivitySummary);if (DEBUG_SPEW) {Slog.d(TAG, "updateUserActivitySummaryLocked: groupId=" + powerGroup.getGroupId()+ ", mWakefulness=" + wakefulnessToString(wakefulness)+ ", mUserActivitySummary=0x" + Integer.toHexString(groupUserActivitySummary)+ ", nextTimeout=" + TimeUtils.formatUptime(groupNextTimeout));}}final long nextProfileTimeout = getNextProfileTimeoutLocked(now);if (nextProfileTimeout > 0) {nextTimeout = Math.min(nextTimeout, nextProfileTimeout);}if (hasUserActivitySummary && nextTimeout >= 0) {scheduleUserInactivityTimeout(nextTimeout);}}private void scheduleUserInactivityTimeout(long timeMs) {final Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT);msg.setAsynchronous(true);mHandler.sendMessageAtTime(msg, timeMs);}

3、永不休眠

    1. PowerManagerServicePhoneWindowManager 处理
    1. 直接配置 Settings.System.SCREEN_OFF_TIMEOUTInteger.MAX_VALUE2147483647 = 24.855 天 一般没有这么长时间亮屏待机 ),设置更长时间替换 Settings.System.SCREEN_OFF_TIMEOUT属性 VALIDATORS.put(System.SCREEN_OFF_TIMEOUT, NON_NEGATIVE_INTEGER_VALIDATOR)NON_NEGATIVE_INTEGER_VALIDATOR检测为NONE_NEGATIVE_LONG_VALIDATOR

* 关键日志

SettingsActivity:|SubSettings: Launching fragment|start u|ScreenTimeout:|sysui_multi_action: \[757,1754|screen_toggled:|sysui_multi_action:.*screen_timeout|power_screen_state:|PowerManagerService: Waking up|PowerManagerService: Going to sleep

sysui_multi_action: [757,1754,758,4,759,15000]
sysui_multi_action: [757,1754,758,4,759,30000]
sysui_multi_action: [757,1754,758,4,759,60000]
sysui_multi_action: [757,1754,758,4,759,120000]
sysui_multi_action: [757,1754,758,4,759,300000]
sysui_multi_action: [757,1754,758,4,759,600000]
sysui_multi_action: [757,1754,758,4,759,1800000]

12-17 07:13:37.536   645   678 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.google.android.apps.nexuslauncher/.NexusLauncherActivity (has extras)} from uid 0
12-17 07:13:40.128   645  2427 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings bnds=[581,351][858,771]} from uid 10149
12-17 07:13:46.309   645  2510 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cmp=com.android.settings/.SubSettings (has extras)} from uid 1000
12-17 07:13:46.408  7976  7976 D SettingsActivity: Switching to fragment com.android.settings.DisplaySettings
12-17 07:13:46.409  7976  7976 D SubSettings: Launching fragment com.android.settings.DisplaySettings
12-17 07:13:48.942  7976  7976 I sysui_multi_action: [757,830,758,4,833,0,854,screen_timeout,1089,0]
12-17 07:13:48.948   645  1716 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cmp=com.android.settings/.SubSettings (has extras)} from uid 1000
12-17 07:13:49.036  7976  7976 D SettingsActivity: Switching to fragment com.android.settings.display.ScreenTimeoutSettings
12-17 07:13:49.037  7976  7976 D SubSettings: Launching fragment com.android.settings.display.ScreenTimeoutSettings
12-17 07:13:50.690  7976  7976 I sysui_multi_action: [757,1754,758,4,759,15000]
12-17 07:13:52.884  7976  7976 I sysui_multi_action: [757,1754,758,4,759,30000]
12-17 07:13:54.152  7976  7976 I sysui_multi_action: [757,1754,758,4,759,60000]
12-17 07:13:55.559  7976  7976 I sysui_multi_action: [757,1754,758,4,759,120000]
12-17 07:13:57.041  7976  7976 I sysui_multi_action: [757,1754,758,4,759,300000]
12-17 07:13:58.400  7976  7976 I sysui_multi_action: [757,1754,758,4,759,600000]
12-17 07:13:59.653  7976  7976 I sysui_multi_action: [757,1754,758,4,759,1800000]
12-17 07:14:01.446  7976  7976 I sysui_multi_action: [757,1754,758,4,759,15000]
12-17 07:14:16.400   645   708 I PowerManagerService: Going to sleep due to timeout (uid 1000)...
12-17 07:14:17.032   645   645 I power_screen_state: [0,3,0,0,628]
12-17 07:14:17.032   645   645 I screen_toggled: 0
12-17 07:14:17.032   645   645 I sysui_multi_action: [757,804,799,screen_timeout,801,15,802,1]
12-17 07:14:28.765   645   793 I PowerManagerService: Waking up from Asleep (uid=1000, reason=WAKE_REASON_POWER_BUTTON, details=android.policy:POWER)...
12-17 07:14:28.770   645   645 I screen_toggled: 1
12-17 07:14:28.905   645   645 I power_screen_state: [1,0,0,0,110]

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

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

相关文章

上海迅软DSE管控策略大揭秘:如何让企业桌面管理更从容?

随着信息化程度的提高&#xff0c;政企单位在面对愈发复杂且不可控的内网安全问题时&#xff0c;常常因缺乏有效的技术手段而无法建立完善的管理机制&#xff0c;导致企业长期处于被动管理的状态。这使得在发生数据安全事件后&#xff0c;快速而有效地进行处置的能力相对薄弱。…

机器学习——自领域适应作业

任务 游戏里面的话有很多跟现实不一样的情况。 想办法让中间的特征更加的接近&#xff0c;让feat A适应feat B&#xff0c;产生相对正常的输出。 在有标签数据和没有数据的上面进行训练&#xff0c;并能预测绘画图像。 数据集 训练5000张总数&#xff0c;每类有500张测试100…

【二叉树 OJ题】二叉树基础知识 与 OJ题完成(二叉树构建与遍历问题,子树查找问题)

二叉树 &#xff01; 二叉树概念与OJ题完成 二叉树 &#xff01;1 树1.1 树的概念1.2 树的相关概念1.3 树的表示方式 2 二叉树2.1 二叉树的概念2.2 二叉树的构建2.3 特殊的二叉树 3 二叉树OJ题的解决3.1 二叉树构建与遍历问题3.1.1 二叉树遍历3.1.2 二叉树构建3.1.3 题目完成 3…

玩转 TableAgent 数据智能分析

一、什么是数据智能分析&#xff1f; 数据智能分析是指利用先进的技术和工具对大量数据进行收集、整理、分析和挖掘&#xff0c;以获取有益的信息和见解。这种分析通常涉及人工智能、机器学习、数据挖掘和统计分析等技术&#xff0c;旨在揭示数据背后隐藏的模式、关联和趋势&a…

【普中】基于51单片机简易计算器数码管显示设计( proteus仿真+程序+实物演示+讲解视频)

【普中开发板】基于51单片机简易计算器数码管显示设计( proteus仿真程序实物演示讲解视频&#xff09; Proteus 仿真&#xff1a;Proteus 8.16(有低版本) 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;P04 1. 主要功能&#xff1a…

GAMES101-Homework4

原理&#xff1a;就是上张图片 //该段代码表示四个点的情况&#xff0c;相当于举例子去计算上诉的公式 void naive_bezier(const std::vector<cv::Point2f> &points, cv::Mat &window) {auto &p_0 points[0];auto &p_1 points[1];auto &p_2 poi…

AI数字人直播问题及解决方案!

青否数字人SaaS系统&#xff08;数字人源码&#xff1a;zhibo175&#xff09;目前支持哪些平台使用数字人直播 目前支持的平台有&#xff1a;抖音、快手、视频号、淘宝/天猫、京东、小红书、拼多多&#xff0c;哔哩哔哩&#xff0c;tiktok&#xff0c;阿里国际站&#xff0c;用…

设计模式 简单工厂 工厂方法模式 抽象工厂模式 Spring 工厂 BeanFactory 解析

工厂模式介绍 工厂模式是我们最常用的实例化对象模式了&#xff0c;是用工厂方法代替new操作的一种模式。它是创建型模式。 简单工厂 简单工厂模式是指由一个工厂对象决定创建出哪一种产品类的实例, 但它不属于GOF 23种设计模式 简单工厂适用于工厂类负责创建的对象较少的场景,…

网络管理员推荐的网络监控软件-OpManager

网络是企业背后的基础&#xff0c;这些网络可帮助企业将信息保存在一个集中位置&#xff0c;需要并限制所有其他入站请求的人都可以访问。那么&#xff0c;如何提供持续的一流最终用户体验并维护快速发展的网络呢&#xff1f;只有借助可靠的实时网络监控工具&#xff0c;才能监…

nodejs配置express服务器,运行自动打开浏览器

查看专栏目录 Network 灰鸽宝典专栏主要关注服务器的配置&#xff0c;前后端开发环境的配置&#xff0c;编辑器的配置&#xff0c;网络服务的配置&#xff0c;网络命令的应用与配置&#xff0c;windows常见问题的解决等。 文章目录 设置方法&#xff1a;1&#xff0c;安装nodej…

python实现一张图片按指定宽高截取成多张图片

1、导入所需的包 import os from PIL import Image 2、获取源图片 path_img image img_dir os.listdir(path_img) 3、循环读取源图片并按指定宽高进行自动截图保存 for i in range(len(img_dir)):id img_dir[i].split(.)[0]img Image.open(path_img / img_dir[i])si…

【C++高阶(七)】C++异常处理的方式

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 异常处理的方式 1. 前言2. C语言处理异常的方式…

Transformer架构详解

文章目录 引言1. Transformer架构详解1.1 编码器与解码器1.1.1 编码器&#xff08;Encoder&#xff09;1.1.2 解码器&#xff08;Decoder&#xff09; 2. 核心代码2.1 自注意力&#xff08;Self-Attention&#xff09;机制2.2 多头注意力&#xff08;Multi-Head Attention&…

Python PIP安装pycorrector、kemln报错

本来想装个pycorrector用一下&#xff0c;结果在安装其依赖包kemln的时候疯狂报错&#xff0c;报错关键词包括但不限于Bash、Cmake&#xff0c;C啥的&#xff0c;搜了很多文章&#xff0c;终于摸索到了安装的办法。 1、安装bash 去官网https://gitforwindows.org/下载bash&am…

消费者痛点怎么分析,不同行业如何营销

消费者的痛点是品牌营销中的关键因素&#xff0c;因为准确把握消费者的痛点&#xff0c;可以为品牌带来更大的市场机会。今天和大家探讨下消费者痛点怎么分析&#xff0c;不同行业如何营销&#xff1f; 今天我们会从分类、洞察、场景分析、分级与评判以及不同行业细分的角度来进…

neuq-acm预备队训练week 9 P8604 [蓝桥杯 2013 国 C] 危险系数

题目背景 抗日战争时期&#xff0c;冀中平原的地道战曾发挥重要作用。 题目限制 题目描述 地道的多个站点间有通道连接&#xff0c;形成了庞大的网络。但也有隐患&#xff0c;当敌人发现了某个站点后&#xff0c;其它站点间可能因此会失去联系。 我们来定义一个危险系数 DF…

Android动画(四)——属性动画ValueAnimator的妙用

目录 介绍 效果图 代码实现 xml文件 介绍 ValueAnimator是ObjectAnimator的父类&#xff0c;它继承自Animator。ValueAnimaotor同样提供了ofInt、ofFloat、ofObject等静态方法&#xff0c;传入的参数是动画过程的开始值、中间值、结束值来构造动画对象。可以将ValueAnimator看…

环境搭建及源码运行_java环境搭建_maven

书到用时方恨少、觉知此时要躬行&#xff1b;拥有技术&#xff0c;成就未来&#xff0c;抖音视频教学地址&#xff1a;​​​​​​​ ​​​​​​​ 1、介绍 1&#xff09;管理项目依赖和版本 统一的项目依赖和版本管理 ​​​​​​​​​​​ 2&#xff09;Maven支持多模块…

From Human Attention to Computational Attention (1)

”is the taking possession by the mind, in clear and vivid form, of one out of what seem several simultaneously possible objects or trains of thought. It implies withdrawal from some things in order to deal effectively with others“&#xff0c;William Jame…

6.任务分配与执行总体设计实现

1.设计 执行任务找一个落地场景&#xff1a;连接设备采集参数。设备有不同的协议&#xff0c;如&#xff1a;modbus rtu、modbus tcp、opc ua、simens s7等。协议多种多样&#xff0c;需要的参数也不同&#xff0c;连接及任务执行参数存放在t_job表的link_spec中&#xff0c;任…