商米AI识客SDK开发指南

1.准备工作

1.1 申请SDK所需的材料

步骤一:联系商米售前技术团队,申请SDK需要向售前技术支持团队提供如下软件开发商信息

客户提供的信息说明
客户名称软件商公司名称

步骤二:售前技术团队根据客户的需求信息,返回软件商以下内容:

返回给客户的信息说明
SDK开发包用于人脸识别以及AI识客设备开发的SDK(目前只支持安卓版本)

SDK开发包:

序号文件/文件名说明
1FaceDemoDemo工程源码
2face-release.aar商米人脸识别SDK
3libipcsdk-release.aarIPC 联动版sdk
4asset商米人脸识别资源文件
5FaceDemo.apkFaceDemo程序

2、申请Licence

拿到SDK后,联系商米售前人员,提供以下信息申请Licence

提供的信息说明
收银设备硬件指纹1、通过Demo APP查看硬件指纹信息。安装运行FaceDemo.apk,授权FaceDemo存储器权限,会在sdcard目录生成一个硬件指纹信息文件device_fingerprint.txt。
2、或者通过SDK API查看硬件指纹信息。

返回的信息:

信息说明
Licence 激活人脸识别的SDK的Licence
appid和secret_key 激活设备IPC设备

SaaS开发者获取到以上信息后,可以使用人脸识别SDK,并激活IPC设备。

3、添加SDK到工程

3.1 导入SDK

右键点击app,选择New->Module->Import .JAR/.AAR Package

点击Finish即导入aar模块

3.2 权限申明

在AndroidManifest.xml文件里添加如下权限:

	‹uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/›
	‹uses-permission android:name="android.permission.INTERNET" /›
	‹uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /›
	‹uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /›
	‹uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /›
	‹uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /›
	‹uses-permission android:name="android.permission.CAMERA" /›

3.3 导入asset资源

导入提供的assets资源

说明:资源文件需要APP启动的时候复制到APP的运行目录,以方便SDK后续初始化。

3.4 导入licence文件

获取到licence_valid.txt文件,可以放到assets资源目录,也可以放到sdcard目录。

1)放到assets资源目录,则需要把licence_valid.txt文件从资源文件复制到app的工作目录。

2)如果放到sdcard目录,则需要app申请sdcard读取权限。

无论哪一种情况,最后使用的时候,需要传递licence_valid.txt文件的路径,以激活人脸识别SDK。详细见SDK初始化代码

4、DEMO 工程目录结构

4.1 app Module

app Module是DEMO的入口。其中包含了各个模块的入口函数调用。

4.2 commonlib

commonlib Module包含了整个DEMO通用的接口。其中包含摄像头管理,工具类。如下图:

4.2.1 FaceCameraManager

FaceCameraManager统一管理设备自带摄像头和USB摄像头。设备自带摄像头的流程是使用Android系统提供的摄像头通用方法。USB摄像头则使用UVC库提供的操作摄像头的方法。FaceCameraManager对上层应用提供统一的方法:startPreview和 stopPreview。

4.2.2 NormalCameraManager

NormalCameraManager使用Android系统提供的摄像头方法,实现startPreview和stopPreview。并在内部实现回调接口用于返回每一帧摄像头获得的数据。

4.2.3 UVCCameraManager

UVCCameraManager使用第三方库UVClib提供的方法用于操作USB摄像头,实现startPreview和stopPreview。 并在内部实现回调接口用于返回每一帧摄像头获得的数据 。

4.2.4 ByteUtils

ByteUtils提供Byte操作的一些通用方法。

4.2.5 DBHelper

DBHelper提供创建数据的方法。

4.2.6 ImageUtils

ImageUtils提供图片操作的一些方法。

4.3 libuvccamera

libuvccamera Module采用第三方库开源库libuvccamera

4.4 facedemo

facedemo Module是DEMO实现功能的主要模块。其包含:配置IPC、会员注册、会员管理、会员查询等功能。

5、配置IPC

IPC设备使用时,如果未激活,需要先激活IPC设备。激活步骤如下:

5.1 SDK初始化

APP_ID:激活与API调用校验使用的账号。

SECRET_KEY:API调用所需的签名密钥。

LICENSE:激活API所需的激活码。

IPCameraManager mIPCameraManager = IPCameraManager.getInstance(context);
mIPCameraManager.init(APP_ID, SECRET_KEY, LICENSE);

5.2 配网

IPC设备激活时需要连接到互联网。IPC连接互联网时,可以通过无线(wifi)或有线(以太网口)连接到路由器。无线连接时需要做配网设置。

有线接入:

有线接入只需要通过网线把IPC设备和集成SDK的Android设备接入到同一局域网即可,不需要其它设置。

无线接入:

无线配网方式相对要复杂点,步骤如下:

  1. 使用手机/PC的无线网卡扫描IPC的AP热点,一般AP热点的名称为SUNMI_XXXX,其中XXXX为MAC地址最后2个字节的16进制数字,MAC地址可以通过设备机身后背的标贴或者包装盒的标贴查到,AP热点本身是无加密的。
  2. 使用手机/PC的无线网卡连接IPC的AP热点,此时手机/PC就会获取到IPC分配的IP地址(按照设备发现描述的方法即可获取到),一般会是192.168.200.XXX,手机/PC的网关地址就是IPC的地址,一般会是192.168.200.1。
  3. 调用无线配置 API(见获取无线扫描AP列表 (无需签名校验)的描述)获取IPC扫描到的AP热点。
  4. 调用无线配置 API(见设置无线参数(无需签名校验)的描述)设置IPC要连接的无线网络(例如无线路由器的SSID和密码),使得IPC能够从网关处获取到IP地址。
  5. 如果网络是可以正常上网的话,IPC取到IP地址后很快就会亮蓝灯,此时表明IPC可以正常连接Internet了。

IPC扫描AP代码见 商米AI识客SDK示例代码->IPC扫描

IPC连接Wifi代码详细见 商米AI识客SDK示例代码->IPC连接AP

5.3 激活

通过 5.2配网 后,IPC通过无线连接到路由或者直接有线连接路由。

由于使用IPC的其它API时需要签名校验,所以在使用API之前需要激活IPC。激活只需要在第一次使用IPC时进行,后续都不再需要激活。

调用active接口既可以激活IPC设备。详细见 商米AI识客SDK示例代码-> 激活IPC

5.4 画面调整

由于IPC的人脸识别对于人脸图像质量有一定要求,因此在使用IPC前需要调整IPC的画面,以达到最好的体验效果。画面调整包括镜头的调焦、对焦。步骤如下:

5.4.1 RTSP 播放

首先需要通过预览画面查看IPC设备镜头是对焦,画面是否清晰。IPC设备是通过RTSP协议传递视频流,所以开发一款RTSP播放器才能看到视频流。

调用VideoStream.getInstance(context).getLiveStream接口可以获取到RTSP播放流的地址。详细代码见 商米AI识客SDK示例代码-> RTSP播放

5.4.2 调焦、对焦

为了更好的人脸识别效果,需要对IPC设备进行调焦对焦。

调用接口BasicConfig.getInstance(context).setZoom调焦; BasicConfig.getInstance(context) .autoFoucus自动进行对焦调焦。

详细代码见 商米AI识客SDK示例代码-> IPC对焦、调焦

6、会员注册

完成会员的注册功能。输入会员的ID、分组、备注信息,并采集用户的人脸,注册人脸特征信息。注册信息的同时,会通过摄像头采集人脸照片传递给IPC设备。

6.1 获取摄像头数据

详细代码见 商米AI识客SDK示例代码->获取摄像头信息

6.2 注册会员信息和人脸信息

详细代码见 商米AI识客SDK示例代码-> 会员注册

7、会员管理

包括会员列表、会员删除、会员查看、会员注册。

会员删除详细代码见 会员删除

会员注册详细代码见  会员注册

8、会员实时查询

主要功能实现了实时的获取摄像头预览数据,并且实时对获取的摄像头数据进行特征提取,根据人脸特征信息查询会员。做到通过人脸查询会员的目的。主要使用到的功能有:实时获取摄像头预览数据以及人脸特征提取两个功能

详细代码见 商米AI识客SDK示例代码->获取摄像头预览信息

详细代码见 商米AI识客SDK示例代码->人脸特征提取