diff --git a/services/java/com/android/server/BatteryService.java b/services/java/com/android/server/BatteryService.java index 57944fbdfdccf..5cf61bdc659c9 100644 --- a/services/java/com/android/server/BatteryService.java +++ b/services/java/com/android/server/BatteryService.java @@ -177,6 +177,7 @@ class BatteryService extends Binder { void systemReady() { // check our power situation now that it is safe to display the shutdown dialog. shutdownIfNoPower(); + shutdownIfOverTemp(); } private final void shutdownIfNoPower() { @@ -190,6 +191,17 @@ class BatteryService extends Binder { } } + private final void shutdownIfOverTemp() { + // shut down gracefully if temperature is too high (> 68.0C) + // wait until the system has booted before attempting to display the shutdown dialog. + if (mBatteryTemperature > 680 && ActivityManagerNative.isSystemReady()) { + Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN); + intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + } + } + private native void native_update(); private synchronized final void update() { @@ -199,6 +211,7 @@ class BatteryService extends Binder { long dischargeDuration = 0; shutdownIfNoPower(); + shutdownIfOverTemp(); mBatteryLevelCritical = mBatteryLevel <= CRITICAL_BATTERY_LEVEL; if (mAcOnline) {