From d4a6768880beee8b03642908219377851414121c Mon Sep 17 00:00:00 2001 From: Salvador Martinez Date: Mon, 8 Aug 2016 11:06:37 -0700 Subject: [PATCH] Disabled BSM mode switch when plugged in Battery Saver mode can no longer be toggled when the device is plugged in. Additionaly, A content description was added to the switch so that talkback says something when it is single tapped. Bug: 30083279 Change-Id: Id901598dbe13c443cae0b32769a2e3ef50428c08 (cherry picked from commit b9ab480a29205714d34de8f66d67f55a49ff04ba) --- .../fuelgauge/BatterySaverSettings.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatterySaverSettings.java b/src/com/android/settings/fuelgauge/BatterySaverSettings.java index bd19db8080d..e19f6837f54 100644 --- a/src/com/android/settings/fuelgauge/BatterySaverSettings.java +++ b/src/com/android/settings/fuelgauge/BatterySaverSettings.java @@ -25,6 +25,7 @@ import android.content.res.Resources; import android.database.ContentObserver; import android.net.Uri; import android.os.AsyncTask; +import android.os.BatteryManager; import android.os.Bundle; import android.os.Handler; import android.os.PowerManager; @@ -186,23 +187,36 @@ public class BatterySaverSettings extends SettingsPreferenceFragment }; private final class Receiver extends BroadcastReceiver { + private boolean mRegistered; @Override public void onReceive(Context context, Intent intent) { if (DEBUG) Log.d(TAG, "Received " + intent.getAction()); - mHandler.post(mUpdateSwitch); + String action = intent.getAction(); + if (action.equals(ACTION_POWER_SAVE_MODE_CHANGING)) { + mHandler.post(mUpdateSwitch); + } else if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { + final int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); + // disable BSM switch if phone is plugged in or at 100% while plugged in + mSwitchBar.setEnabled( + !(status == BatteryManager.BATTERY_STATUS_CHARGING + || status == BatteryManager.BATTERY_STATUS_FULL)); + } } - public void setListening(boolean listening) { if (listening && !mRegistered) { - mContext.registerReceiver(this, new IntentFilter(ACTION_POWER_SAVE_MODE_CHANGING)); + final IntentFilter ifilter = new IntentFilter(); + ifilter.addAction(ACTION_POWER_SAVE_MODE_CHANGING); + ifilter.addAction(Intent.ACTION_BATTERY_CHANGED); + mContext.registerReceiver(this, ifilter); mRegistered = true; } else if (!listening && mRegistered) { mContext.unregisterReceiver(this); mRegistered = false; } } + } private final class SettingsObserver extends ContentObserver {