安卓12-电池过热弹框提示

--- a/frameworks/base/services/core/java/com/android/server/BatteryService.java
+++ b/frameworks/base/services/core/java/com/android/server/BatteryService.java
@@ -516,7 +516,7 @@ public final class BatteryService extends SystemService {
         }
 
         shutdownIfNoPowerLocked();
-        shutdownIfOverTempLocked();
+
 
         if (force || (mHealthInfo.batteryStatus != mLastBatteryStatus ||
                 mHealthInfo.batteryHealth != mLastBatteryHealth ||
@@ -617,17 +617,49 @@ public final class BatteryService extends SystemService {
                 }
             }
 
+
+            tmp_new = mHealthInfo.batteryTemperature;
+            if(tmp_new > tmp_old){
+                if(tmp_old < 620 && tmp_new >= 620){
+                    final Intent statusIntent = new Intent("PNW.clickedThermalShutdownWarning");
+                    mHandler.post(new Runnable() {
+                    @Override
+                        public void run() {
+                            mContext.sendBroadcastAsUser(statusIntent, UserHandle.ALL);
+                        }
+                    });
+                    mHandler.postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            shutdownIfOverTempLocked();
+                        }
+                    },3000);
+                }else if(tmp_old < 575 && tmp_new >= 575){
+                    final Intent statusIntent = new Intent("PNW.clickedTempWarning");
+                    mHandler.post(new Runnable() {
+                    @Override
+                        public void run() {
+                            mContext.sendBroadcastAsUser(statusIntent, UserHandle.ALL);
+                        }
+                    });
+                }else if(tmp_old < 515 && tmp_new >= 515){
+                    final Intent statusIntent = new Intent("PNW.clickedWarmTempWarning");
+                    mHandler.post(new Runnable() {
+                    @Override
+                        public void run() {
+                            mContext.sendBroadcastAsUser(statusIntent, UserHandle.ALL);
+                        }
+                    });
+                }
+            }
+            tmp_old = tmp_new;
             mSequence++;
 
             // Separate broadcast is sent for power connected / not connected
@@ -713,6 +745,9 @@ public final class BatteryService extends SystemService {
         }
     }
 
+    private int tmp_new = 0;
+    private int tmp_old = 0;
+
     private void sendBatteryChangedIntentLocked() {
         //  Pack up the values and broadcast them to everyone
         final Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED);

以上是针对不同电池温度,做的不同弹框显示,最高温直接关机;

下面是针对主板温度状态报警;

hardware/interfaces/health/1.0/types.hal

enum BatteryHealth : int32_t {
    UNKNOWN = 1,
    GOOD = 2,
    OVERHEAT = 3,
    DEAD = 4,
    OVER_VOLTAGE = 5,
    /**
     * Battery experienced an unknown/unspecifid failure.
     */
    UNSPECIFIED_FAILURE = 6,
    COLD = 7,
    OVERTMP = 8,
};

system/core/healthd/BatteryMonitor.cpp

    static SysfsStringEnumMap<BatteryHealth> batteryHealthMap[] = {
            {"Unknown", BatteryHealth::UNKNOWN},
            {"Good", BatteryHealth::GOOD},
            {"Overheat", BatteryHealth::OVERHEAT},
            {"Dead", BatteryHealth::DEAD},
            {"Over voltage", BatteryHealth::OVER_VOLTAGE},
            {"Unspecified failure", BatteryHealth::UNSPECIFIED_FAILURE},
            {"Cold", BatteryHealth::COLD},
            // battery health values from JEITA spec
            {"Warm", BatteryHealth::GOOD},
            {"Cool", BatteryHealth::GOOD},
            {"Hot", BatteryHealth::OVERTMP},
            {NULL, BatteryHealth::UNKNOWN},
    };

hal文件修改后,执行:

hidl-gen -L hash -r android.hardware:hardware/interfaces   -r android.hidl:system/libhidl/transport android.hardware.health@1.0::types
生成新的hash值;

将新的hash值写入hardware/interfaces/current.txt

bd173fc38f70775be019d6f233061e26e6b9d7c06092a3ed4b42ef0c86f17c49 android.hardware.health@1.0::types

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

                } else if (force && mHealthInfo.batteryLevel >= mLowBatteryWarningLevel) {
                    // If being forced, the previous state doesn't matter, we will just
                    // absolutely check to see if we are now above the warning level.
                    mBatteryLevelLow = false;
                }
            }
            if (mHealthInfo.batteryHealth ==8 ) {
                  Log.d(TAG, "processValuesLocked<> mHealthInfo.batteryHealth:" + mHealthInfo.batteryHealth);
                  final Intent statusIntent = new Intent("PNW.clickedTempWarning");
                  mHandler.post(new Runnable() {
                  @Override
                  public void run() {
                        mContext.sendBroadcastAsUser(statusIntent, UserHandle.ALL);
                     }
                 });
            }

            mSequence++;

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值