List of usage examples for android.os BatteryManager EXTRA_HEALTH
String EXTRA_HEALTH
To view the source code for android.os BatteryManager EXTRA_HEALTH.
Click Source Link
From source file:com.hmatalonga.greenhub.managers.sampling.DataEstimator.java
@Override public void onReceive(Context context, Intent intent) { if (context == null) { LOGE(TAG, "Error, context is null"); return;//from ww w .j a v a 2 s.c o m } if (intent == null) { LOGE(TAG, "Data Estimator error, received intent is null"); return; } LOGI(TAG, "onReceive action => " + intent.getAction()); if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) { try { level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); mHealth = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, 0); plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); present = intent.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT); status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, 0); technology = intent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY); temperature = ((float) intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0)) / 10; voltage = ((float) intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0)) / 1000; } catch (RuntimeException e) { e.printStackTrace(); } // We don't send battery level alerts here because we need to check if the level changed // So we verify that inside the DataEstimator Service if (temperature > SettingsUtils.fetchTemperatureWarning(context)) { if (SettingsUtils.isBatteryAlertsOn(context) && SettingsUtils.isTemperatureAlertsOn(context)) { // Check temperature limit rate Calendar lastAlert = Calendar.getInstance(); long lastSavedTime = SettingsUtils.fetchLastTemperatureAlertDate(context); // Set last alert time with saved preferences if (lastSavedTime != 0) { lastAlert.setTimeInMillis(lastSavedTime); } int minutes = SettingsUtils.fetchTemperatureAlertsRate(context); lastAlert.add(Calendar.MINUTE, minutes); // If last saved time isn't default and now is after limit rate then notify if (lastSavedTime == 0 || Calendar.getInstance().after(lastAlert)) { // Notify for temperature alerts... if (temperature > SettingsUtils.fetchTemperatureHigh(context)) { Notifier.batteryHighTemperature(context); SettingsUtils.saveLastTemperatureAlertDate(context, System.currentTimeMillis()); } else if (temperature <= SettingsUtils.fetchTemperatureHigh(context) && temperature > SettingsUtils.fetchTemperatureWarning(context)) { Notifier.batteryWarningTemperature(context); SettingsUtils.saveLastTemperatureAlertDate(context, System.currentTimeMillis()); } } } } } // On some phones, scale is always 0. if (scale == 0) scale = 100; if (level > 0) { Inspector.setCurrentBatteryLevel(level, scale); // Location updates disabled for now // requestLocationUpdates(); // Update last known location... // if (lastKnownLocation == null) { // lastKnownLocation = LocationInfo.getLastKnownLocation(context); // } Intent service = new Intent(context, DataEstimatorService.class); service.putExtra("OriginalAction", intent.getAction()); service.fillIn(intent, 0); if (SettingsUtils.isPowerIndicatorShown(context)) { LOGI(TAG, "Updating notification status bar"); Notifier.updateStatusBar(context); } EventBus.getDefault().post(new BatteryLevelEvent(level)); startWakefulService(context, service); } }
From source file:rus.cpuinfo.AndroidDepedentModel.BatteryInfo.java
@NonNull private String getBatteryHelth() { return getBatteryInfo(BatteryManager.EXTRA_HEALTH); }
From source file:hmatalonga.greenhub.managers.sampling.DataEstimator.java
@Override public void onReceive(Context context, Intent intent) { if (context == null) { LOGE(TAG, "Error, context is null"); return;/* w ww.j a v a2 s.co m*/ } if (intent == null) { LOGE(TAG, "Data Estimator error, received intent is null"); return; } LOGI(TAG, "onReceive action => " + intent.getAction()); if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) { try { level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, 0); plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); present = intent.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT); status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, 0); technology = intent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY); temperature = ((float) intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0)) / 10; voltage = ((float) intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0)) / 1000; } catch (RuntimeException e) { e.printStackTrace(); } if (SettingsUtils.isBatteryAlertsOn(context)) { // Notify for temperature alerts... if (temperature > 45) { Notifier.batteryHighTemperature(context); } else if (temperature <= 45 && temperature > 35) { Notifier.batteryWarningTemperature(context); } } if (SettingsUtils.isPowerIndicatorShown(context)) { Notifier.updateStatusBar(context); } } // On some phones, scale is always 0. if (scale == 0) scale = 100; if (level > 0) { Inspector.setCurrentBatteryLevel(level, scale); // Location updates disabled for now // requestLocationUpdates(); // Update last known location... // if (lastKnownLocation == null) { // lastKnownLocation = LocationInfo.getLastKnownLocation(context); // } Intent service = new Intent(context, DataEstimatorService.class); service.putExtra("OriginalAction", intent.getAction()); service.fillIn(intent, 0); service.putExtra("distance", distance); EventBus.getDefault().post(new BatteryLevelEvent(level)); startWakefulService(context, service); } }
From source file:org.openchaos.android.fooping.service.PingService.java
@Override protected void onHandleIntent(Intent intent) { String clientID = prefs.getString("ClientID", "unknown"); long ts = System.currentTimeMillis(); Log.d(tag, "onHandleIntent()"); // always send ping if (true) {// ww w .ja va 2 s . c om try { JSONObject json = new JSONObject(); json.put("client", clientID); json.put("type", "ping"); json.put("ts", ts); sendMessage(json); } catch (Exception e) { Log.e(tag, e.toString()); e.printStackTrace(); } } // http://developer.android.com/training/monitoring-device-state/battery-monitoring.html // http://developer.android.com/reference/android/os/BatteryManager.html if (prefs.getBoolean("UseBattery", false)) { try { JSONObject json = new JSONObject(); json.put("client", clientID); json.put("type", "battery"); json.put("ts", ts); Intent batteryStatus = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); if (batteryStatus != null) { JSONObject bat_data = new JSONObject(); int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); if (level >= 0 && scale > 0) { bat_data.put("pct", roundValue(((double) level / (double) scale) * 100, 2)); } else { Log.w(tag, "Battery level unknown"); bat_data.put("pct", -1); } bat_data.put("health", batteryStatus.getIntExtra(BatteryManager.EXTRA_HEALTH, -1)); bat_data.put("status", batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1)); bat_data.put("plug", batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)); bat_data.put("volt", batteryStatus.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1)); bat_data.put("temp", batteryStatus.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1)); bat_data.put("tech", batteryStatus.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY)); // bat_data.put("present", batteryStatus.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false)); json.put("battery", bat_data); } sendMessage(json); } catch (Exception e) { Log.e(tag, e.toString()); e.printStackTrace(); } } // http://developer.android.com/guide/topics/location/strategies.html // http://developer.android.com/reference/android/location/LocationManager.html if (prefs.getBoolean("UseGPS", false)) { try { JSONObject json = new JSONObject(); json.put("client", clientID); json.put("type", "loc_gps"); json.put("ts", ts); if (lm == null) { lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); } Location last_loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (last_loc != null) { JSONObject loc_data = new JSONObject(); loc_data.put("ts", last_loc.getTime()); loc_data.put("lat", last_loc.getLatitude()); loc_data.put("lon", last_loc.getLongitude()); if (last_loc.hasAltitude()) loc_data.put("alt", roundValue(last_loc.getAltitude(), 4)); if (last_loc.hasAccuracy()) loc_data.put("acc", roundValue(last_loc.getAccuracy(), 4)); if (last_loc.hasSpeed()) loc_data.put("speed", roundValue(last_loc.getSpeed(), 4)); if (last_loc.hasBearing()) loc_data.put("bearing", roundValue(last_loc.getBearing(), 4)); json.put("loc_gps", loc_data); } sendMessage(json); } catch (Exception e) { Log.e(tag, e.toString()); e.printStackTrace(); } } if (prefs.getBoolean("UseNetwork", false)) { try { JSONObject json = new JSONObject(); json.put("client", clientID); json.put("type", "loc_net"); json.put("ts", ts); if (lm == null) { lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); } Location last_loc = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (last_loc != null) { JSONObject loc_data = new JSONObject(); loc_data.put("ts", last_loc.getTime()); loc_data.put("lat", last_loc.getLatitude()); loc_data.put("lon", last_loc.getLongitude()); if (last_loc.hasAltitude()) loc_data.put("alt", roundValue(last_loc.getAltitude(), 4)); if (last_loc.hasAccuracy()) loc_data.put("acc", roundValue(last_loc.getAccuracy(), 4)); if (last_loc.hasSpeed()) loc_data.put("speed", roundValue(last_loc.getSpeed(), 4)); if (last_loc.hasBearing()) loc_data.put("bearing", roundValue(last_loc.getBearing(), 4)); json.put("loc_net", loc_data); } sendMessage(json); } catch (Exception e) { Log.e(tag, e.toString()); e.printStackTrace(); } } // http://developer.android.com/reference/android/net/wifi/WifiManager.html if (prefs.getBoolean("UseWIFI", false)) { try { JSONObject json = new JSONObject(); json.put("client", clientID); json.put("type", "wifi"); json.put("ts", ts); if (wm == null) { wm = (WifiManager) getSystemService(Context.WIFI_SERVICE); } List<ScanResult> wifiScan = wm.getScanResults(); if (wifiScan != null) { JSONArray wifi_list = new JSONArray(); for (ScanResult wifi : wifiScan) { JSONObject wifi_data = new JSONObject(); wifi_data.put("BSSID", wifi.BSSID); wifi_data.put("SSID", wifi.SSID); wifi_data.put("freq", wifi.frequency); wifi_data.put("level", wifi.level); // wifi_data.put("cap", wifi.capabilities); // wifi_data.put("ts", wifi.timestamp); wifi_list.put(wifi_data); } json.put("wifi", wifi_list); } sendMessage(json); } catch (Exception e) { Log.e(tag, e.toString()); e.printStackTrace(); } } // TODO: cannot poll sensors. register receiver to cache sensor data // http://developer.android.com/guide/topics/sensors/sensors_overview.html // http://developer.android.com/reference/android/hardware/SensorManager.html if (prefs.getBoolean("UseSensors", false)) { try { JSONObject json = new JSONObject(); json.put("client", clientID); json.put("type", "sensors"); json.put("ts", ts); if (sm == null) { sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); } List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ALL); if (sensors != null) { JSONArray sensor_list = new JSONArray(); for (Sensor sensor : sensors) { JSONObject sensor_info = new JSONObject(); sensor_info.put("name", sensor.getName()); sensor_info.put("type", sensor.getType()); sensor_info.put("vendor", sensor.getVendor()); sensor_info.put("version", sensor.getVersion()); sensor_info.put("power", roundValue(sensor.getPower(), 4)); sensor_info.put("resolution", roundValue(sensor.getResolution(), 4)); sensor_info.put("range", roundValue(sensor.getMaximumRange(), 4)); sensor_list.put(sensor_info); } json.put("sensors", sensor_list); } sendMessage(json); } catch (Exception e) { Log.e(tag, e.toString()); e.printStackTrace(); } } // http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html // http://developer.android.com/reference/android/net/ConnectivityManager.html if (prefs.getBoolean("UseConn", false)) { try { JSONObject json = new JSONObject(); json.put("client", clientID); json.put("type", "conn"); json.put("ts", ts); if (cm == null) { cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); } // TODO: add active/all preferences below UseConn if (prefs.getBoolean("UseConnActive", true)) { NetworkInfo net = cm.getActiveNetworkInfo(); if (net != null) { JSONObject net_data = new JSONObject(); net_data.put("type", net.getTypeName()); net_data.put("subtype", net.getSubtypeName()); net_data.put("connected", net.isConnected()); net_data.put("available", net.isAvailable()); net_data.put("roaming", net.isRoaming()); net_data.put("failover", net.isFailover()); if (net.getReason() != null) net_data.put("reason", net.getReason()); if (net.getExtraInfo() != null) net_data.put("extra", net.getExtraInfo()); json.put("conn_active", net_data); } } if (prefs.getBoolean("UseConnAll", false)) { NetworkInfo[] nets = cm.getAllNetworkInfo(); if (nets != null) { JSONArray net_list = new JSONArray(); for (NetworkInfo net : nets) { JSONObject net_data = new JSONObject(); net_data.put("type", net.getTypeName()); net_data.put("subtype", net.getSubtypeName()); net_data.put("connected", net.isConnected()); net_data.put("available", net.isAvailable()); net_data.put("roaming", net.isRoaming()); net_data.put("failover", net.isFailover()); if (net.getReason() != null) net_data.put("reason", net.getReason()); if (net.getExtraInfo() != null) net_data.put("extra", net.getExtraInfo()); net_list.put(net_data); } json.put("conn_all", net_list); } } sendMessage(json); } catch (Exception e) { Log.e(tag, e.toString()); e.printStackTrace(); } } if (!PingServiceReceiver.completeWakefulIntent(intent)) { Log.w(tag, "completeWakefulIntent() failed. no active wake lock?"); } }
From source file:hmatalonga.greenhub.managers.sampling.DataEstimator.java
public void getCurrentStatus(final Context context) { IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = context.registerReceiver(null, ifilter); assert batteryStatus != null; level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); health = batteryStatus.getIntExtra(BatteryManager.EXTRA_HEALTH, 0); plugged = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); present = batteryStatus.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT); status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, 0); technology = batteryStatus.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY); temperature = (float) (batteryStatus.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0) / 10); voltage = (float) (batteryStatus.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0) / 1000); }
From source file:fr.free.coup2lapan.ActualStateActivity.java
public BatteryStat getBatteryStatus() { IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent status = this.registerReceiver(null, ifilter); BatteryStat batterystat = new BatteryStat(status.getIntExtra(BatteryManager.EXTRA_LEVEL, 0), status.getIntExtra(BatteryManager.EXTRA_SCALE, 0), status.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0), status.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0), status.getIntExtra(BatteryManager.EXTRA_STATUS, 0), status.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0), status.getIntExtra(BatteryManager.EXTRA_HEALTH, 0), status.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT) ? 1 : 0, DateFormat.getDateInstance(2, localeFR).format(new Date()) + DateFormat.getTimeInstance(2, localeFR).format(new Date()), status.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY)); return batterystat; }
From source file:com.hmatalonga.greenhub.managers.sampling.DataEstimator.java
public void getCurrentStatus(final Context context) { IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); try {//w w w . j a va 2 s . co m Intent batteryStatus = context.registerReceiver(null, ifilter); if (batteryStatus != null) { level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); mHealth = batteryStatus.getIntExtra(BatteryManager.EXTRA_HEALTH, 0); plugged = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); present = batteryStatus.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT); status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, 0); technology = batteryStatus.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY); temperature = (float) (batteryStatus.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0) / 10); voltage = (float) (batteryStatus.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0) / 1000); } } catch (ReceiverCallNotAllowedException e) { LOGE(TAG, "ReceiverCallNotAllowedException from Notification Receiver?"); e.printStackTrace(); } }
From source file:org.wso2.emm.agent.api.DeviceState.java
/** * Returns the device battery information. * * @return Battery object representing battery data. *///from www . j a v a 2 s. co m public Power getBatteryDetails() { Power power = new Power(); Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); int level = 0; int scale = 0; int plugState = 0; int healthState = 0; if (batteryIntent != null) { level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, DEFAULT_LEVEL); scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, DEFAULT_LEVEL); plugState = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, DEFAULT_LEVEL); healthState = batteryIntent.getIntExtra(BatteryManager.EXTRA_HEALTH, DEFAULT_LEVEL); } power.setLevel(level); power.setScale(scale); power.setPlugged(getPlugType(plugState)); power.setHealth(getHealth(healthState)); return power; }
From source file:com.mozilla.SUTAgentAndroid.SUTAgentAndroid.java
private void monitorBatteryState() { battReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { StringBuilder sb = new StringBuilder(); int rawlevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); // charge level from 0 to scale inclusive int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); // Max value for charge level int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); int health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, -1); boolean present = intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false); int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); //0 if the device is not plugged in; 1 if plugged into an AC power adapter; 2 if plugged in via USB. // int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1); // voltage in millivolts nBatteryTemp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1); // current battery temperature in tenths of a degree Centigrade // String technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); nChargeLevel = -1; // percentage, or -1 for unknown if (rawlevel >= 0 && scale > 0) { nChargeLevel = (rawlevel * 100) / scale; }/*from w ww .j a va2 s. c o m*/ if (plugged > 0) sACStatus = "ONLINE"; else sACStatus = "OFFLINE"; if (present == false) sb.append("NO BATTERY"); else { if (nChargeLevel < 10) sb.append("Critical"); else if (nChargeLevel < 33) sb.append("LOW"); else if (nChargeLevel > 80) sb.append("HIGH"); } if (BatteryManager.BATTERY_HEALTH_OVERHEAT == health) { sb.append("Overheated "); sb.append((((float) (nBatteryTemp)) / 10)); sb.append("(C)"); } else { switch (status) { case BatteryManager.BATTERY_STATUS_UNKNOWN: // old emulator; maybe also when plugged in with no battery if (present == true) sb.append(" UNKNOWN"); break; case BatteryManager.BATTERY_STATUS_CHARGING: sb.append(" CHARGING"); break; case BatteryManager.BATTERY_STATUS_DISCHARGING: sb.append(" DISCHARGING"); break; case BatteryManager.BATTERY_STATUS_NOT_CHARGING: sb.append(" NOTCHARGING"); break; case BatteryManager.BATTERY_STATUS_FULL: sb.append(" FULL"); break; default: if (present == true) sb.append("Unknown"); break; } } sPowerStatus = sb.toString(); } }; IntentFilter battFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(battReceiver, battFilter); }
From source file:saphion.services.ForegroundService.java
public int readbattery() { Intent batteryIntent = getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); int rawlevel = batteryIntent.getIntExtra("level", -1); double scale = batteryIntent.getIntExtra("scale", -1); int plugged = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); isconnected = (plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS); level = -1;/*w w w . j a v a 2s . c o m*/ if (rawlevel >= 0 && scale > 0) { level = (int) ((rawlevel * 100) / scale); Log.d("rawLevel: " + rawlevel); Log.d("scale: " + scale); } temperature = Functions.updateTemperature( (float) ((float) (batteryIntent.getIntExtra("temperature", 0)) / 10), mPref.getBoolean(PreferenceHelper.MAIN_TEMP, true), true); int inthealth = batteryIntent.getIntExtra(BatteryManager.EXTRA_HEALTH, 0); health = ""; switch (inthealth) { case BatteryManager.BATTERY_HEALTH_COLD: health = "Cold"; break; case BatteryManager.BATTERY_HEALTH_DEAD: health = "Dead"; break; case BatteryManager.BATTERY_HEALTH_GOOD: health = "Good"; break; case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: health = "Over Voltage"; break; case BatteryManager.BATTERY_HEALTH_OVERHEAT: health = "Overheat"; break; case BatteryManager.BATTERY_HEALTH_UNKNOWN: health = "Unknown"; break; case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: health = "Unspecified failure"; break; } if (mPref.getBoolean(PreferenceHelper.KEY_ONE_PERCENT_HACK, false)) { try { java.io.FileReader fReader = new java.io.FileReader( "/sys/class/power_supply/battery/charge_counter"); java.io.BufferedReader bReader = new java.io.BufferedReader(fReader); int charge_counter = Integer.valueOf(bReader.readLine()); bReader.close(); if (charge_counter > PreferenceHelper.CHARGE_COUNTER_LEGIT_MAX) { disableOnePercentHack("charge_counter is too big to be actual charge"); } else { if (charge_counter > 100) charge_counter = 100; level = charge_counter; } } catch (java.io.FileNotFoundException e) { /* * These error messages are only really useful to me and might * as well be left hardwired here in English. */ disableOnePercentHack("charge_counter file doesn't exist"); } catch (java.io.IOException e) { disableOnePercentHack("Error reading charge_counter file"); } } return level; }