summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/docs/demo_mode.md
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/docs/demo_mode.md')
-rw-r--r--packages/SystemUI/docs/demo_mode.md169
1 files changed, 169 insertions, 0 deletions
diff --git a/packages/SystemUI/docs/demo_mode.md b/packages/SystemUI/docs/demo_mode.md
new file mode 100644
index 0000000..18ae4cb
--- /dev/null
+++ b/packages/SystemUI/docs/demo_mode.md
@@ -0,0 +1,169 @@
+# Demo Mode for the Android System UI
+*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:
+
+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)
+```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
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command enter
+```
+
+
+Exit demo mode
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command exit
+```
+
+
+Set the clock to 12:31
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm
+1231
+```
+
+
+Set the wifi level to max
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command network -e wifi
+show -e level 4
+```
+
+
+Show the silent volume icon
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command status -e volume
+silent
+```
+
+
+Empty battery, and not charging (red exclamation point)
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command battery -e level
+0 -e plugged false
+```
+
+
+Hide the notification icons
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command notifications -e
+visible false
+```
+
+
+Exit demo mode
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command exit
+```
+
+
+## Example demo controller app in AOSP
+```
+frameworks/base/tests/SystemUIDemoModeController
+```
+
+
+## Example script (for screenshotting purposes)
+```bash
+#!/bin/sh
+CMD=$1
+
+if [[ $ADB == "" ]]; then
+ ADB=adb
+fi
+
+if [[ $CMD != "on" && $CMD != "off" ]]; then
+ echo "Usage: $0 [on|off] [hhmm]" >&2
+ exit
+fi
+
+if [[ "$2" != "" ]]; then
+ HHMM="$2"
+fi
+
+$ADB root || exit
+$ADB wait-for-devices
+$ADB shell settings put global sysui_demo_allowed 1
+
+if [ $CMD == "on" ]; then
+ $ADB shell am broadcast -a com.android.systemui.demo -e command enter || exit
+ if [[ "$HHMM" != "" ]]; then
+ $ADB shell am broadcast -a com.android.systemui.demo -e command clock -e
+hhmm ${HHMM}
+ fi
+ $ADB shell am broadcast -a com.android.systemui.demo -e command battery -e
+plugged false
+ $ADB shell am broadcast -a com.android.systemui.demo -e command battery -e
+level 100
+ $ADB shell am broadcast -a com.android.systemui.demo -e command network -e
+wifi show -e level 4
+ $ADB shell am broadcast -a com.android.systemui.demo -e command network -e
+mobile show -e datatype none -e level 4
+ $ADB shell am broadcast -a com.android.systemui.demo -e command notifications
+-e visible false
+elif [ $CMD == "off" ]; then
+ $ADB shell am broadcast -a com.android.systemui.demo -e command exit
+fi
+```
+