import android.provider.Settings;
import android.util.EventLog;
import android.util.Slog;
+import android.os.Handler;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.Timer;
+import java.util.TimerTask;
/**
private boolean mSentLowBatteryBroadcast = false;
+ private final Handler mHandler = new Handler();
+
public BatteryService(Context context) {
mContext = context;
mBatteryStats = BatteryStatsService.getService();
// set initial status
update();
+
+ // start auto refresh
+ autoRefresh();
+ }
+
+ private Runnable mUpdateResults = new Runnable() {
+ public void run() {
+ update();
+ }
+ };
+
+ private final void autoRefresh() {
+ // Schedule every minute
+ new Timer().scheduleAtFixedRate(new TimerTask() {
+ @Override // Override!!
+ public void run() {
+ mHandler.post(mUpdateResults);
+ }
+ }, 60000, 60000);
}
final boolean isPowered() {
void systemReady() {
// check our power situation now that it is safe to display the shutdown dialog.
shutdownIfNoPower();
+ shutdownIfOverTemp();
}
private final void shutdownIfNoPower() {
}
}
+ 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() {
long dischargeDuration = 0;
shutdownIfNoPower();
+ shutdownIfOverTemp();
mBatteryLevelCritical = mBatteryLevel <= CRITICAL_BATTERY_LEVEL;
if (mAcOnline) {
mBatteryStatus == BatteryManager.BATTERY_STATUS_FULL) {
return com.android.internal.R.drawable.stat_sys_battery;
} else {
- return com.android.internal.R.drawable.stat_sys_battery_unknown;
+ return mBatteryPresent ?
+ com.android.internal.R.drawable.stat_sys_battery_unknown :
+ com.android.internal.R.drawable.gpm_ac_adapter;
}
}