1. 商米人脸识别接口
见《商米人脸识别会员接口文档》,该文档在申请开发包的时候一并提供。
2. IPC联动接口
见IPCManager页面
见《商米人脸识别会员接口文档》,该文档在申请开发包的时候一并提供。
见IPCManager页面
商米AI识客SDK (Android版)是一种面向SUNMI OS设备的人脸识别开发包,配套商米AI识客摄像头使用,SDK主要包含人脸采集、人脸识别、人脸特征数据管理、摄像头配置激活、会员进店提醒等功能,以aar包形式发布。如下是SDK整体框架以及Demo APP架构。
SDK框架图如下:
通过此SDK您可以完成类似如下的应用场景开发。
描述
注册设备发现回调,在IPC设备接入/离开网络时被调用,设备离线30S内回调离线消息。
接口
public void registerListener(IPCameraListener listener);
参数说明
参数名称 | 描述 | 示例 |
listener | 设备发现回调 |
代码示例
IPCameraManager mIPCameraManager = IPCameraManager.getInstance(context);
mIPCameraManager.init("test", "123456", "123456");
mIPCameraManager.registerListener(new IPCameraListener() {
@Override
public void onDeviceOnline(IPCameraInfo device) {
showToast(getApplicationContext(), "[ " + device.getDeviceid() + " ]上线");
}
@Override
public void onDeviceOffline(IPCameraInfo device) {
showToast(getApplicationContext(), "[ " + device.getDeviceid() + " ]离线");
}
});
描述
注销设备发现回调。
接口
public void unregisterListener(IPCameraListener listener);
参数说明
参数名称 | 描述 | 示例 |
listener | 设备发现回调 |
描述
使用此接口可以清楚设备缓存队列,重新触发设备上线回调。
接口
public void rescan();
描述
设置人脸识别回调。
接口
public void setFaceDetectListener(FaceDetectListener listener);
参数说明
参数名称 | 描述 | 示例 |
listener | 人脸识别回调 |
描述
订阅消息接口用于向IPC设备端订阅相关的消息,一旦订阅了消息,当设备端产生了相关消息的时候,便会向订阅时传入的回调接口发送一个HTTP POST消息,从而达到通知订阅者的目的。
接口
public void subscribeEvent(String deviceId, List‹String› events, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
events | 事件类型,可以是[“face_recog_event”,”dynamic_detect_event”]或者其中一个,其中”face_recog_event”仅FM020支持 | [“face_recog_event”] |
callback | 调用结果 |
回调示例
new RPCCallback‹RPCResponse›() {
@Override
public void onComplete(RPCResponse result) {
Log.i(TAG, "return code= " + result.code());
if (result.code() == RPCErrorCode.SUCCESS) {
Log.i(TAG, "event subscribe success");
} else {
Log.i(TAG, "event subscribe failed, code:" + result.code());
}
}
@Override
// http调用出错
public void onAbort(int httpStatus) {
Log.i(TAG, "unexpected http status: " + httpStatus);
}
@Override
// 异常回调,例如未发现对应IPC设备
public void onException(Throwable t) {
Log.i(TAG, "Exception: " + t.getMessage());
}
});
注:参考以下实现,后续接口不再说明。
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有0、1、2、5、310、311,见错误码的描述 |
描述
用于取消已经向IPC设备端订阅过的消息,取消订阅后,当设备端产生相关消息时,便不会向对应的回调地址发送HTTP POST消息。
接口
public void unsubscribeEvent(String deviceId, List‹String› events, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
events | 事件类型,可以是[“face_recog_event”,”dynamic_detect_event”]或者其中一个,其中”face_recog_event”仅FM020支持 | [“face_recog_event” ] |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有0、1、2、5、310,见错误码的描述 |
描述
用于查询IPC设备端所有订阅的消息,当设备端产生相关消息时,会向对应的回调地址发送HTTP POST消息。
接口
public void getSubscribedEvents(String deviceId, RPCCallback‹RPCResponse‹IPCEventList›› callback);
参数说明
字段名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有 0、1、2、3、5、7, 见错误码的描述 |
data | IPCEventList | 返回码成功才会有此字段,详见RPCResponse.IPCEventList |
public class IPCameraInfo implements Serializable {
/**
* 序列号
*/
private String deviceid;
/**
* 设备型号
*/
private String model;
/**
* 固件版本号
*/
private String firmware;
/**
* 设备MAC地址
*/
private String mac;
/**
* 设备IP地址
*/
private String ip;
/**
* 设备名称
*/
private String name;
/**
* 设备类型
*/
private String type;
/**
* 设备接入的网络类型;AP-WIFI接入,LAN-有线接入
*/
private String network;
}
public class RPCResponse‹T› {
private int code;
private @Nullable T data;
public int code() {
return code;
}
public @Nullable T data() {
return data;
}
public class IpcInfoBean {
// 设备序列号
public String sn;
// 设备型号
public String model_name;
// 设备名称
public String name;
// 软件版本号
public String software_version;
// 硬件版本号
public String hardware_version;
// IP地址
public String ip;
// MAC地址
public String mac;
}
public class WifiConfBean {
// 当前连接的SSID
public String ssid;
// 当前SSID的密码
public String password;
}
public static class IpcApBean {
// 返回扫描到的AP个数
public int num;
// 扫描到的AP
public List‹ApListBean› ap_list;
public static class ApListBean {
// 扫描到AP的ssid
public String ssid;
// 扫描到AP的加密方式
public String key_mgmt;
}
}
public class ZoomFocusBean {
// 当前的焦距
public int zoom;
// 能够调整的焦距最大值
public int max_zoom;
// 当前的聚焦值
public int focus;
// 能够调整的聚焦最大值
public int max_focus;
// 聚焦点在x方向的像素百分比
public int focused_x;
// 聚焦点在y方向的像素百分比
public int focused_y;
}
public class IrSettingBean {
// 夜视模式:0表示关闭,1表示开启,2表示自动。一般选2。
public int irmode;
}
public class DynamicDetectBean {
// 动态侦测移动灵敏度,范围[0, 3],0表示关闭,数值越大,越灵敏。
public int motion_level;
// 动态侦测声音灵敏度,范围[0, 3],0表示关闭,数值越大,越灵敏。
public int audio_level;
/**
* 动态侦测时间设置参数
* 以周为一个循环,用0xYY来表示选择哪一天,具体是0x80直接表示7×24小时,其余的,
* 以7bit来表示哪一天被选上,0x01表示选择周一,0x02表示选择周二,0x40表示选择
* 周天,0x7f表示选择一个礼拜的7天,与0x80的区别只是0x80直接默认724小时,而
* 0x7f选了7天后,还可以设置具体的开始时间和结束时间。
*/
public int weekday;
/**
* 动态侦测时间设置参数
* 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
* 60表示01:00,121表示02:01,依次类推。范围[0,1440]
*/
public long start_time;
/**
* 动态侦测时间设置参数
* 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
* 60表示01:00,121表示02:01,依次类推。范围[0,1440]
*/
public long stop_time;
}
public class IPCNameBean {
// IPC名称
public String name;
}
public class LedSettingBean {
// 指示灯开关:0表示关闭指示灯,1表示开启指示灯,即可以亮
public int led_switch;
}
public class RotationBean {
// 画面旋转角度
public int rotation;
}
public class SupportRotationsBean {
// 支持的画面旋转角度:{"0","90","180","270"}
public List‹String› angles;
}
public class ExternalStorageBean {
// SD卡的四种状态:0表示未插入SD卡;1表示已插入SD卡但未初始化;2表示SD卡已插入且正常;3表示SD卡无法识别
public int status;
}
public class LiveAddressBean {
// 高清直播地址,RTSP协议
public String hd_live_url;
// 全高清直播地址,RTSP协议
public String fhd_live_url;
}
public class PlaybackBean {
// 视频回放URL,RTSP协议
public String playback_url;
}
public class VideoRecordBean {
// 符合条件的视频总数量,每个视频大概1分钟时长
public int total_num;
// 当前返回的视频数量
public int return_num;
// 视频片段列表
public List‹VideoFragment› record_list;
public class VideoFragment {
// 视频的开始时间
public long start_time;
// 视频的结束时间
public long end_time;
// 视频的下载链接
public String url;
}
}
public class SnapshotBean {
// 快照下载地址
public String snapshot_url;
}
public class CurVideoBean {
// 视频片段下载链接,在生成后4~12s生效
public String url;
}
public class GroupBean {
// 分组数量
public int num;
// 分组列表
public List‹GroupInfo› face_group;
}
public class GroupInfo {
// 分组最大容量
public int capacity;
// 分组内当前记录数量
public int count;
// 分组名称
public String name;
// 分组描述
public String description;
// stranger分组独有
public int period;
// stranger分组独有,代表一个生人在一定时间内(period设置,单位为天)来过多少次(times设置)就移动到熟人分组中去。
public int times;
}
public class AttributesBean {
// 分组自定义属性数量
public int num;
// 自定义属性名称列表
public List‹String› name_list;
}
public class FaceDeleteSubResult {
// 删除成功的人脸ID列表
public List‹String› success_list;
// 删除失败的人脸ID列表
public List‹String› failed_list;
// 不存在的人脸ID列表
public List‹String› not_exist_list;
}
public class FaceRecordBean {
// 人脸ID
public String faceid;
// 所在分组名称
public String group_name;
// 年龄,为空则表示用户没有设置过此人脸的年龄
public int age;
// 所属年龄段,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
public int age_range;
// 性别,0表示未知,1表示男性,2表示女性
public int gender;
// 到达过的总次数
public int arrive_count;
// 最后到达时间戳
public int arrive_time;
}
public class FaceRecordListBean {
// 总人脸数量
public int total_num;
// 当前返回人脸数量
public int return_num;
public List‹FaceRecordListBean› faceid_list;
}
public class DoorLineBean {
// 参照分辨率:取值0和1,0表示1080P的分辨率,1表示720P的分辨率
public int resolution;
// 拌线的左边端点X坐标
public int start_x;
// 拌线的左边端点Y坐标
public int start_y;
// 拌线的右边端点X坐标
public int end_x;
// 拌线的右边端点Y坐标
public int end_y;
}
public class StatsUnit {
// 统计粒度的开始时间
public long start_time;
// 统计粒度的结束时间
public long end_time;
// 整数数组,表示男性统计数据,共有8个整数,从第一个整数开始依次表
// 示1~6岁、7~12岁、13~18岁、19~28岁、29~35岁、36~45岁、46~55岁、
// 56岁~100岁的男性人数。
public List‹Integer› male_num_stat;
// 整数数组,表示女性统计数组,含义同上
public List‹Integer› female_num_stat;
}
public class PeopleStatBean {
// 总人流数量/统计粒度内的人流数量
public int total;
public List‹StatsUnit› stat_list;
}
public class VisitorListBean {
// 符合条件的总人脸数量
public int total_num;
// 当前人脸数量
public int return_num;
public List‹FaceRecordBean› face_list;
}
public class VisitDetailBean {
// 总到访次数
public int total_times;
// 到访的具体时间戳
public List‹Long› came_in_time;
}
public class IPCEventList {
// 订阅的事件数量
public int num;
// 订阅的事件列表
public List‹IPCEvent› sub_event;
private class IPCEvent {
public String event;
public List‹String› http_callback;
}
}
public class FaceRecogEvent {
// 事件ID
public String event_id;
// 人脸ID
public String faceid;
// 分组名称
public String group_name;
// 年龄
public String age;
// 年龄段
public String age_range;
// 性别
public String gender;
// 事件类型
public String event_type;
// IPC序列号
public String sn;
// 事件上报时间
public String report_time;
}
}
public class RPCErrorCode {
// 正常,操作成功
public static final int SUCCESS = 0;
// app_id不合法
public static final int APPID_INVALID = 1;
// 合法性检查失败
public static final int PARAMS_INVALID = 2;
// 未知错误
public static final int UNKNOWN = 3;
// 请求激活的设备没有联网
public static final int DEVICE_NOT_ONLINE = 4;
// app_id或者secret key错误
public static final int SECRET_KEY_INVALID = 5;
// URL错误
public static final int URL_NOT_FOUND = 6;
// 设备未激活
public static final int DEVICE_NOT_ACTIVATED = 7;
// 设备激活失败
public static final int DEVICE_ACTIVATE_FAILED = 8;
// 设备已激活,不需要重复激活
public static final int DEVICE_ACTIVATED = 9;
// 设备已绑定,激活失败
public static final int DEVICE_BINDED = 10;
// SN错误,激活失败
public static final int SN_DISMATCH = 11;
// 操作不允许
public static final int OP_NOT_ALLOWED = 12;
// SSID不符合规范
public static final int WIRELESS_SSID_INVALID = 100;
// 密码不合法
public static final int WIRELESS_PASSWORD_INVALID = 101;
// 焦距范围不合法
public static final int LENS_ZOOM_PARAM_INVALID = 110;
// 聚焦范围不合法
public static final int LENS_FOCUS_PARAM_INVALID = 111;
// 自动聚焦的百分比错误
public static final int LENS_AUTOFOCUS_PARAM_INVALID = 112;
// 夜视模式参数不合法
public static final int LENS_IRMODE_PARAM_INVALID = 113;
// 动态侦测画面灵敏度不合法
public static final int DETECT_MOTION_LEVEL_INVALID = 114;
// 动态侦测声音灵敏度不合法
public static final int DETECT_AUDIO_LEVEL_INVALID = 115;
// 动态侦测日期不合法
public static final int DETECT_WEEKDAY_INVALID = 116;
// 动态侦测开始时间或者结束时间不合法
public static final int DETECT_TIME_PERIOD_INVALID = 117;
// 名字长度超出范围
public static final int CAM_INFO_NAME_INVALID = 118;
// 指示灯开关参数错误
public static final int CAM_INFO_LED_INVALID = 119;
// 旋转参数不合法
public static final int CAM_INFO_ROTATION_INVALID = 120;
// 指定时间段内的视频数据不存在
public static final int CAM_INFO_VIDEO_NOT_EXIST = 121;
// 指定的页码不存在
public static final int CAM_PAGE_NOT_EXIST = 122;
// 人脸分组重名
public static final int GROUP_NAME_EXISTED = 200;
// 人脸分组名称不合法
public static final int GROUP_NAME_INVALID = 201;
// 分组容量超出范围
public static final int GROUP_CAPACITY_INVALID = 202;
// 人脸分组ID不存在
public static final int GROUP_ID_INVALID = 203;
// 指定人脸分组不存在
public static final int GROUP_NOT_EXIST = 204;
// 要删除的人脸分组还有人脸,请先删除分组中的所有人脸
public static final int GROUP_NOT_EMPTY = 205;
// 存在同样的人脸ID
public static final int FACE_ID_EXISTED = 206;
// 指定人脸ID不存在
public static final int FACE_ID_NOT_EXIST = 207;
// 超出人脸分组的容量大小
public static final int GROUP_OVERFLOW = 208;
// 人脸ID操作不允许
public static final int FACE_ID_OP_NOT_ALLOWED = 209;
// 人脸照片不合格
public static final int FACE_ID_PIC_NOT_QUALIFIED = 210;
// 人脸服务未开启
public static final int FACE_SERVICE_NOT_RUNNING = 211;
// 人脸分组描述不合法
public static final int GROUP_DESCRIPTION_INVALID = 212;
// SD卡不存在
public static final int SDCARD_NOT_PLUGGED = 220;
// SD卡格式化失败,原因未知
public static final int SDCARD_FORMAT_FAILED = 221;
// 回放时间参数不正确
public static final int PALYBACK_TIME_INVALID = 230;
// 查询录像时间参数不正确
public static final int RECORD_TIME_INVALID = 231;
// RTSP服务未开启
public static final int RTSP_NOT_RUNNING = 232;
// 截图不成功
public static final int SNAPSHOT_FAILED = 233;
// 查询录像page参数不正确
public static final int RECORD_PAGE_INVALID = 234;
// 录像不存在
public static final int RECORD_NOT_EXIST = 235;
// 剪切的视频还未准备好
public static final int CLIP_FRAGMENT_NOT_READY = 236;
// 视频剪切服务未启动
public static final int CLIP_SERVICE_NOT_RUNNING = 237;
// 人脸属性名称不合法
public static final int ATTRIBUTE_NAME_INVALID = 240;
// 人脸属性重名
public static final int ATTRIBUTE_NAME_EXISTED = 241;
// 人脸属性数量超过最大限制
public static final int ATTRIBUTE_NUM_EXCEED = 242;
// 指定人脸属性不存在
public static final int ATTRIBUTE_NAME_NOT_EXISTED = 243;
// 拌线左边端点X坐标超出范围
public static final int PARAMS_START_X_INVALID = 260;
// 拌线左边端点Y坐标超出范围
public static final int PARAMS_START_Y_INVALID = 261;
// 拌线右边端点X坐标超出范围
public static final int PARAMS_END_X_INVALID = 262;
// 拌线右边端点Y坐标超出范围
public static final int PARAMS_END_Y_INVALID = 263;
// 分辨率设置超出范围
public static final int PARAMS_RESOLUTION_INVALID = 264;
// 人流统计信息粒度参数超出范围
public static final int PARAMS_PERIOD_INVALID = 265;
// 开始时间设置异常,必须使用UNIX时间戳
public static final int PARAMS_START_TIME_INVALID = 266;
// 结束时间设置异常,必须使用UNIX时间戳
public static final int PARAMS_END_TIME_INVALID = 267;
// 查询参数order设置异常
public static final int PARAMS_ORDER_INVALID = 268;
// 查询参数group name设置异常
public static final int PARAMS_GROUP_NAME_INVALID = 269;
// 查询参数gender设置异常
public static final int PARAMS_GENDER_INVALID = 270;
// 查询参数age设置异常
public static final int PARAMS_AGE_INVALID = 271;
// 查询参数age_range设置异常
public static final int PARAMS_AGE_RANGE_INVALID = 272;
// 查询参数page_num设置异常
public static final int PARAMS_PAGE_NUM_INVALID = 273;
// 查询参数page_size设置异常
public static final int PARAMS_PAGE_SIZE_INVALID = 274;
// 查询参数faceid设置异常
public static final int PARAMS_FACE_ID_INVALID = 275;
// 拌线右边端点X坐标-拌线左边端点X坐标差值小于100,距离不足
public static final int PARAMS_X_DISTANCE_INVALID = 276;
// 传入参数不是合理的json table格式
public static final int PARAMS_JSON_TABLE_INVALID = 277;
// 配置保存失败
public static final int SET_CONFIG_FAIL = 278;
// 配置读取失败
public static final int GET_CONFIG_FAIL = 279;
// 数据库中未发现人脸信息
public static final int FACE_ID_INFO_NO_FOUND = 280;
// 查询参数 用户新增人脸属性 设置异常
public static final int TIMEZONE_INVALID = 281;
// 查询参数 用户新增人脸属性值 数据类型设置异常
public static final int DETECT_PEOPLE_DETECT_INVALID = 282;
// 订阅的消息事件不存在
public static final int SUBSCRIBE_EVENT_NOT_EXIST = 310;
}
描述
进门拌线是IPC设备用来判断某个人是否已经进来的基础,因此对于人脸识别和客流统计,需要通过此接口来设置这个拌线的坐标。
接口
public void setDoorLine(String deviceId, int resolution, int start_x, int start_y, int end_x, int end_y, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
resolution | 只能取值0和1,0表示1080P的分辨率,1表示720P的分辨率 | 0 |
start_x | 拌线的左边端点X坐标,1080p范围0<=x<=1920,720p范围0<=x<=1280 | 500 |
start_y | 拌线的左边端点Y坐标,1080p范围0<=y<=1080,720p范围0<=y<=720 | 500 |
end_x | 拌线的右边端点X坐标,1080p范围0<=x<=1920,720p范围0<=x<=1280 | 500 |
end_y | 拌线的右边端点Y坐标,1080p范围0<=y<=1080,720p范围0<=y<=720 | 500 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、277,278,见错误码的描述 |
描述
获取进门拌线的坐标信息。
接口
public void getDoorLine(String deviceId, RPCCallback‹RPCResponse‹DoorLineBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、260、261、262、263、264、276、277、279,见错误码的描述 |
data | DoorLineBean | 返回码成功才会有此字段,详见RPCResponse.DoorLineBean |
描述
获取指定某一时间内的人流统计信息,如果设备不存在这个时间内的信息则会返回错误。
接口
public void getPeopleStat(String deviceId, long start_time, long end_time, int period, RPCCallback‹RPCResponse‹PeopleStatBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
start_time | Unix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者 2019-07-01 10:30这样的时间对应的时间戳 | 1578969264 |
end_time | Unix格式时间戳,精确至秒,结束时间。时间要求同上 | 1579055640 |
period | 人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别为1,2和3 | 2 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述 |
data | PeopleStatBean | 返回码成功才会有此字段,详见RPCResponse.PeopleStatBean |
描述
获取指定某一时间内的经过人流统计信息,如果设备不存在这个时间内的信息则会返回错误。
接口
public void getPeopleStatPass(String deviceId, HashMap‹String, String› options, RPCCallback‹RPCResponse‹PassFlowBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
start_time | Unix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者 2019-07-01 10:30这样的时间对应的时间戳 | 1578969264 |
end_time | Unix格式时间戳,精确至秒,结束时间。时间要求同上 | 1579055640 |
period | 人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别为1,2和3 | 2 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述 |
data | PassFlowBean | 返回码成功才会有此字段,详见RPCResponse.PassFlowBean |
描述
获取指定某一时间内的人流统计信息,如果设备不存在这个时间内的信息则会返回错误。
接口
public void getPeopleStatOut(String deviceId, HashMap‹String, String› options, RPCCallback‹RPCResponse‹PassFlowBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
start_time | Unix格式时间戳,精确至秒,开始时间,时间是整小时或者整天或者半小时的时间戳,譬如2019-07-01,2019-07-01 10:00,或者 2019-07-01 10:30这样的时间对应的时间戳 | 1578969264 |
end_time | Unix格式时间戳,精确至秒,结束时间。时间要求同上 | 1579055640 |
period | 人流统计信息的粒度,分为30min、hour和day三种统计粒度,取值分别为1,2和3 | 2 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述 |
data | OutFlowBean | 返回码成功才会有此字段,详见RPCResponse.OutFlowBean |
描述
获取指定时间内,来过次数排名前N的人脸ID列表信息。
接口
public void getVisitorList(String deviceId, HashMap‹String, String› options, RPCCallback‹RPCResponse‹VisitorListBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
options | 限定获取来访记录的参数 | 见下options说明 |
callback | 调用结果 |
options说明
参数名称 | 类型 | 描述 | 是否必须 | 示例 |
start_time | long | Unix时间戳 | Y | 1578969264 |
end_time | long | Unix时间戳 | Y | 1579055640 |
order | int | 表示抵达次数排名前order的人脸信息 | Y | 50 |
group_name | string | 指定某个人脸分组,默认为所有人脸分组 | N | vip |
gender | int | 性别,1表示男性,2表示女性,默认不分性别 | N | 1 |
age_range | int | 年龄段,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁, 5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100 | N | 4 |
age | int | 年龄,与上面age_range是或的关系,不是与的关系。即查询age_range或 者age满足的人脸,只要有一个符合即可。 | N | 4 |
item1 | string | 可以根据自定义属性来匹配,自定义属性1的匹配。如果需要使用自定义属 性查询,请确保指定的人脸分组添加过对应的自定义属性,否则查询失败(生 人与熟人分组不能添加自定义属性) | N | value1 |
item2 | string | 自定义属性2的匹配 | N | value2 |
item3 | string | 自定义属性3的匹配 | N | value3 |
item4 | string | 自定义属性4的匹配 | N | value4 |
item5 | string | 自定义属性5的匹配 | N | value5 |
page_num | int | 当前页码,默认值和最小值为1 | N | 1 |
page_size | int | 当前页面条目数,默认为10,范围为[1, 100] | N | 10 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述 |
data | VisitorListBean | 返回码成功才会有此字段,详见RPCResponse.VisitorListBean |
描述
查询指定某个人在指定时间内的到访记录。
接口
public void getFaceVisitDetail(String deviceId, long start_time, long end_time, String faceId, RPCCallback‹RPCResponse‹VisitDetailBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
start_time | Unix时间戳,开始时间 | 1578969264 |
end_time | Unix时间戳,结束时间 | 1579055640 |
faceId | 人脸ID | 000001 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、211、220、265、266、267、277、280,见错误码的描述 |
data | VisitDetailBean | 返回码成功才会有此字段,详见RPCResponse.VisitDetailBean |
描述
通过此接口新建一个人脸分组,并配置其属性。人脸分组当前最多支持10个,系统默认存在两个人脸分组,分别是生人分组和熟人分组,即用户最多还可以创建8个分组。
接口
public void createGroup(String deviceId, String groupName, int capacity, String description, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
name | 分组名称,不长于32个汉字,目前系统默认存在“生人”和 “熟人”两个分组 | 生人 |
capacity | 分组容量,所有分组容量加起来不得超过3W | 10000 |
description | 分组的描述,不超过50个汉字。 | 黑卡的客户 |
callback | 调用结果 |
注:
1. 名称第一个字符不得为空格 ;
2. 默认生人库名为stranger,默认熟人库名为regular 。
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、200、201、202、211、212、220,见错误码的描述 |
描述
通过此接口编辑指定人脸分组的属性。
接口
public void updateGroup(String deviceId, String oldGroupName, String groupName, int capacity, String description, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
oldGroupName | 要编辑的人脸分组名称 | 黑卡客户 |
groupName | 修改后的分组名称,可与旧的一样 | 金卡客户 |
capacity | 修改后的分组容量,可与旧的一样 | 10000 |
description | 分组的描述,不超过50个汉字。 | 办卡升级 |
callback | 调用结果 |
注:
1.修改默认生人分组和熟人分组的属性时候,name必须与old_name一致,即不允许修改默认分组的组名;
2.名称第一个字符不得为空格。
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、200、201、202、204、211、212、220,见错误码的描述 |
描述
系统在激活时会默认创建生人分组和熟人分组两个组,且设备会默认把某个生人来的次数满足一定条件(默认7天内来了5次)的情况下,自动把这个生人移动到熟人分组。
通过此接口可修改生人移动到熟人分组的移动条件。
接口
public void updateMigration(String deviceId, int arrive_times, int period, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
arrive_times | 必选,生人分组才需要的属性,取值范围1~10 | 5 |
period | 必选,生人分组才需要的属性,取值范围1~100,单位为天 | 20 |
callback | 调用结果 |
注:
arrive_times和period是生人分组才需要修改的属性,代表一个生人在一定时间内(period设置,单位为天)来过多少次(arrive_times设置)就移动到熟人分组中去。
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、204、211、220,见错误码的描述 |
描述
删除指定人脸分组。
接口
public void deleteGroup(String deviceId, String groupName, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
groupName | 要删除的分组名称,生人和熟人分组不能被删除,分组中有人脸也不能删除,只能先清空。 | 黑卡客户 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、201、204、205、211、220,见错误码的描述 |
描述
通过此接口获取IPC上所有的人脸分组信息。
接口
public void getGroupList(String deviceId, RPCCallback‹RPCResponse‹GroupBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、211、220,见错误码的描述 |
data | GroupBean | 返回码成功才会有此字段,详见RPCResponse.GroupBean |
描述
库中给每个人脸预置了一些属性,可以通过此接口为指定人脸分组中的人脸增加最多5个属性。
强烈建议在创建新分组后添加人脸前,按需求先调用本接口添加人脸的属性,而不是在添加人脸后中途调用本接口添加人脸ID属性。
接口
public void addFaceInfoItem(String deviceId, String groupName, List‹String› attrs, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
groupName | 人脸分组名称 | vip |
attrs | 类型为数组,属性名称列表,每个属性类型是string,属性长度最大为50字节 | [“hobby”] |
callback | 调用结果 |
注:
1. 默认库不允许添加人脸ID属性;
2. 以下字段作为保留字段,不允许作为新添加的属性名: group_name, pic, age, gender, faceid, age_range, arrive_times, pic_url, total_num, return_num。
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、204、211、220、240、241、242,见错误码的描述 |
描述
对于指定分组中的自定义属性,用户可以在不需要的时候删除,这里建议用户不要轻易删除。
接口
public void removeFaceInfoItem(String deviceId, String groupName, List‹String› attrs, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
groupName | 人脸分组名称 | vip |
attrs | 类型为数组,属性名称列表,每个属性类型是string,属性长度最大为50字节 | [“hobby”] |
callback | 调用结果 |
注:
默认库不允许删除人脸ID属性
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、204、211、220、240、241、242、243,见错误码的描述 |
描述
通过此接口可以查询某个特定人脸分组中用户通过2.4.6指令添加的所有属性列表。
接口
public void getFaceInfoItem(String deviceId, String groupName, RPCCallback‹RPCResponse‹AttributesBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
groupName | 分组名称 | stranger |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、204、211、220,见错误码的描述 |
data | AttributesBean | 返回码成功才会有此字段,详见RPCResponse.AttributesBean |
描述
通过此接口可以向某个特定的人脸分组增加新人脸,并给每个人脸配置相关属性值。一次增加一个人脸。
接口
public void addFaceRecord(String deviceId, HashMap‹String, String› options, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
options | 人脸记录相关属性参数,详见以下options说明 | |
callback | 调用结果 |
options说明
参数名称 | 类型 | 描述 | 是否 必须 | 示例 |
faceid | string | 人脸id,不超过16个英文字符 | Y | Vip11024 |
pic | file | jpg/png格式的人脸图片文件,最大分辨率为1920*1080,大小在1MB以内 | Y | 11024.jpg |
group_name | string | 分组名称 | Y | stranger |
age | int | 预置属性,年龄 | N | 14 |
gender | int | 预置属性,性别,0表示未知,1表示男性,2表示女性 | N | 1 |
item1 | string | 自定义属性1 | N | value1 |
item2 | string | 自定义属性2 | N | value2 |
item3 | string | 自定义属性3 | N | value3 |
item4 | string | 自定义属性4 | N | value4 |
item5 | string | 自定义属性5 | N | value5 |
注:
1.上面的预置属性是IPC数据库中内置的人脸具备的属性,其他的item1/item2/item3/item4/item5是用户自定义属性,若要使用自定义属性,则要调用2.4.6一节的接口来添加自定义属性,如果用户没有先添加人脸属性,直接在这个接口加上对应属性的key-value,IPC设备是不会处理那些属性的;
2.对于age属性,如果不设定,则会由摄像头自动设置此人的年龄段;
3.对于gender,如果不设定,则会由摄像头自动设置此人的性别。
响应参数
字段名称 | 类型 | 描述 | 示例 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、204、206、208、210、211、220,见错误码的描述 |
描述
通过此接口可以删除指定人脸分组中的某些人脸。
接口
public void deleteFaceRecord(String deviceId, String groupName, List‹String› faceidList, RPCCallback‹RPCResponse‹FaceDeleteSubResult›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
groupName | 分组名称 | vip |
faceidList | 人脸I列表 | [“1988″,”2020”] |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、204、211、220,见错误码的描述 |
data | FaceDeleteSubResult | 返回码成功才会有此字段,详见RPCResponse.FaceDeleteSubResult |
描述
更新指定的人脸信息。
接口
public void updateFaceRecord(String deviceId, HashMap‹String, String› options, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
options | 人脸记录相关属性参数,详见以下options说明 | |
callback | 调用结果 |
options说明
参数名称 | 类型 | 描述 | 是否必须 | 示例 |
group_name | string | 人脸分组名称 | Y | stranger |
faceid | string | 人脸ID | Y | 21 |
new_group_name | string | 新人脸分组名称 | N | VIP |
pic | file | jpg/png格式的人脸图片文件,最大分辨率为1920*1080,大小不超过1MB | N | example.jpg |
age | int | 预置属性,年龄 | N | 10 |
gender | int | 性别,可更新为1表示男性、2表示女性 | N | 1 |
item1 | string | 自定义属性1 | N | value1 |
item2 | string | 自定义属性2 | N | value2 |
item3 | string | 自定义属性3 | N | value3 |
item4 | string | 自定义属性4 | N | value4 |
item5 | string | 自定义属性5 | N | value5 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、204、207、208、210、211、220,见错误码的描述 |
注:
上述 hobby、vip_level、weight、phone_num 是用户自定义属性,对应item1/item2/item3/item4,自定义属性可以通过 2.4.6 一节的接口来添加。添加之后方可使用。
描述
通过指定人脸ID获取人脸信息。
接口
public void getFaceRecord(String deviceId, String faceId, RPCCallback‹RPCResponse‹FaceRecordBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
faceId | 人脸ID | 105 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、211,见错误码的描述 |
data | FaceRecordBean | 返回码成功才会有此字段,详见RPCResponse.FaceRecordBean |
注:
上述point、hobby、vip_level、weight、height是用户自定义属性,对应item1/item2/item3/item4/itme5,自定义属性可以通过2.4.6一节的接口来添加。添加之后才有返回这些属性。
描述
获取指定人脸分组的所有人脸信息。
接口
public void getFaceRecordList(String deviceId, String groupName, int pageNum, int pageSize, RPCCallback‹RPCResponse‹FaceRecordListBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
page_num | 当前页码,默认值和最小值为1 | |
page_size | 当前页面条目数,默认为10,范围为[1, 100] | |
options | 详见options说明 | |
callback | 调用结果 |
options说明
参数名称 | 类型 | 描述 | 是否必须 | 示例 |
group_name | string | 人脸分组名称 | Y | VIP |
page_num | int | 当前页码,默认值和最小值为1 | N | 4 |
page_size | int | 当前页面条目数,默认为10,范围为[1, 100] | N | 10 |
返回示例
{ “code”: 0, “data”: { “total_num”: 2, “num”: 2, “faceid_list”: [ { “arrive_time”: 1566215929, “arrive_count”: 2, “faceid”: “3”, “point”: “113”, //自定义属性 “gender”: 2, “vip_level”: “3”, //自定义属性 “hobby”: “tennis”, //自定义属性 “weight”: “60”, //自定义属性 “height”: “180”, //自定义属性 “age”: 10, “age_range”: 2 }, { “arrive_time”: 1566215998 “arrive_count”: 1 “faceid”: “4”, “point”: “113”, //自定义属性 “gender”: 1, “vip_level”: “1”, //自定义属性 “hobby”: “tennis”, //自定义属性 “weight”: “60”, //自定义属性 “height”: “180”, //自定义属性 “age”: 10, “age_range”: 2 } ] } } |
描述
获取指定人脸分组按到达时间排序最旧的N条人脸信息。
接口
public void getFaceByArrival(String deviceId, String groupName, int num, RPCCallback‹RPCResponse‹FaceRecordListBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
groupName | 人脸分组名称 | VIP |
num | 获取人脸数量,默认值和最小值为1,最大值为10 | 2 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、207、211,见错误码的描述 |
data | FaceRecordListBean | 返回码成功才会有此字段,详见RPCResponse.FaceRecordListBean |
返回示例
{ “code”: 0, “data”: { “return_num”: 2, “faceid_list”: [ { “faceid”: “8”, “arrive_time”: 1566215929, “arrive_count”: 7, “age_range”: 5, “gender”: 1, “age”: 0, “item1”:value1, //自定义属性 “item2”:value2, //自定义属性 “item3”:value3, //自定义属性 “item4”:value4, //自定义属性 “item5”:value5 //自定义属性 }, { “faceid”: “10”, “arrive_time”: 1566110525, “arrive_count”: 6, “age_range”: 4, “gender”: 2, “age”: 0, “item1”: value1, //自定义属性 “item2”:value2, //自定义属性 “item3”:value3, //自定义属性 “item4”:value4, //自定义属性 “item5”:value5 //自定义属性 } ] } } |
描述
获取指定IPC直播流地址。
接口
public void getLiveStream(String deviceId, RPCCallback‹RPCResponse‹LiveAddress›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、232,见错误码的描述 |
data | LiveAddressBean | 返回码成功才会有此字段,详见RPCResponse.LiveAddressBean |
描述
获取指定IPC回放流地址。
接口
public void getPlaybackStream(String deviceId, long startTime, long endTime RPCCallback‹RPCResponse‹PlaybackBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
start_time | 回放开始时间,unix格式的时间戳,秒级 | 1578969264 |
end_time | 回放结束时间,unix格式的时间戳,秒级 | 1579055640 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、230、235,见错误码的描述 |
data | PlaybackBean | 返回码成功才会有此字段,详见RPCResponse.PlaybackBean |
描述
获取指定指定时间内的录像片段。
接口
public void getRecordList(String deviceId, HashMap‹String, String› options, RPCCallback‹RPCResponse‹VideoRecordBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
options | 获取的录像范围参数 | 见下表options说明 |
callback | 调用结果 |
options说明
参数名称 | 类型 | 描述 | 是否必须 | 示例 |
start_time | long | 指定开始时间,unix格式的时间戳,秒级 | Y | 1578969264 |
end_time | long | 指定结束时间,unix格式的时间戳,秒级 | Y | 1579055640 |
page_num | int | 当前页码,默认值和最小值为1 | N | 1 |
page_size | int | 当前页面条目数,默认为10,范围为[1, 100] | N | 10 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、231、234、235,见错误码的描述 |
data | VideoRecordBean | 返回码成功才会有此字段,详见RPCResponse.VideoRecordBean |
描述
获取指定IPC当前快照。
接口
public void getSnapshot(String deviceId, RPCCallback‹RPCResponse‹SnapshotBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、233,见错误码的描述 |
data | SnapshotBean | 返回码成功才会有此字段,详见RPCResponse.SnapshotBean |
描述
获取当前时间往前(和/或)往后一点时间的视频片段。
获取视频片段的粒度为4s,用户在调用该接口的时候,设备会在截取当前时间之前的一段视频(以4s为单位)+当前时间点的4s片段+当前时间之后的一段视频片段 (以4s为单位) ,并返回用户视频下载连接。
视频下载连接在调用完成后4~12s生效,生效时间与用户传入的following参数有关。
接口
public void getCurVideos(String deviceId, int preceding, int following, RPCCallback‹RPCResponse‹CurVideoBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
preceding | 当前时间点之前的视频片段长度,只能是0,4,8 | 0 |
following | 当前时间点之后的视频片段长度,只能是0,4,8 | |
callback | 调用结果 | 8 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、236、237,见错误码的描述 |
data | CurVideoBean | 返回码成功才会有此字段,详见RPCResponse.CurVideoBean |
描述
配置IPC连接AP的SSID和密码。
接口
public void setWifiConf(String deviceId, String ssid, String password, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
ssid | 要连接的AP的无线名称,也即SSID,不能超过32个字符 | WeWork |
password | 要连接的AP的密码,如果无加密,填空即可,不支持WEP,不能超过64个字符 | 12345678 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、100、101,见错误码的描述 |
描述
设备激活前无需签名校验配置 IPC 连接 AP 的 SSID 和密码;设备激活后此接口即失效。
接口
public void setWifiConfWithoutAuth(String deviceId, String ssid, String password, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
ssid | 要连接的AP的无线名称,也即SSID,不能超过32个字符 | WeWork |
password | 要连接的AP的密码,如果无加密,填空即可,不支持WEP,不能超过64个字符 | 12345678 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、100、101,见错误码的描述 |
描述
获取当前IPC的无线参数。
接口
public void getWifiConf(String deviceId, RPCCallback‹RPCResponse‹WifiConfBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、100、101,见错误码的描述 |
data | WifiConfBean | 返回码成功才会有此字段,详见RPCResponse.WifiConfBean |
回调示例
后续接口回调实现与此类似,后续不再进行说明。
new RPCCallback‹RPCResponse‹WifiConfBean››() {
@Override
public void onComplete(RPCResponse‹WifiConfBean› result) {
if (result.code() == RPCErrorCode.SUCCESS) {
WifiConfBean wifiConf = result.data();
} else {
shotToast("response.code: " + result.code());
}
}
@Override
public void onAbort(int httpStatus) {
shotToast("http failed, status: " + httpStatus);
}
@Override
public void onException(Throwable t) {
shotToast("Exception: " + t.getMessage());
}
});
描述
获取当前IPC无线扫描到的AP列表。
接口
public void getApList(String deviceId, RPCCallback‹RPCResponse‹IpcApBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、100、101,见错误码的描述 |
data | IpcApBean | 返回码成功才会有此字段,详见RPCResponse.IpcApBean |
描述
获取当前IPC无线扫描到的AP列表,设备激活后此接口失效。
接口
public void getApListWithoutAuth(String deviceId, RPCCallback‹RPCResponse‹IpcApBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、2、3、5、7、100、101,见错误码的描述 |
data | IpcApBean | 返回码成功才会有此字段,详见RPCResponse.IpcApBean |
描述
用户根据实际环境,调节镜头的焦距,使得拍摄的画面放大或者缩小。
接口
public void setZoom(String deviceId, int zoom, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
zoom | 焦距大小,合理范围是[0, 500] | 200 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、110,见错误码的描述 |
描述
调焦后镜头会自动聚焦,如果对自动聚焦效果不满意,可以调用此接口手动进行微调。
接口
public void manualFocus(String deviceId, int focus, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
focus | 聚焦大小,合理范围是[0, 780] | 200 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、111,见错误码的描述 |
描述
设置焦距后,IPC会自动聚焦,可以设置自动聚焦以哪个点(坐标)为中心进行。
接口
public void autoFocus(String deviceId, int focus_x, int focus_y, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
focus_x | 聚焦点在x方向的像素百分比,合理范围是[0, 100] | 50 |
focus_y | 聚焦点在y方向的像素百分比,合理范围是[0, 100] | 50 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、112,见错误码的描述 |
描述
用户可以通过此接口直接复位焦距和聚焦的参数。
接口
public void resetZoomFocus(String deviceId, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7,见错误码的描述 |
描述
获取当前IPC镜头的调焦聚焦参数。
接口
public void getZoomFocusConf(String deviceId, RPCCallback‹RPCResponse‹ZoomFocusBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7,见错误码的描述 |
data | ZoomFocusBean | 返回码成功才会有此字段,详见RPCResponse.ZoomFocusBean |
描述
配置镜头的夜视模式。
接口
public void setIrMode(String deviceId, int irmode, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
irmode | 0表示关闭,1表示开启,2表示自动。一般选2。 | 2 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、113,见错误码的描述 |
描述
获取当前IPC的夜视模式。
接口
public void getIrMode(String deviceId, RPCCallback‹RPCResponse‹IrSettingBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7,见错误码的描述 |
data | IrSettingBean | 返回码成功才会有此字段,详见RPCResponse.IrSettingBean |
描述
IPC的动态侦测支持根据画面变化和声音变化灵敏度来检测和报警,通过本API可以设置相关灵敏度和动态侦测的时间。
接口
public void setDynamicDetect(String deviceId, HashMap‹String, String› options, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
options | 可设置的动态侦测的参数集合 | 见下表option说明 |
callback | 调用结果 |
option说明
参数名称 | 类型 | 描述 | 是否必须 | 示例 |
---|---|---|---|---|
motion_level | int | 范围[0, 3],0表示关闭,数值越大,越灵敏。 | Y | 2 |
audio_level | int | 范围[0, 3],0表示关闭,数值越大,越灵敏。 | Y | 2 |
weekday | int | 以周为一个循环,用0xYY来表示选择哪一天,具体是0x80直接表示7×24小时,其余的, 以7bit来表示哪一天被选上,0x01表示选择周一,0x02表示选择周二,0x40表示选择 周天,0x7f表示选择一个礼拜的7天,与0x80的区别只是0x80直接默认724小时,而 0x7f选了7天后,还可以设置具体的开始时间和结束时间。 | Y | 128(0x80 的十进制) |
start_time | long | 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值, 60表示01:00,121表示02:01,依次类推。范围[0,1440] | Y | 200 |
stop_time | long | 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值, 60表示01:00,121表示02:01,依次类推。范围[0,1440] | Y | 400 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7,见错误码的描述 |
描述
获取当前IPC镜头的动态侦测参数。
接口
public void getDynamicDetect(String deviceId, RPCCallback‹RPCResponse‹DynamicDetectBean›› callback);
参数说明
本接口没有私有参数,公共参数见HTTP接口调用。
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7,见错误码的描述 |
data | DynamicDetectBean | 返回码成功才会有此字段,详见RPCResponse.DynamicDetectBean |
描述
用户可以设置IPC的名称,以便区分不同的IPC设备。
接口
public void updateName(String deviceId, String name, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
name | 36个字符以内,12汉字以内 | 示例名称 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、118,见错误码的描述 |
描述
获取当前IPC的名称。
接口
public void getName(String deviceId, RPCCallback‹RPCResponse‹IPCNameBean›› callback);
参数说明
本接口没有私有参数,公共参数见HTTP接口调用。
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7,见错误码的描述 |
data | IPCNameBean | 返回码成功才会有此字段,详见RPCResponse.IPCNameBean |
描述
设置指示灯是否需要关闭。
接口
public void setLedSwitch(String deviceId, int ledSwitch, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
led_switch | 0表示关闭指示灯,1表示开启指示灯,即可以亮 | 1 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、119, 见错误码的描述 |
描述
获取当前IPC的指示灯状态。
接口
public void getLedSwitch(String deviceId, RPCCallback‹RPCResponse‹LedSettingBean›› callback);
参数说明
本接口没有私有参数,公共参数见HTTP接口调用。
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7, 见错误码的描述 |
data | LedSettingBean | 返回码成功才会有此字段,详见RPCResponse.LedSettingBean |
描述
设置拍摄的画面是否需要旋转一定角度,可用的旋转角度可通过获取支持的画面旋转角度获取到。
接口
public void setRotation(String deviceId, int rotation, RPCCallback‹RPCResponse› callback);
参数说明
这里只列出接口的私有参数,公共参数见HTTP接口调用。
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
rotation | 画面旋转角度 对于FM010,支持的参数有0,90,180,270; 对于FM020,支持的参数有0,180 | 180 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、120, 见错误码的描述 |
描述
获取当前IPC当前的画面旋转角度。
接口
public void getRotation(String deviceId, RPCCallback‹RPCResponse‹RotationBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7, 见错误码的描述 |
data | RotationBean | 返回码成功才会有此字段,详见RPCResponse.RotationBean 对于FM010,支持的参数有0,90,180,270; 对于FM020,支持的参数有0,180 |
描述
获取当前IPC设备支持的画面旋转角度。
接口
public void getSupportRotationAngles(String deviceId, RPCCallback‹RPCResponse‹SupportRotationsBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7, 见错误码的描述 |
data | SupportRotationsBean | 返回码成功才会有此字段,详见RPCResponse.SupportRotationsBean 对于FM010,支持的参数有0,90,180,270; 对于FM020,支持的参数有0,180 |
描述
格式化插入IPC里面的存储卡。
接口
public void formatMemoryCard(String deviceId, RPCCallback‹RPCResponse› callback);
参数说明
本接口没有私有参数,公共参数见HTTP接口调用。
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
参数名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7、220、221, 见错误码的描述 |
描述
获取IPC上存储卡状态
接口
public void getMemoryCardStatus(String deviceId, RPCCallback‹RPCResponse‹ExternalStorageBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
类型 | 描述 |
int | 返回码,表示操作的结果; 本接口返回码有:0、1、3、5、7, 见错误码的描述 |
ExternalStorageBean | 返回码成功才会有此字段,详见RPCResponse.ExternalStorageBean |
描述
使用设备前调用此接口激活设备,使用前确保设备是联网的。
激活设备后会在SD卡中新建两个默认的人脸分组,名称分别为stranger和regular,如果在SD卡中有人脸分组的条件下激活,则会先删除所有的人脸分组,然后再新建默认库。
接口
public void activate(String deviceId, RPCCallback‹RPCResponse› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 激活结果 |
响应参数
响应参数指的是回调函数返回的RPCResponse,后续不再说明。
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有 0、1、2、3、4、8、9、10、11,见错误码章节的描述 |
示例代码
IPCameraManager.getInstance(context).init(APP_ID, SECRET_KEY, LICENSE);
DeviceManage.getInstance(context).activate(ipcList.get(postion).getDeviceid(), new RPCCallback‹RPCResponse›() {
@Override
public void onComplete(RPCResponse result) {
Log.i(TAG, "return code= " + result.code());
if (result.code() == RPCErrorCode.SUCCESS || result.code() == RPCErrorCode.DEVICE_ACTIVATED) {
Log.i(TAG, "ipc activate success");
}else if(result.code() == RPCErrorCode.DEVICE_ACTIVATED) {
Log.i(TAG, "ipc has been activated");
} else {
Log.i(TAG, "ipc activate failed, code:" + result.code());
}
}
@Override
public void onError(Throwable t) {
Log.i(TAG, t.getMessage());
}
});
返回示例
{
"code":0
}
描述
使用此接口可以获取设备的基本信息。
接口
public void getInfo(String deviceId, RPCCallback‹RPCResponse‹IpcInfoBean›› callback);
参数说明
参数名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有 0、1、2、3、4、8、9、10、11,见错误码章节的描述 |
data | IpcInfoBean | 返回码成功才会有此字段,详见RPCResponse.IpcInfoBean |
示例代码
IPCameraManager.getInstance(context).init(APP_ID, SECRET_KEY, LICENSE);
DeviceManage.getInstance(context).getInfo(ipcList.get(postion).getDeviceid(), new RPCCallback‹RPCResponse‹IpcInfoBean››() {
@Override
public void onComplete(RPCResponse‹IpcInfoBean› result) {
if (result.code() == RPCErrorCode.SUCCESS) {
IpcInfoBean info = result.data();
Log.i(TAG, "getInfo success, ip: " + info.ip);
} else {
Log.i(TAG, "getInfo failed, code:" + result.code());
}
}
@Override
public void onError(Throwable t) {
Log.i(TAG, t.getMessage());
}
});
返回示例
{
"code": 0,
"data": {
"sn": "SS101D8BS00083",
"model_name": "FM020",
"name": "My FS",
"software_version": "1.1.0",
"hardware_version": "1.0.0",
"ip": "192.168.0.1",
"mac": "04:12:24:E3:45:12 ",
}
}
注:参考以上实现,后续接口不再说明。
描述
使用此接口可以使得设备恢复出厂设置。
接口
public void reset(String deviceId, RPCCallback‹RPCResponse› callback);
参数说明
字段名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有 0、1、2、3、5、7,见错误码章节的描述 |
描述
使用此接口可以重启设备。
接口
public void reboot(String deviceId, RPCCallback‹RPCResponse› callback);
参数说明
字段名称 | 描述 | 示例 |
deviceId | IPC序列号 | C201D98T00094 |
callback | 调用结果 |
响应参数
字段名称 | 类型 | 描述 |
code | int | 返回码,表示操作的结果; 本接口返回码有 0、1、2、3、5、7,见错误码章节的描述 |