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
网友评论