diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index bd3c6bafaf5e5..c248adfce690b 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -238,6 +238,19 @@ android:value="com.android.settings.category.system" /> + + + + + + + mChangeCallbacks = new ArrayList<>(); private final PowerManager mPowerManager; private final Handler mHandler; + private final Context mContext; protected int mLevel; protected boolean mPluggedIn; @@ -52,17 +55,21 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC private boolean mTestmode = false; public BatteryControllerImpl(Context context) { + mContext = context; mHandler = new Handler(); mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); + registerReceiver(); + updatePowerSave(); + } + + private void registerReceiver() { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED); filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGING); filter.addAction(ACTION_LEVEL_TEST); - context.registerReceiver(this, filter); - - updatePowerSave(); + mContext.registerReceiver(this, filter); } @Override @@ -176,4 +183,28 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC mChangeCallbacks.get(i).onPowerSaveChanged(mPowerSave); } } + + private boolean mDemoMode; + + @Override + public void dispatchDemoCommand(String command, Bundle args) { + if (!mDemoMode && command.equals(COMMAND_ENTER)) { + mDemoMode = true; + mContext.unregisterReceiver(this); + } else if (mDemoMode && command.equals(COMMAND_EXIT)) { + mDemoMode = false; + registerReceiver(); + updatePowerSave(); + } else if (mDemoMode && command.equals(COMMAND_BATTERY)) { + String level = args.getString("level"); + String plugged = args.getString("plugged"); + if (level != null) { + mLevel = Math.min(Math.max(Integer.parseInt(level), 0), 100); + } + if (plugged != null) { + mPluggedIn = Boolean.parseBoolean(plugged); + } + fireBatteryLevelChanged(); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java index 748ee97c06210..ae104cd968ad5 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java @@ -36,11 +36,15 @@ public class TunerActivity extends SettingsDrawerActivity implements super.onCreate(savedInstanceState); if (getFragmentManager().findFragmentByTag(TAG_TUNER) == null) { + boolean showDemoMode = getIntent().getAction().equals( + "com.android.settings.action.DEMO_MODE"); boolean showNightMode = getIntent().getBooleanExtra( NightModeFragment.EXTRA_SHOW_NIGHT_MODE, false); + final PreferenceFragment fragment = showNightMode ? new NightModeFragment() + : showDemoMode ? new DemoModeFragment() + : new TunerFragment(); getFragmentManager().beginTransaction().replace(R.id.content_frame, - showNightMode ? new NightModeFragment() : new TunerFragment(), - TAG_TUNER).commit(); + fragment, TAG_TUNER).commit(); } }