2022-06-10 AndroidR (rk)电池温度过高弹出提示框(用adb 发广播来测试,在BatteryService里获取电池问题,发现温度过高发广播弹窗)

一、用adb 发广播的形式会弹出电池温度过高弹出提示框。

二、接收广播的地方在frameworks\base\packages\SystemUI\src\com\android\systemui\power\PowerNotificationWarnings.java

三、在BatteryService里获取电池温度,发现温度过高发广播弹窗。

 1、修改的代码如下

diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
old mode 100644
new mode 100755
index 1548098..ebc062f
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1085,7 +1085,7 @@
 
     <!-- Display low battery warning when battery level dips to this value -->
     <integer name="config_lowBatteryWarningLevel">15</integer>
-
+    <integer name="config_BatteryemperatureWarning">100</integer>
     <!-- The default suggested battery % at which we enable battery saver automatically.  -->
     <integer name="config_lowBatteryAutoTriggerDefaultLevel">15</integer>
 
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
old mode 100644
new mode 100755
index 3ef0a8d..252aa39
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1948,6 +1948,7 @@
   <java-symbol type="integer" name="config_lightSensorWarmupTime" />
   <java-symbol type="integer" name="config_lowBatteryCloseWarningBump" />
   <java-symbol type="integer" name="config_lowBatteryWarningLevel" />
+  <java-symbol type="integer" name="config_BatteryemperatureWarning" />
   <java-symbol type="integer" name="config_networkPolicyDefaultWarning" />
   <java-symbol type="integer" name="config_networkTransitionTimeout" />
   <java-symbol type="integer" name="config_networkNotifySwitchType" />
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
old mode 100644
new mode 100755
index 5cb52f7..c6861cc
--- a/services/core/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -166,6 +166,7 @@ public final class BatteryService extends SystemService {
     private int mLastInvalidCharger;
 
     private int mLowBatteryWarningLevel;
+    private int mBatteryWarningTemperature;
     private int mLowBatteryCloseWarningLevel;
     private int mShutdownBatteryTemperature;
 
@@ -209,6 +210,8 @@ public final class BatteryService extends SystemService {
                 com.android.internal.R.integer.config_criticalBatteryWarningLevel);
         mLowBatteryWarningLevel = mContext.getResources().getInteger(
                 com.android.internal.R.integer.config_lowBatteryWarningLevel);
+        mBatteryWarningTemperature = mContext.getResources().getInteger(
+                com.android.internal.R.integer.config_BatteryemperatureWarning);
         mLowBatteryCloseWarningLevel = mLowBatteryWarningLevel + mContext.getResources().getInteger(
                 com.android.internal.R.integer.config_lowBatteryCloseWarningBump);
         mShutdownBatteryTemperature = mContext.getResources().getInteger(
@@ -666,6 +669,15 @@ public final class BatteryService extends SystemService {
                 });
             }
 
+            if (mHealthInfo.batteryTemperature > mBatteryWarningTemperature ) {
+                  final Intent statusIntent = new Intent("PNW.clickedTempWarning");
+                  mHandler.post(new Runnable() {
+                  @Override
+                  public void run() {
+                        mContext.sendBroadcastAsUser(statusIntent, UserHandle.ALL);
+                     }
+                 });
+            }
             // We are doing this after sending the above broadcasts, so anything processing
             // them will get the new sequence number at that point.  (See for example how testing
             // of JobScheduler's BatteryController works.)

 2、运行效果图

猜你喜欢

转载自blog.csdn.net/qq_37858386/article/details/125225031