系统界面演示模式 - System UI Demo Mode

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.
Commands are sent as string extras with key command (required). Possible values are:

CommandSubcommandArgumentDescription
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 (truefalse) 
powersave Sets power save mode (trueanything else) 
network  Control the RSSI display
airplane show to show icon, any other value to hide 
fully Sets MCS state to fully connected (truefalse) 
wifi show to show icon, any other value to hide 
 levelSets wifi level (null or 0-4) 
mobile show to show icon, any other value to hide 
 datatypeValues: 1x3g4geghlteroam, any other value to hide 
 levelSets 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 (silentvibrate, any other value to hide) 
bluetooth Sets the icon in the bluetooth slot (connecteddisconnected, 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)

#!/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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值