一、用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、运行效果图