Loading packages/SystemUI/res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -1025,6 +1025,12 @@ <!-- Name of special SystemUI debug settings --> <string name="system_ui_tuner">System UI tuner</string> <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] --> <string name="show_battery_percentage">Show embedded battery percentage</string> <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] --> <string name="show_battery_percentage_summary">Show battery level percentage inside the status bar icon when not charging</string> <!-- Name of quick settings --> <string name="quick_settings">Quick Settings</string> Loading packages/SystemUI/res/xml/tuner_prefs.xml +6 −2 Original line number Diff line number Diff line Loading @@ -17,10 +17,14 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/system_ui_tuner"> <!-- Tuner prefs go here --> <Preference android:key="qs_tuner" android:title="@string/quick_settings" /> <SwitchPreference android:key="battery_pct" android:title="@string/show_battery_percentage" android:summary="@string/show_battery_percentage_summary" android:persistent="false" /> </PreferenceScreen> packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +128 −106 Original line number Diff line number Diff line Loading @@ -23,16 +23,17 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.res.Resources; import android.content.res.TypedArray; import android.database.ContentObserver; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.RectF; import android.graphics.Typeface; import android.net.Uri; import android.os.BatteryManager; import android.os.Bundle; import android.os.Handler; import android.provider.Settings; import android.util.AttributeSet; import android.view.View; Loading @@ -43,10 +44,9 @@ public class BatteryMeterView extends View implements DemoMode, BatteryController.BatteryStateChangeCallback { public static final String TAG = BatteryMeterView.class.getSimpleName(); public static final String ACTION_LEVEL_TEST = "com.android.systemui.BATTERY_LEVEL_TEST"; public static final String SHOW_PERCENT_SETTING = "status_bar_show_battery_percent"; private static final boolean ENABLE_PERCENT = true; private static final boolean SINGLE_DIGIT_PERCENT = false; private static final boolean SHOW_100_PERCENT = false; private static final int FULL = 96; Loading @@ -54,7 +54,7 @@ public class BatteryMeterView extends View implements DemoMode, private final int[] mColors; boolean mShowPercent = true; private boolean mShowPercent; private float mButtonHeightFraction; private float mSubpixelSmoothingLeft; private float mSubpixelSmoothingRight; Loading Loading @@ -87,103 +87,8 @@ public class BatteryMeterView extends View implements DemoMode, private int mLightModeBackgroundColor; private int mLightModeFillColor; private class BatteryTracker extends BroadcastReceiver { public static final int UNKNOWN_LEVEL = -1; // current battery status int level = UNKNOWN_LEVEL; String percentStr; int plugType; boolean plugged; int health; int status; String technology; int voltage; int temperature; boolean testmode = false; @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { if (testmode && ! intent.getBooleanExtra("testmode", false)) return; level = (int)(100f * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100)); plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); plugged = plugType != 0; health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN); status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0); setContentDescription( context.getString(R.string.accessibility_battery_level, level)); postInvalidate(); } else if (action.equals(ACTION_LEVEL_TEST)) { testmode = true; post(new Runnable() { int curLevel = 0; int incr = 1; int saveLevel = level; int savePlugged = plugType; Intent dummy = new Intent(Intent.ACTION_BATTERY_CHANGED); @Override public void run() { if (curLevel < 0) { testmode = false; dummy.putExtra("level", saveLevel); dummy.putExtra("plugged", savePlugged); dummy.putExtra("testmode", false); } else { dummy.putExtra("level", curLevel); dummy.putExtra("plugged", incr > 0 ? BatteryManager.BATTERY_PLUGGED_AC : 0); dummy.putExtra("testmode", true); } getContext().sendBroadcast(dummy); if (!testmode) return; curLevel += incr; if (curLevel == 100) { incr *= -1; } postDelayed(this, 200); } }); } } } BatteryTracker mTracker = new BatteryTracker(); @Override public void onAttachedToWindow() { super.onAttachedToWindow(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(ACTION_LEVEL_TEST); final Intent sticky = getContext().registerReceiver(mTracker, filter); if (sticky != null) { // preload the battery level mTracker.onReceive(getContext(), sticky); } mBatteryController.addStateChangedCallback(this); } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); getContext().unregisterReceiver(mTracker); mBatteryController.removeStateChangedCallback(this); } private BatteryTracker mTracker = new BatteryTracker(); private final SettingObserver mSettingObserver = new SettingObserver(); public BatteryMeterView(Context context) { this(context, null, 0); Loading Loading @@ -213,8 +118,7 @@ public class BatteryMeterView extends View implements DemoMode, levels.recycle(); colors.recycle(); atts.recycle(); mShowPercent = ENABLE_PERCENT && 0 != Settings.System.getInt( context.getContentResolver(), "status_bar_show_battery_percent", 0); updateShowPercent(); mWarningString = context.getString(R.string.battery_meter_very_low_overlay_symbol); mCriticalLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_criticalBatteryWarningLevel); Loading Loading @@ -261,6 +165,32 @@ public class BatteryMeterView extends View implements DemoMode, mLightModeFillColor = context.getColor(R.color.light_mode_icon_color_dual_tone_fill); } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(ACTION_LEVEL_TEST); final Intent sticky = getContext().registerReceiver(mTracker, filter); if (sticky != null) { // preload the battery level mTracker.onReceive(getContext(), sticky); } mBatteryController.addStateChangedCallback(this); getContext().getContentResolver().registerContentObserver( Settings.System.getUriFor(SHOW_PERCENT_SETTING), false, mSettingObserver); } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); getContext().unregisterReceiver(mTracker); mBatteryController.removeStateChangedCallback(this); getContext().getContentResolver().unregisterContentObserver(mSettingObserver); } public void setBatteryController(BatteryController batteryController) { mBatteryController = batteryController; mPowerSaveEnabled = mBatteryController.isPowerSave(); Loading Loading @@ -300,6 +230,11 @@ public class BatteryMeterView extends View implements DemoMode, mWarningTextHeight = -mWarningTextPaint.getFontMetrics().ascent; } private void updateShowPercent() { mShowPercent = 0 != Settings.System.getInt(getContext().getContentResolver(), SHOW_PERCENT_SETTING, 0); } private int getColorForLevel(int percent) { // If we are in power save mode, always use the normal color. Loading Loading @@ -447,8 +382,7 @@ public class BatteryMeterView extends View implements DemoMode, boolean pctOpaque = false; float pctX = 0, pctY = 0; String pctText = null; if (!tracker.plugged && level > mCriticalLevel && mShowPercent && !(tracker.level == 100 && !SHOW_100_PERCENT)) { if (!tracker.plugged && level > mCriticalLevel && mShowPercent) { mTextPaint.setColor(getColorForLevel(level)); mTextPaint.setTextSize(height * (SINGLE_DIGIT_PERCENT ? 0.75f Loading Loading @@ -518,4 +452,92 @@ public class BatteryMeterView extends View implements DemoMode, postInvalidate(); } } private final class BatteryTracker extends BroadcastReceiver { public static final int UNKNOWN_LEVEL = -1; // current battery status int level = UNKNOWN_LEVEL; String percentStr; int plugType; boolean plugged; int health; int status; String technology; int voltage; int temperature; boolean testmode = false; @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { if (testmode && ! intent.getBooleanExtra("testmode", false)) return; level = (int)(100f * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100)); plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); plugged = plugType != 0; health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN); status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0); setContentDescription( context.getString(R.string.accessibility_battery_level, level)); postInvalidate(); } else if (action.equals(ACTION_LEVEL_TEST)) { testmode = true; post(new Runnable() { int curLevel = 0; int incr = 1; int saveLevel = level; int savePlugged = plugType; Intent dummy = new Intent(Intent.ACTION_BATTERY_CHANGED); @Override public void run() { if (curLevel < 0) { testmode = false; dummy.putExtra("level", saveLevel); dummy.putExtra("plugged", savePlugged); dummy.putExtra("testmode", false); } else { dummy.putExtra("level", curLevel); dummy.putExtra("plugged", incr > 0 ? BatteryManager.BATTERY_PLUGGED_AC : 0); dummy.putExtra("testmode", true); } getContext().sendBroadcast(dummy); if (!testmode) return; curLevel += incr; if (curLevel == 100) { incr *= -1; } postDelayed(this, 200); } }); } } } private final class SettingObserver extends ContentObserver { public SettingObserver() { super(new Handler()); } @Override public void onChange(boolean selfChange, Uri uri) { super.onChange(selfChange, uri); updateShowPercent(); postInvalidate(); } } } packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java +55 −0 Original line number Diff line number Diff line Loading @@ -15,11 +15,19 @@ */ package com.android.systemui.tuner; import static com.android.systemui.BatteryMeterView.SHOW_PERCENT_SETTING; import android.app.FragmentTransaction; import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceFragment; import android.preference.SwitchPreference; import android.provider.Settings.System; import android.view.MenuItem; import com.android.systemui.R; Loading @@ -27,6 +35,11 @@ import com.android.systemui.R; public class TunerFragment extends PreferenceFragment { private static final String KEY_QS_TUNER = "qs_tuner"; private static final String KEY_BATTERY_PCT = "battery_pct"; private final SettingObserver mSettingObserver = new SettingObserver(); private SwitchPreference mBatteryPct; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading @@ -45,6 +58,21 @@ public class TunerFragment extends PreferenceFragment { return false; } }); mBatteryPct = (SwitchPreference) findPreference(KEY_BATTERY_PCT); } @Override public void onResume() { super.onResume(); updateBatteryPct(); getContext().getContentResolver().registerContentObserver( System.getUriFor(SHOW_PERCENT_SETTING), false, mSettingObserver); } @Override public void onPause() { super.onPause(); getContext().getContentResolver().unregisterContentObserver(mSettingObserver); } @Override Loading @@ -57,4 +85,31 @@ public class TunerFragment extends PreferenceFragment { return super.onOptionsItemSelected(item); } private void updateBatteryPct() { mBatteryPct.setOnPreferenceChangeListener(null); mBatteryPct.setChecked(System.getInt(getContext().getContentResolver(), SHOW_PERCENT_SETTING, 0) != 0); mBatteryPct.setOnPreferenceChangeListener(mBatteryPctChange); } private final class SettingObserver extends ContentObserver { public SettingObserver() { super(new Handler()); } @Override public void onChange(boolean selfChange, Uri uri, int userId) { super.onChange(selfChange, uri, userId); updateBatteryPct(); } } private final OnPreferenceChangeListener mBatteryPctChange = new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean v = (Boolean) newValue; System.putInt(getContext().getContentResolver(), SHOW_PERCENT_SETTING, v ? 1 : 0); return true; } }; } Loading
packages/SystemUI/res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -1025,6 +1025,12 @@ <!-- Name of special SystemUI debug settings --> <string name="system_ui_tuner">System UI tuner</string> <!-- Preference to show/hide embedded battery percentage [CHAR LIMIT=50] --> <string name="show_battery_percentage">Show embedded battery percentage</string> <!-- Summary for battery percentage preference [CHAR LIMIT=NONE] --> <string name="show_battery_percentage_summary">Show battery level percentage inside the status bar icon when not charging</string> <!-- Name of quick settings --> <string name="quick_settings">Quick Settings</string> Loading
packages/SystemUI/res/xml/tuner_prefs.xml +6 −2 Original line number Diff line number Diff line Loading @@ -17,10 +17,14 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/system_ui_tuner"> <!-- Tuner prefs go here --> <Preference android:key="qs_tuner" android:title="@string/quick_settings" /> <SwitchPreference android:key="battery_pct" android:title="@string/show_battery_percentage" android:summary="@string/show_battery_percentage_summary" android:persistent="false" /> </PreferenceScreen>
packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +128 −106 Original line number Diff line number Diff line Loading @@ -23,16 +23,17 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.res.Resources; import android.content.res.TypedArray; import android.database.ContentObserver; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.RectF; import android.graphics.Typeface; import android.net.Uri; import android.os.BatteryManager; import android.os.Bundle; import android.os.Handler; import android.provider.Settings; import android.util.AttributeSet; import android.view.View; Loading @@ -43,10 +44,9 @@ public class BatteryMeterView extends View implements DemoMode, BatteryController.BatteryStateChangeCallback { public static final String TAG = BatteryMeterView.class.getSimpleName(); public static final String ACTION_LEVEL_TEST = "com.android.systemui.BATTERY_LEVEL_TEST"; public static final String SHOW_PERCENT_SETTING = "status_bar_show_battery_percent"; private static final boolean ENABLE_PERCENT = true; private static final boolean SINGLE_DIGIT_PERCENT = false; private static final boolean SHOW_100_PERCENT = false; private static final int FULL = 96; Loading @@ -54,7 +54,7 @@ public class BatteryMeterView extends View implements DemoMode, private final int[] mColors; boolean mShowPercent = true; private boolean mShowPercent; private float mButtonHeightFraction; private float mSubpixelSmoothingLeft; private float mSubpixelSmoothingRight; Loading Loading @@ -87,103 +87,8 @@ public class BatteryMeterView extends View implements DemoMode, private int mLightModeBackgroundColor; private int mLightModeFillColor; private class BatteryTracker extends BroadcastReceiver { public static final int UNKNOWN_LEVEL = -1; // current battery status int level = UNKNOWN_LEVEL; String percentStr; int plugType; boolean plugged; int health; int status; String technology; int voltage; int temperature; boolean testmode = false; @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { if (testmode && ! intent.getBooleanExtra("testmode", false)) return; level = (int)(100f * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100)); plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); plugged = plugType != 0; health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN); status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0); setContentDescription( context.getString(R.string.accessibility_battery_level, level)); postInvalidate(); } else if (action.equals(ACTION_LEVEL_TEST)) { testmode = true; post(new Runnable() { int curLevel = 0; int incr = 1; int saveLevel = level; int savePlugged = plugType; Intent dummy = new Intent(Intent.ACTION_BATTERY_CHANGED); @Override public void run() { if (curLevel < 0) { testmode = false; dummy.putExtra("level", saveLevel); dummy.putExtra("plugged", savePlugged); dummy.putExtra("testmode", false); } else { dummy.putExtra("level", curLevel); dummy.putExtra("plugged", incr > 0 ? BatteryManager.BATTERY_PLUGGED_AC : 0); dummy.putExtra("testmode", true); } getContext().sendBroadcast(dummy); if (!testmode) return; curLevel += incr; if (curLevel == 100) { incr *= -1; } postDelayed(this, 200); } }); } } } BatteryTracker mTracker = new BatteryTracker(); @Override public void onAttachedToWindow() { super.onAttachedToWindow(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(ACTION_LEVEL_TEST); final Intent sticky = getContext().registerReceiver(mTracker, filter); if (sticky != null) { // preload the battery level mTracker.onReceive(getContext(), sticky); } mBatteryController.addStateChangedCallback(this); } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); getContext().unregisterReceiver(mTracker); mBatteryController.removeStateChangedCallback(this); } private BatteryTracker mTracker = new BatteryTracker(); private final SettingObserver mSettingObserver = new SettingObserver(); public BatteryMeterView(Context context) { this(context, null, 0); Loading Loading @@ -213,8 +118,7 @@ public class BatteryMeterView extends View implements DemoMode, levels.recycle(); colors.recycle(); atts.recycle(); mShowPercent = ENABLE_PERCENT && 0 != Settings.System.getInt( context.getContentResolver(), "status_bar_show_battery_percent", 0); updateShowPercent(); mWarningString = context.getString(R.string.battery_meter_very_low_overlay_symbol); mCriticalLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_criticalBatteryWarningLevel); Loading Loading @@ -261,6 +165,32 @@ public class BatteryMeterView extends View implements DemoMode, mLightModeFillColor = context.getColor(R.color.light_mode_icon_color_dual_tone_fill); } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(ACTION_LEVEL_TEST); final Intent sticky = getContext().registerReceiver(mTracker, filter); if (sticky != null) { // preload the battery level mTracker.onReceive(getContext(), sticky); } mBatteryController.addStateChangedCallback(this); getContext().getContentResolver().registerContentObserver( Settings.System.getUriFor(SHOW_PERCENT_SETTING), false, mSettingObserver); } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); getContext().unregisterReceiver(mTracker); mBatteryController.removeStateChangedCallback(this); getContext().getContentResolver().unregisterContentObserver(mSettingObserver); } public void setBatteryController(BatteryController batteryController) { mBatteryController = batteryController; mPowerSaveEnabled = mBatteryController.isPowerSave(); Loading Loading @@ -300,6 +230,11 @@ public class BatteryMeterView extends View implements DemoMode, mWarningTextHeight = -mWarningTextPaint.getFontMetrics().ascent; } private void updateShowPercent() { mShowPercent = 0 != Settings.System.getInt(getContext().getContentResolver(), SHOW_PERCENT_SETTING, 0); } private int getColorForLevel(int percent) { // If we are in power save mode, always use the normal color. Loading Loading @@ -447,8 +382,7 @@ public class BatteryMeterView extends View implements DemoMode, boolean pctOpaque = false; float pctX = 0, pctY = 0; String pctText = null; if (!tracker.plugged && level > mCriticalLevel && mShowPercent && !(tracker.level == 100 && !SHOW_100_PERCENT)) { if (!tracker.plugged && level > mCriticalLevel && mShowPercent) { mTextPaint.setColor(getColorForLevel(level)); mTextPaint.setTextSize(height * (SINGLE_DIGIT_PERCENT ? 0.75f Loading Loading @@ -518,4 +452,92 @@ public class BatteryMeterView extends View implements DemoMode, postInvalidate(); } } private final class BatteryTracker extends BroadcastReceiver { public static final int UNKNOWN_LEVEL = -1; // current battery status int level = UNKNOWN_LEVEL; String percentStr; int plugType; boolean plugged; int health; int status; String technology; int voltage; int temperature; boolean testmode = false; @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { if (testmode && ! intent.getBooleanExtra("testmode", false)) return; level = (int)(100f * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100)); plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); plugged = plugType != 0; health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN); status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0); setContentDescription( context.getString(R.string.accessibility_battery_level, level)); postInvalidate(); } else if (action.equals(ACTION_LEVEL_TEST)) { testmode = true; post(new Runnable() { int curLevel = 0; int incr = 1; int saveLevel = level; int savePlugged = plugType; Intent dummy = new Intent(Intent.ACTION_BATTERY_CHANGED); @Override public void run() { if (curLevel < 0) { testmode = false; dummy.putExtra("level", saveLevel); dummy.putExtra("plugged", savePlugged); dummy.putExtra("testmode", false); } else { dummy.putExtra("level", curLevel); dummy.putExtra("plugged", incr > 0 ? BatteryManager.BATTERY_PLUGGED_AC : 0); dummy.putExtra("testmode", true); } getContext().sendBroadcast(dummy); if (!testmode) return; curLevel += incr; if (curLevel == 100) { incr *= -1; } postDelayed(this, 200); } }); } } } private final class SettingObserver extends ContentObserver { public SettingObserver() { super(new Handler()); } @Override public void onChange(boolean selfChange, Uri uri) { super.onChange(selfChange, uri); updateShowPercent(); postInvalidate(); } } }
packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java +55 −0 Original line number Diff line number Diff line Loading @@ -15,11 +15,19 @@ */ package com.android.systemui.tuner; import static com.android.systemui.BatteryMeterView.SHOW_PERCENT_SETTING; import android.app.FragmentTransaction; import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceFragment; import android.preference.SwitchPreference; import android.provider.Settings.System; import android.view.MenuItem; import com.android.systemui.R; Loading @@ -27,6 +35,11 @@ import com.android.systemui.R; public class TunerFragment extends PreferenceFragment { private static final String KEY_QS_TUNER = "qs_tuner"; private static final String KEY_BATTERY_PCT = "battery_pct"; private final SettingObserver mSettingObserver = new SettingObserver(); private SwitchPreference mBatteryPct; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading @@ -45,6 +58,21 @@ public class TunerFragment extends PreferenceFragment { return false; } }); mBatteryPct = (SwitchPreference) findPreference(KEY_BATTERY_PCT); } @Override public void onResume() { super.onResume(); updateBatteryPct(); getContext().getContentResolver().registerContentObserver( System.getUriFor(SHOW_PERCENT_SETTING), false, mSettingObserver); } @Override public void onPause() { super.onPause(); getContext().getContentResolver().unregisterContentObserver(mSettingObserver); } @Override Loading @@ -57,4 +85,31 @@ public class TunerFragment extends PreferenceFragment { return super.onOptionsItemSelected(item); } private void updateBatteryPct() { mBatteryPct.setOnPreferenceChangeListener(null); mBatteryPct.setChecked(System.getInt(getContext().getContentResolver(), SHOW_PERCENT_SETTING, 0) != 0); mBatteryPct.setOnPreferenceChangeListener(mBatteryPctChange); } private final class SettingObserver extends ContentObserver { public SettingObserver() { super(new Handler()); } @Override public void onChange(boolean selfChange, Uri uri, int userId) { super.onChange(selfChange, uri, userId); updateBatteryPct(); } } private final OnPreferenceChangeListener mBatteryPctChange = new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean v = (Boolean) newValue; System.putInt(getContext().getContentResolver(), SHOW_PERCENT_SETTING, v ? 1 : 0); return true; } }; }