目录

命令:情绪感知<EmotionCommand>

功能概述

通过该命令可以使用系统感知的用户情绪信息,即主题引擎可在主题锁屏界面感知用户的实时情绪和综合情绪。情绪值通过全局变量emotionValue获取,枚举值包括:愉悦(0)、平静(2)、不愉悦(4),未感知用户情绪(-1)。

对于实时情绪,可在亮屏时准实时获取,在进入亮屏后可实时获取;建议在设计上,提供由用户开启/关闭实时情绪感知能力的触发设计,默认是关闭状态。

综合情绪为用户一段时间内的情绪体现,可在亮屏时获取,进入亮屏后建议以用户实时情绪为准进行设计。

创意场景

1、根据不同情绪值,更改背景图或背景视频,正向体现用户的情绪,比如心情不愉悦时,展示的就是不愉悦的动画。

2、根据不同情绪值,更改背景图或背景视频,反向呈现,给用户激励,比如心情不愉悦时,展示的是鼓励的视频。

支持范围

起始规范版本:HarmonyOS 6.0

是否平台特性:是

表1 支持根标签
  

锁屏(Lockscreen)

桌面(Wallpaper)

一镜到底(LongTake)

百变卡片(Widget)

充电动效(ChargingSkin)

是否支持

√

x

x

x

x

表2 支持设备类型
  

直板机

折叠屏

平板

是否支持

√(仅部分设备支持)

√(仅部分设备支持)

√(仅部分设备支持)

XML规范

<EmotionCommand enable="1"/>

参数说明

参数

类型

选项

注释

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>