-
Notifications
You must be signed in to change notification settings - Fork 87
temi Center_chn
这里的特性都需要提前在 temi 管理平台 进行配置之后才能使用。
导览(Sequence)是可以经过简单的图形化界面的配置之后,即可是实现强大的链式操作的工具。
用户可以在 temi 管理平台上创建导览,通过点击,拖拽,拼接,将一系列移动,说话,视频,图片等动作串联在一起,实现如先移动到某地点,同时进行语音播报,到达地点后,展示视频图片等等复杂链式操作。
导览可用于多种场景,首页一键播放、定时任务,语音触发、事件触发等等。
通过 SDK,可以获取、播放属于组织资源的导览数据,并控制其播放进程。
讲解是将导览、问答等资源与地点结合起来后的功能。
它适用于展厅等场景,让 temi 扮演一个讲解员,带领访客、观众沿路线参观展厅。在每个地点、地点之间播放导览、提供问答讲解。
你可以在 temi center 创建讲解。首先创建一条讲解路线,然后附加上导览等资源,最后可以自定义讲解过程中的各个阶段的 UI。
迎宾模式(Greet Mode)是将多个软硬件功能集成在一起之后提供的一个集合了检测 识别、迎接、引导等流程的功能模块。
用户同样可以在 temi 管理平台上经过简单的配置,为迎宾的检测、迎接、引导、结束等环节配置相应的参数及播放指定导览,实现强大的迎宾功能。
通过 SDK,可以监听迎宾模式的状态切换,对开发者来说通常是配合 Kiosk 模式的首页应用,在 temi 管理平台上关闭不需要的迎宾配置项,仅保留基础的检测逻辑,让开发者不需要写复杂的接入实现,即可以为自己的应用加入全程保持在应用前台运行,并能实时感知状态的迎宾功能。
目前限于隐私保护的原因,不在中文版 temi 管理平台上提供人脸注册的功能。
人脸识别是一个注册、检测、识别的过程的集合,可以在迎宾模式中开启人脸识别实现 VIP 迎宾,也可以通过 SDK 单独调用识别。
129 版本起,在迎宾模式下,对于识别到的未注册的用户会提供更多的回调数据。包括在多轮迎宾下都保持一致的 UUID,可用于首次来访、再次来访等场景。
未注册的用户数据最大容量为 200 条,每次开机会清空。如果夜间 12 点仍在运行没有处于迎宾模式,也会清除未注册的用户数据。
从 1.131.2 版本开始,除了通过 temi center 创建联系人添加人脸识别照片的方式之外,应用本身可以通过 SDK 本地注册人脸。既,应用通过 SDK 传入一张照片,并提供用户 id,姓名等信息,即可完成本地人脸注册。 通过这种方式注册的人脸仅会用于当前应用所启动的人脸识别,而不会在迎宾模式中的第二阶段的人脸识别中生效。
本地注册的人脸图像仅会被算法处理转换成匿名的、不可逆的特征数据,图片本身不会被存储或用于特征提取之外的用途。
本地人脸注册只需要做一次,之后调用人脸识别功能就回生效,无须每次启动识别之前反复注册。
如果此前注册过本地人脸信息,当应用启动启动人脸识别后,如本地注册的人脸匹配结果优于 temi center 端注册的联系人,将把本地注册的人脸用户作为人脸识别的结果返回给应用。
本地人脸注册和管理的过程全部通过 content provider 实现。可以参考 FaceActivity 中的例子。这一页面也可以在 SDK sample 中的 RESOURCES -> Test Face Recognition 的路径启动。
更多信息,请查看页面 本地人脸注册
返回值 | 方法 | 说明 |
---|---|---|
void | startFaceRecognition() | 开始人脸识别 |
void | stopFaceRecognition() | 停止人脸识别 |
List<SequenceModel> | getAllSequences(List<String>) | 获取所有导览数据 |
void | playSequence(String sequenceId) | 播放指定导览 |
void | playSequence(String sequenceId, boolean withPlayer) | 播放指定导览并设置是否同时显示播放器界面 |
InputStream | getInputStreamByMediaKey(ContentType contentType, String mediaKey) | 根据 contentType 和 mediaKey 获取文件的输入流(目前仅用于获取人脸识别的联系人照片) |
List<Pair<String, String>> | getSignedUrlByMediaKey(List<String> mediaKeys, int width, int height) | 根据 mediaKeys、宽、高获取多个媒体资源的签名 URL |
void | controlSequence(SequenceCommand sequenceCommand) | 控制当前正在播放的导览 |
int | setInteractionState(Boolean on) | 使迎宾模式保持在第三阶段互动状态 |
List<TourModel> | getAllTours() | 获取所有讲解数据 |
int | playTour(String tourId) | 播放指定讲解 |
接口 | 说明 |
---|---|
OnSequencePlayStatusChangedListener | 导览播放状态变化监听器 |
OnFaceRecognizedListener | 人脸识别监听器 |
OnContinuousFaceRecognizedListener | 连续人脸识别结果监听器 |
OnGreetModeStateChangedListener | 迎宾模式状态变化监听器 |
模型 | 说明 |
---|---|
ContactModel | 联系人数据 |
SequenceModel | 导览数据 |
ContentType | 内容类型 |
SequenceCommand | 导览控制命令 |
TourModel | 讲解数据 |
用这个方法来开启 temi 的人脸识别,并在识别到人脸后将人脸数据回传到 OnFaceRecognizedListener 的回调方法中。
-
原型
void startFaceRecognition();
-
所需权限
作为选中的 Kiosk(小于 129 版本)
人脸识别 -
最小支持版本
0.10.70
用这个方法来停止 temi 的人脸识别服务。
-
原型
void stopFaceRecognition();
-
所需权限
作为选中的 Kiosk(小于 129 版本)
人脸识别 -
最小支持版本
0.10.70
用这个方法来获取所有在 temi 管理平台 中配置过的所属组织的导览。
-
参数
参数 类型 说明 tags List<String> 导览标签(在 temi 管理平台中配置),可选参数,不传入则返回所有所属组织下的导览 -
返回值
类型 说明 List<SequenceModel> 所有的导览集合 -
原型
List<SequenceModel> getAllSequences();
-
所需权限
导览
-
最小支持版本
0.10.70
-
注意
这个方法是耗时操作,建议在非主线程中使用。
用这个方法来获播放一个指定的导览。
-
参数
参数 类型 说明 sequenceId String 导览ID -
原型
void playSequence(String sequenceId);
-
所需权限
导览
-
最小支持版本
0.10.70
用这个方法来获播放一个指定的导览,并可选择是否显示导览播放器控制界面,播放器控制界面可对导览进行暂停、播放、上一步、下一步操作。
-
参数
参数 类型 说明 sequenceId String 导览ID withPlayer boolean 是否显示播放器操作界面 -
原型
void playSequence(String sequenceId, boolean withPlayer);
-
所需权限
导览
-
最小支持版本
0.10.73
用这个方法来根据传入的 contentType
和 mediaKey
获取文件的输入流,目前用于获取人脸识别中的联系人照片文件。
-
参数
参数 类型 说明 contentType ContentType 内容类型 mediaKey String 文件的媒体资源的 key -
返回值
类型 说明 InputStream 文件的输入流 -
原型
InputStream getInputStreamByMediaKey(ContentType contentType, String mediaKey);
-
所需权限
无。
-
最小支持版本
0.10.70
-
注意
这个方法是耗时操作,建议在非主线程中使用。
用这个方法来根据传入的 mediaKeys
、width
、height
来获取对应媒体资源的签名URL。
-
参数
参数 类型 说明 mediaKeys List<String> 待获取的媒体资源的 key 列表 width int 媒体(图片)的宽,不传则返回原资源 height int 媒体(图片)的高,不传则返回原资源 -
返回值
类型 说明 List<Pair<String, String>> mediaKey 以及其对应的签名URL键值对列表 -
原型
List<Pair<String, String>> getSignedUrlByMediaKey(List<String> mediaKeys, int width, int height);
-
所需权限
无。
-
最小支持版本
0.10.77
-
注意
这个方法是耗时操作,建议在非主线程中使用。
用这个方法来控制当前正在播放的导览可对导览进行停止、播放、暂停、上一步、下一步操作。
-
参数
参数 类型 说明 sequenceCommand SequenceCommand 控制命令 -
原型
void controlSequence(SequenceCommand sequenceCommand);
-
所需权限
作为选中的 Kiosk(小于 129 版本)
导览 -
最小支持版本
0.10.78
使迎宾模式保持在第三阶段互动状态。
130 版本之前,迎宾模式的互动状态全部由内部逻辑控制,如机器人是否在移动,语音互动等等。
130 版本后,通过这个方法,SDK 可以控制迎宾模式保持在互动状态。
-
参数
参数 类型 说明 on Boolean true 使迎宾模式保持为互动状态 -
返回值
类型 说明 int -1 请求失败,可能 SDK 未初始化完成
0 成功
403 当前应用不是所选主页应用 -
原型
int setInteractionState(Boolean on);
-
所需权限
作为选中的主页应用.
-
最小支持版本
1.130.0
获取讲解列表
-
参数
参数 类型 说明 tags List<String> 讲解标签(在 temi 管理平台中配置),可选参数,不传入则返回所有机器人的讲解 -
返回值
类型 说明 List<TourModel> 讲解列表 -
原型
List<TourModel> getAllTours();
-
所需权限
Sequence
-
最小支持版本
1.132.0
-
注意
这个方法是耗时操作,建议在非主线程中使用。
启动指定讲解
-
参数
参数 类型 说明 tourId String 讲解id -
返回值
类型 说明 int 0 成功, 403 无权限, 404 找不到对应讲解, -1 方法不支持或其它错误 -
原型
int playTour(String tourId);
-
所需权限
Sequence
-
最小支持版本
1.132.0
让你的上下文实现这个监听器接口,并重写相关方法以获取识别到的人脸对应的联系人信息。当识别到的人脸已经在 temi 管理平台 中配置过时,会返回所对应的联系人的其他信息;而如果未在 temi 管理平台 配置过,则会返回空的 ContactModel 对象。
package com.robotemi.sdk.face;
interface OnFaceRecognizedListener {}
-
参数
参数 类型 说明 contactModelList List<ContactModel> 识别到的人脸对应的联系人集合 -
原型
void onFaceRecognized(List<ContactModel> contactModelList);
-
参数
参数 类型 说明 listener OnFaceRecognizedListener 实现了这个接口的类的实例 -
原型
void addOnFaceRecognizedListener(OnFaceRecognizedListener listener);
-
参数
参数 类型 说明 listener OnFaceRecognizedListener 实现了这个接口的类的实例 -
原型
void removeOnFaceRecognizedListener(OnFaceRecognizedListener listener);
-
所需权限
人脸识别
-
最小支持版本
0.10.70
让你的上下文实现这个监听器接口,并重写相关方法以获取识别到的人脸对应的联系人信息。当识别到的人脸已经在 temi 管理平台 中配置过时,会返回所对应的联系人的其他信息;而如果未在 temi 管理平台 配置过,则会返回空的 ContactModel 对象。
注意: 人脸识别结果会频繁下发,请考虑按需过滤部分数据,达到理想的频率。
package com.robotemi.sdk.face;
interface OnContinuousFaceRecognizedListener {}
-
参数
参数 类型 说明 contactModelList List<ContactModel> 识别到的人脸对应的联系人集合 -
原型
void onContinuousFaceRecognized(List<ContactModel> contactModelList);
-
参数
参数 类型 说明 listener OnContinuousFaceRecognizedListener 实现了这个接口的类的实例 -
原型
void addOnContinuousFaceRecognizedListener(OnContinuousFaceRecognizedListener listener);
-
参数
参数 类型 说明 listener OnContinuousFaceRecognizedListener 实现了这个接口的类的实例 -
原型
void removeOnContinuousFaceRecognizedListener(OnContinuousFaceRecognizedListener listener);
-
所需权限
人脸识别
-
最小支持版本
0.10.77
让你的上下文实现这个监听器接口,并重写相关方法以监听导览播放的状态。
package com.robotemi.sdk.sequence;
interface OnSequencePlayStatusChangedListener {}
常量 | 类型 | 值 | 说明 |
---|---|---|---|
IDLE | int | 0 | 播放完成 |
PREPARING | int | 1 | 资源准备中 |
PLAYING | int | 2 | 播放中 |
ERROR | int | -1 | 播放错误 |
-
参数
参数 类型 说明 status int 导览的播放状态 -
原型
void onSequencePlayStatusChanged(int status);
-
参数
参数 类型 说明 listener OnSequencePlayStatusChangedListener 实现了这个接口的类的实例 -
原型
void addOnSequencePlayStatusChangedListener(OnSequencePlayStatusChangedListener listener);
-
参数
参数 类型 说明 listener OnSequencePlayStatusChangedListener 实现了这个接口的类的实例 -
原型
void removeOnSequencePlayStatusChangedListener(OnSequencePlayStatusChangedListener listener);
-
所需权限
无。
-
最小支持版本
0.10.70
让你的上下文实现这个监听器接口,并重写相关方法以监听迎宾模式的状态。
package com.robotemi.sdk.listeners;
interface OnGreetModeStateChangedListener {}
常量 | 类型 | 值 | 说明 |
---|---|---|---|
HOLD | int | 0 | 完成 |
SEARCHING | int | 1 | 等待中 |
PREPARING | int | 2 | 资源准备中 |
GREETING | int | 3 | 迎宾中 |
INTERACTION | int | 4 | 用户交互中 |
POST_INTERACTION | int | 5 | 用户离开 |
ERROR | int | -1 | 出现错误 |
-
参数
参数 类型 说明 status int 迎宾模式的状态 -
原型
void onGreetModeStateChanged(int state);
-
参数
参数 类型 说明 listener OnGreetModeStateChangedListener 实现了这个接口的类的实例 -
原型
void addOnGreetModeStateChangedListener(OnGreetModeStateChangedListener listener);
-
参数
参数 类型 说明 listener OnGreetModeStateChangedListener 实现了这个接口的类的实例 -
原型
void removeOnGreetModeStateChangedListener(OnGreetModeStateChangedListener listener);
-
所需权限
无。
-
最小支持版本
0.10.79
用于存放人脸识别中的联系人信息。
package com.robotemi.sdk.face;
class ContactModel {}
属性 | 类型 | 说明 |
---|---|---|
firstName | String | 联系人的名 |
lastName | String | 联系人的姓 |
gender | String | 性别 |
imageKey | String | 联系人照片的媒体资源的 key,通过getInputStreamByMediaKey(ContentType contentType, String mediaKey) 获取对应的文件输入流 |
description | String | 描述信息 |
userId | String | 联系人 ID, temi 注册用户 (userType = 0) 对应 MD5 格式, 如 d7cbcc25cc3fa002d28687ea1136324e 。仅人脸识别用户 (userType = 1) 对应 24 位十六进制字符,如 507fffffbcf86cd799430000 。 迎宾模式下访客 (userType = 2) 对应 12 位十六进制 UUID , 如 3965f7ac0d8b (129 版本加入). 从 129 版本,对应 Launcher 版本 17009 起,其他情况下,仅检测未识别 (userType = -1) 会返回人脸 id, 同一轮识别下,当人脸未离开摄像头范围则 id 保持恒定,从 1 开始计数 (userType = 3) 会返回应用自定义的 uid |
age | int | 年龄 (129 版本加入) |
userType | int | 0:已注册的 temi 用户。 1:temi 联系人,非 temi 注册用户,仅用于人脸识别。 2:迎宾模式中的访客,提供 UUID。 3: SDK 本地注册的人脸 -1:检测到人脸但无法识别 (129 版本加入) |
similarity | double | 识别结果相似度,当且识别结果对比与识别到的注册用户的或访客用户的相似度,范围在 0.7 到 1.0 (129 版本加入) |
faceRect | Rect | 人脸的 Rect 位置尺寸数据 (132 版本加入) |
使用方法可参考示例代码。
用于存放内容类型,目前只有人脸识别图片以及地图数据。
package com.robotemi.sdk.constants;
enum ContentType {
FACE_RECOGNITION_IMAGE,
MAP_DATA_IMAGE
}
用于存放导览数据。
package com.robotemi.sdk.sequence;
class SequenceModel {}
属性 | 类型 | 说明 |
---|---|---|
id | String | 导览ID |
name | String | 导览名称 |
description | String | 导览描述 |
imageKey | String | 导览封面图片资源的 key,通过 getSignedUrlByMediaKey() 获取图片的签名URL |
tags | List<String> | 导览的标签 |
用于存放导览控制的指令,包括停止、播放、暂停、下一步、上一步。
package com.robotemi.sdk.constants;
enum SequenceCommand {
STOP,
PLAY,
PAUSE,
STEP_FORWARD,
STEP_BACKWARD;
}
讲解数据 model
package com.robotemi.sdk.tourguide;
class TourModel {}
属性 | 类型 | 说明 |
---|---|---|
id | String | 讲解 id |
name | String | 讲解名称 |
description | String | 讲解描述 |
language | String | 讲解语言 |
imageKey | String | 讲解封面图片资源的 key,通过 getSignedUrlByMediaKey() 获取图片的签名URL |
tags | List<String> | 讲解的标签 |