SystemUI演示模式 (Demo mode)

2020-06-17  本文已影响0人  Soetsu

Android SystemUI的演示模式

状态栏的演示模式允许您强制状态栏进入固定的状态,这对于使用一致的状态栏状态进行截图或测试不同的状态图标排列非常有用。演示模式在最近版本的Android中可用。

启用演示模式

演示模式在系统设置后受到保护。在设备上启用它,执行命令:

adb shell settings put global sysui_demo_allowed 1

协议

该协议基于广播意图,因此可以通过命令行(adb shell am broadcast)或应用程序(Context.sendBroadcast)来驱动。

广播 action

com.android.systemui.demo

命令

命令和子命令(如下)在广播中作为字符串附加发送意图。


命令以字符串附加键command(必需)发送。可能的值是:

命令 子命令 参数 描述
enter 进入演示模式,状态栏允许被修改(为了方便,任何其他非退出命令将自动打开演示模式,不需要在实践中主动调用它)
exit 退出演示模式,状态栏回到它们的系统驱动状态
battery 控制电池显示
level 设置电池电量(0 - 100)
plugged 设置充电状态 (true, false)
powersave 设置省电模式 (true, anything else)
network 控制 RSSI 显示
airplane show 显示图标, 任意其他值隐藏
fully 设置MCS状态为完全连接 (true, false)
wifi show 显示图标, 任意其他值隐藏
level 设置wifi等级 (null 或 0-4)
mobile show 显示图标, 任意其他值隐藏
datatype 值: 1x, 3g, 4g, e, g, h, lte, roam,任意其他值隐藏
level 设置信号塔强度等级 (null 或 0-4)
carriernetworkchange 设置移动信号图标为运营商网络切换用户体验时断开 (show 显示图标, 任意其他值隐藏)
sims 设置sim数量 (1-8)
nosim show 显示图标, 任意其他值隐藏
bars 控制状态栏的视觉样式 (opaque, translucent等)
mode 设置状态栏的视觉样式 (opaque, translucent, semi-transparent)
status 控制状态栏上的系统图标
volume 设置volume图标槽上的图标 (silent, vibrate, any other value to hide)
bluetooth 设置bluetooth图标槽上的图标 (connected, disconnected, 任意其他值隐藏)
location 设置location图标槽上的图标 (show, 任意其他值隐藏)
alarm 设置alarm图标槽上的图标 (show, 任意其他值隐藏)
sync 设置sync_active图标槽上的图标 (show, 任意其他值隐藏)
tty 设置tty图标槽上的图标 (show, 任意其他值隐藏)
eri 设置cdma_eri图标槽上的图标 (show, 任意其他值隐藏)
mute 设置mute图标槽上的图标 (show, 任意其他值隐藏)
speakerphone 设置speakerphone图标槽上的图标 (show, 任意其他值隐藏)
notifications 控制通知图标
visible false 隐藏通知图标,任意其他值显示
clock 控制时钟显示
millis 设置时间,单位为毫秒ms
hhmm 设置时间,单位为hh:mm

示例

进入演示模式

adb shell am broadcast -a com.android.systemui.demo -e command enter

退出演示模式

adb shell am broadcast -a com.android.systemui.demo -e command exit

设置clock时间为 12:31

adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm
1231

设置wifi级别为最大值

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 status -e volume
silent

电量为空且未充电 (红色的感叹号)

adb shell am broadcast -a com.android.systemui.demo -e command battery -e level
0 -e plugged false

隐藏通知图标

adb shell am broadcast -a com.android.systemui.demo -e command notifications -e
visible false

AOSP中的示例演示控制器应用程序

frameworks/base/tests/SystemUIDemoModeController

示例脚本(用于屏幕截图)

#!/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
上一篇下一篇

猜你喜欢

热点阅读