Reference to aosp\frameworks\base\packages\SystemUI\README
Demo mode for the status bar allows you to force the status bar into a fixed state, useful for taking screenshots with a consistent status bar state, or testing different status icon permutations. Demo mode is available in recent versions of Android.
Enabling demo mode
Demo mode is protected behind a system setting. To enable it for a device, run:
1 | adb shell settings put global sysui_demo_allowed 1 |
Protocol
The protocol is based on broadcast intents, and thus can be driven via the command line (adb shell am broadcast) or an app (Context.sendBroadcast).
Broadcast action
1 | com.android.systemui.demo |
Commands
Commands and subcommands (below) are sent as string extras in the broadcast
intent.
Commands are sent as string extras with key command (required). Possible values are:
| Command | Subcommand | Argument | Description |
|---|---|---|---|
enter |
Enters demo mode, bar state allowed to be modified (for convenience, any of the other non-exit commands will automatically flip demo mode on, no need to call this explicitly in practice) | ||
exit |
Exits demo mode, bars back to their system-driven state | ||
battery |
Control the battery display | ||
level |
Sets the battery level (0 - 100) | ||
plugged |
Sets charging state (true, false) |
||
network |
Control the RSSI display | ||
airplane |
show to show icon, any other value to hide |
||
fully |
Sets MCS state to fully connected (true, false) |
||
wifi |
show to show icon, any other value to hide |
||
level |
Sets wifi level (null or 0-4) | ||
mobile |
show to show icon, any other value to hide |
||
datatype |
Values: 1x, 3g, 4g, e, g, h, lte, roam, any other value to hide |
||
level |
Sets mobile signal strength level (null or 0-4) | ||
carriernetworkchange |
Sets mobile signal icon to carrier network change UX when disconnected (show to show icon, any other value to hide) |
||
sims |
Sets the number of sims (1-8) | ||
nosim |
show to show icon, any other value to hide |
||
bars |
Control the visual style of the bars (opaque, translucent, etc) | ||
mode |
Sets the bars visual style (opaque, translucent, semi-transparent) | ||
status |
Control the system status icons | ||
volume |
Sets the icon in the volume slot (silent, vibrate, any other value to hide) |
||
bluetooth |
Sets the icon in the bluetooth slot (connected, disconnected, any other value to hide) |
||
location |
Sets the icon in the location slot (show, any other value to hide) |
||
alarm |
Sets the icon in the alarm_clock slot (show, any other value to hide) |
||
sync |
Sets the icon in the sync_active slot (show, any other value to hide) |
||
tty |
Sets the icon in the tty slot (show, any other value to hide) |
||
eri |
Sets the icon in the cdma_eri slot (show, any other value to hide) |
||
mute |
Sets the icon in the mute slot (show, any other value to hide) |
||
speakerphone |
Sets the icon in the speakerphone slot (show, any other value to hide) |
||
notifications |
Control the notification icons | ||
visible |
false to hide the notification icons, any other value to show |
||
clock |
Control the clock display | ||
millis |
Sets the time in millis | ||
hhmm |
Sets the time in hh:mm |
Examples
Enter demo mode
1 | adb shell am broadcast -a com.android.systemui.demo -e command enter |
Exit demo mode
1 | adb shell am broadcast -a com.android.systemui.demo -e command exit |
Set the clock to 12:31
1 | adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm |
Set the wifi level to max
1 | adb shell am broadcast -a com.android.systemui.demo -e command network -e wifi |
Show the silent volume icon
1 | adb shell am broadcast -a com.android.systemui.demo -e command status -e volume |
Empty battery, and not charging (red exclamation point)
1 | adb shell am broadcast -a com.android.systemui.demo -e command battery -e level |
Hide the notification icons
1 | adb shell am broadcast -a com.android.systemui.demo -e command notifications -e |
Exit demo mode
1 | adb shell am broadcast -a com.android.systemui.demo -e command exit |
Example demo controller app in AOSP
1 | frameworks/base/tests/SystemUIDemoModeController |
Example script (for screenshotting purposes)
1 | #!/bin/sh |
Link
aosp\frameworks\base\packages\SystemUI