-
Notifications
You must be signed in to change notification settings - Fork 87
Detection & Interaction_chn
用户检测和用户交互是两个状态机,这两个状态机允许我们监听当一个人体是否被检测到以及用户是否正在和temi进行交互。
temi要开启欢迎模式才能使用这些状态机,请参考如下的集成说明。在欢迎模式中,temi将:
- 不断地搜寻用户
- 在RGB相机框内0.8米的距离可以被识别
- 如果前方有1位以上的用户,则选择距离最近和在最中心的用户
如果Launcher处于没有用户交互和移动的状态一段时间后Launcher会返回桌面,这时temi将启动欢迎模式,并且你的技能可以通过此功能监听欢迎模式的状态事件,并根据这些事让temi做你想要它做的的事情。
有关检测和交互状态机的更多信息,请参阅下面的监听器部分。
提示: 我们已经开发了一个可以满足大多数B2B需求的 欢迎模式B2B,这个App可以为任何想用欢迎模式能力开发App的开发者提供一个比较好的参考。
返回值 | 方法 | 说明 |
---|---|---|
boolean | isDetectionModeOn() | 检查用户检测模式是否已打开 |
void | setDetectionModeOn(boolean on) | 打开(关闭)用户检测模式 |
void | setDetectionModeOn(boolean on, float distance) | 打开用户检测模式并设置最大检测距离 |
boolean | isTrackUserOn | 检查原地跟随是否以打开 |
void | setTrackUserOn(boolean isOn) | 打开(关闭)原地跟随 |
接口 | 说明 |
---|---|
OnDetectionStateChangedListener | 用户检测状态变化监听器 |
OnUserInteractionChangedListener | 用户交互状态变化监听器 |
OnDetectionDataChangedListener | 用户检测数据变化监听器 |
模型 | 说明 |
---|---|
DetectionData | 用户检测模式下的检测数据 |
要在你的技能中集成欢迎模式能力,那么需要完成以下步骤:
-
打开用户检测模式,不会同时打开原地跟随。
关闭用户检测模式,原地跟随也将被关闭。开(关)原地跟随的同时也会开(关)用户检测模式。操作 \ 结果 用户检测模式 原地跟随 打开用户检测模式 打开 - 关闭用户检测模式 关闭 关 闭打开原地跟随 打开 打开 关闭原地跟随 关闭 关闭
查看用户检测模式是否已打开,默认为关闭。
-
返回值
类型 说明 boolean true(false)表示用户检测模式已打开(关闭) -
原型
boolean isDetectionModeOn();
-
所需权限
无。
-
最小支持版本
0.10.70
用这个方法来打开(关闭)用户检测模式,用这个方法来打开用户检测模式的最大检测距离为默认的 0.8 米。如果当前出于迎宾模式,这个方法将失效。
-
参数
参数 类型 说明 on boolean 传入 true
(false
)打开(关闭)用户检测模式 -
原型
void setDectionModeOn(boolean on);
-
所需权限
作为选中的 Kiosk(小于 129 版本)
设置 -
最小支持版本
0.10.70
用这个方法来打开(关闭)用户检测模式,用这个方法来打开用户检测模式可以同时设置其最大的检测距离。如果当前处于迎宾模式,这个方法将失效。
-
参数
参数 类型 说明 on boolean 传入 true
(false
)打开(关闭)用户检测模式distance float 用户检测模式所能检测的最大距离(仅当 on
为true
时起作用)。有效的取值范围为 0.5~2.0 米。 -
原型
void setDectionModeOn(boolean on, float distance);
-
所需权限
作为选中的 Kiosk(小于 129 版本)
设置 -
最小支持版本
0.10.70
查看原地跟随是否已打开,默认为关闭。
-
返回值
类型 说明 boolean true(false)表示原地跟随已打开(关闭) -
原型
boolean isTrackUserOn();
-
所需权限
无。
-
最小支持版本
0.10.70
用这个方法来打开(关闭)原地跟随。原地跟随指在回到无用户交互状态后,开启用户人体检测,在检测到用户后开启原地跟随,并在顶部显示绿色的欢迎词徽章。也可在 设置 > 通用设定 > 原地跟随 进行打开(关闭)。如果当前出于迎宾模式,这个方法将失效。
-
参数
参数 类型 说明 on boolean 传入 true
(false
)打开(关闭)原地跟随 -
原型
void setTrackUserOn(boolean on);
-
所需权限
作为选中的 Kiosk(小于 129 版本)
设置 -
最小支持版本
0.10.70
在你的上下文中实现这个监听器接口,并重写接口中的方法以获取用户检测事件的最新状态信息。
package com.robotemi.sdk.listeners;
interface OnDetectionStateChangedListener {}
常量 | 类型 | 值 | 说明 |
---|---|---|---|
DETECTED | int | 2 | 检测到人体 |
LOST | int | 1 | 检测到的人体目标丢失 |
IDLE | int | 0 | 丢失目标后,十秒内未检测到人体 |
-
参数
参数 类型 说明 state int 用户检测状态,可能的值为 DETECTED
,LOST
,IDLE
-
原型
abstract void onDetectionStateChanged(int state);
-
参数
参数 类型 说明 listener OnDetectionStateChangedListener 实现了此接口的类的实例 -
原型
void addOnDetectionStateChangedListener(OnDetectionStateChangedListener listener)
-
参数
参数 类型 说明 listener OnDetectionStateChangedListener 实现了此接口的类的实例 -
原型
void removeOnDetectionStateChangedListener(OnDetectionStateChangedListener listener)
0.10.53
在你的上下文中实现这个监听器接口,并重写接口中的方法以获取用户交互事件的最新状态信息。如果满足以下条件之一,用户交互状态机将激活:
- 检测到用户
- 用户正在通过触摸屏幕或语音与temi交互,或正在进行远程控制(视频通话)
- temi正在行动中
package com.robotemi.sdk.listeners;
interface OnUserInteractionChangedListener {}
-
参数
参数 类型 说明 isInteracting boolean true
表示正在交互,false
反之 -
原型
abstract void onUserInteraction(boolean isInteracting);
-
参数
参数 类型 说明 listener OnUserInteractionChangedListener 实现了此接口的类的实例 -
原型
void addOnUserInteractionChangedListener(OnUserInteractionChangedListener listener)
-
参数
参数 类型 说明 listener OnUserInteractionChangedListener 实现了此接口的类的实例 -
原型
void removeOnUserInteractionChangedListener(OnUserInteractionChangedListener listener)
0.10.53
在用户检测模式打开后,可接收到用户检查相关的数据。
package com.robotemi.sdk.listeners;
interface OnDetectionDataChangedListener {}
-
参数
参数 类型 说明 detectionData DetectionData 用户检测模式的数据 -
原型
abstract void onDetectionDataChanged(DetectionData detectionData);
-
参数
参数 类型 说明 listener OnDetectionDataChangedListener 实现了此接口的类的实例 -
原型
void addOnDetectionDataChangedListener(OnDetectionDataChangedListener listener)
-
参数
参数 类型 说明 listener OnDetectionDataChangedListener 实现了此接口的类的实例 -
原型
void removeOnDetectionDataChangedListener(OnDetectionDataChangedListener listener)
0.10.70
下面是有关上述监听器用到的模型详细信息。
用于保存用户检测相关的数据。
package com.robotemi.sdk.model;
class DetectionData {}
属性 | 类型 | 说明 |
---|---|---|
angle | double | - |
distance | double | temi 到人体的距离 |
isDetected | boolean | 是否检测到人体,true 表示检测到,false 反之 |