*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:
```
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
```
com.android.systemui.demo
```
### Commands
Commands and subcommands (below) are sent as string extras in the broadcast
intent.
<br/>
Commands are sent as string extras with key ```command``` (required). Possible values are:
```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
| ```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)