diff options
-rw-r--r-- | services/core/java/com/android/server/BatteryService.java | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java index b3b4651..c3200fe 100644 --- a/services/core/java/com/android/server/BatteryService.java +++ b/services/core/java/com/android/server/BatteryService.java @@ -51,6 +51,11 @@ import android.util.Slog; import java.io.File; import java.io.FileDescriptor; import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.BufferedInputStream; +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; @@ -735,6 +740,34 @@ public final class BatteryService extends SystemService { com.android.internal.R.integer.config_notificationsBatteryLedOff); } + private boolean isHvdcpPresent() { + File mChargerTypeFile = new File("/sys/class/power_supply/usb/type"); + FileReader fileReader; + BufferedReader br; + String type; + boolean ret; + + try { + fileReader = new FileReader(mChargerTypeFile); + br = new BufferedReader(fileReader); + type = br.readLine(); + if (type.regionMatches(true, 0, "USB_HVDCP", 0, 9)) + ret = true; + else + ret = false; + br.close(); + fileReader.close(); + } catch (FileNotFoundException e) { + ret = false; + Slog.e(TAG, "Failure in reading charger type", e); + } catch (IOException e) { + ret = false; + Slog.e(TAG, "Failure in reading charger type", e); + } + + return ret; + } + /** * Synchronize on BatteryService. */ @@ -756,8 +789,14 @@ public final class BatteryService extends SystemService { // Solid green when full or charging and nearly full mBatteryLight.setColor(mBatteryFullARGB); } else { - // Solid orange when charging and halfway full - mBatteryLight.setColor(mBatteryMediumARGB); + if (isHvdcpPresent()) { + // Blinking orange if HVDCP charger + mBatteryLight.setFlashing(mBatteryMediumARGB, Light.LIGHT_FLASH_TIMED, + mBatteryLedOn, mBatteryLedOn); + } else { + // Solid orange when charging and halfway full + mBatteryLight.setColor(mBatteryMediumARGB); + } } } else { // No lights if not charging and not low |