OSDN Git Service

Disabled BSM mode switch when plugged in
authorSalvador Martinez <dehboxturtle@google.com>
Mon, 8 Aug 2016 18:06:37 +0000 (11:06 -0700)
committerSalvador Martinez <dehboxturtle@google.com>
Fri, 19 Aug 2016 17:59:27 +0000 (17:59 +0000)
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)

src/com/android/settings/fuelgauge/BatterySaverSettings.java

index bd19db8..e19f683 100644 (file)
@@ -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 {