通过该命令可以使用系统感知的用户情绪信息,即主题引擎可在主题锁屏界面感知用户的实时情绪和综合情绪。情绪值通过全局变量emotionValue获取,枚举值包括:愉悦(0)、平静(2)、不愉悦(4),未感知用户情绪(-1)。
对于实时情绪,可在亮屏时准实时获取,在进入亮屏后可实时获取;建议在设计上,提供由用户开启/关闭实时情绪感知能力的触发设计,默认是关闭状态。
综合情绪为用户一段时间内的情绪体现,可在亮屏时获取,进入亮屏后建议以用户实时情绪为准进行设计。
创意场景
1、根据不同情绪值,更改背景图或背景视频,正向体现用户的情绪,比如心情不愉悦时,展示的就是不愉悦的动画。
2、根据不同情绪值,更改背景图或背景视频,反向呈现,给用户激励,比如心情不愉悦时,展示的是鼓励的视频。
起始规范版本:HarmonyOS 6.0
是否平台特性:是
锁屏(Lockscreen) | 桌面(Wallpaper) | 一镜到底(LongTake) | 百变卡片(Widget) | 充电动效(ChargingSkin) | |
|---|---|---|---|---|---|
是否支持 | √ | x | x | x | x |
直板机 | 折叠屏 | 平板 | |
|---|---|---|---|
是否支持 | √(仅部分设备支持) | √(仅部分设备支持) | √(仅部分设备支持) |
参数 | 类型 | 选项 | 注释 |
enable | boolean | 必填 | 控制情绪感知能力是否打开,0:关闭,1:打开,支持数值表达式。 |
1. 引擎脚本首次加载时,会执行一次EmotionCommand命令,可以通过变量控制初始化时开启状态。
2. 情绪感知能力打开后,emotionValue值以固定200ms间隔刷新,可以通过“长按”交互获取当前情绪状态数据,触发动效。
3. 脚本中emotionValue全局变量和EmotionCommand命令必须同时存在,缺一不可。
4. 同一个脚本中只允许写一个EmotionCommand命令。
示例一:通过按钮命令控制开启或关闭情绪感知能力,并获取情绪值,情绪值变化触发不同视频播放
<Var name="open_emotion" expression="0"/>
<Var name="zz" expression="#emotionValue" threshold="1" globalPersist="true">
<Trigger>
<VideoCommand name="bgv" src="videos/loop_A.mp4" play="true" condition="eq(#emotionValue,0)"/>
<VideoCommand name="bgv" src="videos/loop_B.mp4" play="true" condition="eq(#emotionValue,-1)"/>
<VideoCommand name="bgv" src="videos/loop_C.mp4" play="true" condition="eq(#emotionValue,2)"/>
<VideoCommand name="bgv" src="videos/loop_D.mp4" play="true" condition="eq(#emotionValue,4)"/>
</Trigger>
</Var>
<Video name="bgv" x="0" y="0" w="#w" h="2600" src="loop_A.mp4" play="true" sound="0"/>
<Button h="#screen_height" w="#screen_width" x="0" y="0">
<Trigger action="double">
<VariableCommand name="open_emotion" expression="1-#open_emotion"/>
<EmotionCommand enable="#open_emotion"/>
</Trigger>
</Button> 示例二:通过按钮命令控制开启情绪感知能力并实时获取情绪值,锁屏长按获取最近一次情绪,触发视频播放。
<Var name="zz" expression="-1" />
<Button h="#screen_height" w="#screen_width" x="0" y="0">
<Trigger action="double">
<VariableCommand name="open_emotion" expression="1-#open_emotion"/>
<EmotionCommand enable="#open_emotion"/>
</Trigger>
</Button>
<Button h="#screen_height" w="#screen_width" x="0" y="0">
<Trigger action="long">
<VariableCommand name="zz" expression="#emotionValue"/>
<VideoCommand name="bgv" src="loop_A.mp4" play="true" condition="eq(#zz,0)"/>
<VideoCommand name="bgv" src="loop_B.mp4" play="true" condition="eq(#zz,-1)"/>
<VideoCommand name="bgv" src="loop_C.mp4" play="true" condition="eq(#zz,2)"/>
<VideoCommand name="bgv" src="loop_D.mp4" play="true" condition="eq(#zz,4)"/>
</Trigger>
</Button>