|
|
@@ -0,0 +1,894 @@
|
|
|
+package com.usoftchina.ss.dahua.lib;
|
|
|
+
|
|
|
+import com.sun.jna.*;
|
|
|
+import com.sun.jna.ptr.IntByReference;
|
|
|
+import com.sun.jna.win32.StdCallLibrary.StdCallCallback;
|
|
|
+
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author yingp
|
|
|
+ * @date 2019/2/14
|
|
|
+ */
|
|
|
+public interface NetSdkLib extends Library {
|
|
|
+
|
|
|
+ /*******************常量*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设备序列号字符长度
|
|
|
+ */
|
|
|
+ int NET_SERIALNO_LEN = 48;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通用名字字符串长度
|
|
|
+ */
|
|
|
+ int DH_MAX_NAME_LEN = 16;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人员id最大长度
|
|
|
+ */
|
|
|
+ int DH_MAX_PERSON_ID_LEN = 32;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 每个人员对应的最大人脸图片数
|
|
|
+ */
|
|
|
+ int DH_MAX_PERSON_IMAGE_NUM = 48;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 省份名称最大长度
|
|
|
+ */
|
|
|
+ int DH_MAX_PROVINCE_NAME_LEN = 64;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 城市名称最大长度
|
|
|
+ */
|
|
|
+ int DH_MAX_CITY_NAME_LEN = 64;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人员名字最大长度
|
|
|
+ */
|
|
|
+ int DH_MAX_PERSON_NAME_LEN = 64;
|
|
|
+
|
|
|
+ int MAX_PATH = 260;
|
|
|
+
|
|
|
+ int MAX_FIND_COUNT = 20;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 最大人脸区域个数
|
|
|
+ */
|
|
|
+ int MAX_FACE_AREA_NUM = 8;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 最大人脸数据库个数
|
|
|
+ */
|
|
|
+ int MAX_FACE_DB_NUM = 8;
|
|
|
+
|
|
|
+ /*******************SDK初始化*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化SDK, 在调用SDK另外函数之前调用
|
|
|
+ *
|
|
|
+ * @param cbDisConnect 断线回调函数,通知用户当前断开网络的设备,如果调用SDK的ClIENT_Logout函数主动断开的设备不作断线回调,设置为NULL时不回调
|
|
|
+ * @param dwUser 用户数据
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_Init(StdCallCallback cbDisConnect, NativeLong dwUser);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 清空SDK, 释放占用的资源,在所有的SDK函数之后调用
|
|
|
+ */
|
|
|
+ void CLIENT_Cleanup();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取SDK的版本号
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ int CLIENT_GetSDKVersion();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取函数执行的错误码
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ * @see ErrorCode
|
|
|
+ */
|
|
|
+ int CLIENT_GetLastError();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置断线重连回调函数,在设备断线时自动重连设备
|
|
|
+ *
|
|
|
+ * @param cbAutoConnect 断线重连成功的回调函数,通知用户当前断线重连成功的设备
|
|
|
+ * @param dwUser 用户自定义数据,在回调中可以使用
|
|
|
+ */
|
|
|
+ void CLIENT_SetAutoReconnect(StdCallCallback cbAutoConnect, NativeLong dwUser);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置连接设备等待时间
|
|
|
+ *
|
|
|
+ * @param nWaitTime 连接设备等待时间(单位毫秒)
|
|
|
+ * @param nTryTimes 连接次数
|
|
|
+ */
|
|
|
+ void CLIENT_SetConnectTime(int nWaitTime, int nTryTimes);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置网络参数
|
|
|
+ *
|
|
|
+ * @param pNetParam
|
|
|
+ */
|
|
|
+ void CLIENT_SetNetworkParam(NET_PARAM pNetParam);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 登陆网络环境设置
|
|
|
+ */
|
|
|
+ class NET_PARAM extends Structure {
|
|
|
+ /**
|
|
|
+ * 保留字段
|
|
|
+ */
|
|
|
+ public byte[] bReserved = new byte[4];
|
|
|
+ /**
|
|
|
+ * 网络类型,0-LAN, 1-WAN
|
|
|
+ */
|
|
|
+ public byte byNetType;
|
|
|
+ /**
|
|
|
+ * 回放数据接收缓冲大小(M为单位),为0默认为4M
|
|
|
+ */
|
|
|
+ public byte byPlaybackBufSize;
|
|
|
+ /**
|
|
|
+ * 保留字段
|
|
|
+ */
|
|
|
+ public byte[] byReserved1 = new byte[2];
|
|
|
+ /**
|
|
|
+ * 每个连接接收数据缓冲大小(字节为单位),为0默认250*1024
|
|
|
+ */
|
|
|
+ public int nConnectBufSize;
|
|
|
+ /**
|
|
|
+ * 连接超时时间(毫秒为单位),为0默认1500ms
|
|
|
+ */
|
|
|
+ public int nConnectTime;
|
|
|
+ /**
|
|
|
+ * 连接尝试次数,为0默认1次
|
|
|
+ */
|
|
|
+ public int nConnectTryNum;
|
|
|
+ /**
|
|
|
+ * 获取子连接信息超时时间(毫秒为单位),为0默认1000ms
|
|
|
+ */
|
|
|
+ public int nGetConnInfoTime;
|
|
|
+ /**
|
|
|
+ * 获取设备信息超时时间,为0默认1000ms
|
|
|
+ */
|
|
|
+ public int nGetDevInfoTime;
|
|
|
+ /**
|
|
|
+ * 实时图片接收缓冲大小(字节为单位),为0默认为2*1024*1024
|
|
|
+ */
|
|
|
+ public int nPicBufSize;
|
|
|
+ /**
|
|
|
+ * 按时间查询录像文件的超时时间(毫秒为单位),为0默认为3000ms
|
|
|
+ */
|
|
|
+ public int nSearchRecordTime;
|
|
|
+ /**
|
|
|
+ * 等待超时时间(毫秒为单位),为0默认5000ms
|
|
|
+ */
|
|
|
+ public int nWaittime;
|
|
|
+ /**
|
|
|
+ * 子连接之间的等待时间(毫秒为单位),为0默认10ms
|
|
|
+ */
|
|
|
+ public int nsubConnectSpaceTime;
|
|
|
+ /**
|
|
|
+ * 检测子链接断线等待时间(毫秒为单位),为0默认为60000ms
|
|
|
+ */
|
|
|
+ public int nsubDisconnetTime;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected List<String> getFieldOrder() {
|
|
|
+ return Collections.unmodifiableList(
|
|
|
+ Arrays.asList("bReserved", "byNetType", "byPlaybackBufSize", "byReserved1", "nConnectBufSize",
|
|
|
+ "nConnectTime", "nConnectTryNum", "nGetConnInfoTime", "nGetDevInfoTime", "nPicBufSize",
|
|
|
+ "nSearchRecordTime", "nWaittime", "nsubConnectSpaceTime", "nsubDisconnetTime"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*******************登录设备*******************/
|
|
|
+ /**
|
|
|
+ * 登录设备
|
|
|
+ *
|
|
|
+ * @param pchDVRIP 设备IP
|
|
|
+ * @param wDVRPort 设备端口
|
|
|
+ * @param pchUserName 用户名
|
|
|
+ * @param pchPassword 用户密码
|
|
|
+ * @param emSpecCap 设备支持的能力,值为2表示主动侦听模式下的用户登陆(车载dvr登录)
|
|
|
+ * @param pCapParam 对emSpecCap 的补充参数,emSpecCap = 2时,pCapParam填充设备序列号字串(车载dvr登录)
|
|
|
+ * @param lpDeviceInfo 设备信息,属于输出参数,填NULL效果类似emSpecCap=10
|
|
|
+ * @param error (当函数返回成功时,该参数的值无意义),返回登录错误码
|
|
|
+ * @return
|
|
|
+ * @see LoginSpecCapType
|
|
|
+ */
|
|
|
+ NativeLong CLIENT_LoginEx2(String pchDVRIP, int wDVRPort, String pchUserName, String pchPassword, int emSpecCap,
|
|
|
+ Pointer pCapParam, NET_DEVICEINFO_Ex lpDeviceInfo, IntByReference error);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 登出设备
|
|
|
+ *
|
|
|
+ * @param lLoginID CLIENT_LoginEx2的返回值
|
|
|
+ * @return 成功返回TRUE,失败返回FALSE
|
|
|
+ */
|
|
|
+ boolean CLIENT_Logout(NativeLong lLoginID);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设备信息
|
|
|
+ */
|
|
|
+ class NET_DEVICEINFO_Ex extends Structure {
|
|
|
+ /**
|
|
|
+ * 保留
|
|
|
+ */
|
|
|
+ public byte[] Reserved = new byte[24];
|
|
|
+ /**
|
|
|
+ * 保留字节
|
|
|
+ */
|
|
|
+ public byte[] bReserved = new byte[2];
|
|
|
+ /**
|
|
|
+ * 当登陆失败原因为密码错误时,通过此参数通知用户,剩余登陆次数,为0时表示此参数无效
|
|
|
+ */
|
|
|
+ public byte byLeftLogTimes;
|
|
|
+ /**
|
|
|
+ * 在线超时时间,为0表示不限制登陆,非0表示限制的分钟数
|
|
|
+ */
|
|
|
+ public byte byLimitLoginTime;
|
|
|
+ /**
|
|
|
+ * DVR报警输入个数
|
|
|
+ */
|
|
|
+ public int nAlarmInPortNum;
|
|
|
+ /**
|
|
|
+ * DVR报警输出个数
|
|
|
+ */
|
|
|
+ public int nAlarmOutPortNum;
|
|
|
+ /**
|
|
|
+ * DVR通道个数
|
|
|
+ */
|
|
|
+ public int nChanNum;
|
|
|
+ /**
|
|
|
+ * DVR类型
|
|
|
+ *
|
|
|
+ * @see DeviceType
|
|
|
+ */
|
|
|
+ public int nDVRType;
|
|
|
+ /**
|
|
|
+ * DVR硬盘个数
|
|
|
+ */
|
|
|
+ public int nDiskNum;
|
|
|
+ /**
|
|
|
+ * 当登陆失败,用户解锁剩余时间(秒数), -1表示设备未设置该参数
|
|
|
+ */
|
|
|
+ public int nLockLeftTime;
|
|
|
+ /**
|
|
|
+ * 序列号
|
|
|
+ */
|
|
|
+ public byte[] sSerialNumber = new byte[NET_SERIALNO_LEN];
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected List<String> getFieldOrder() {
|
|
|
+ return Collections.unmodifiableList(
|
|
|
+ Arrays.asList("Reserved", "bReserved", "byLeftLogTimes", "byLimitLoginTime", "nAlarmInPortNum",
|
|
|
+ "nAlarmOutPortNum", "nChanNum", "nDVRType", "nDiskNum", "nLockLeftTime", "sSerialNumber"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*******************查询设备状态*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取前端设备的当前工作状态
|
|
|
+ *
|
|
|
+ * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
+ * @param nType 查询信息类型
|
|
|
+ * @param pBuf 输出参数,用于接收查询返回的数据的缓存。根据查询类型的不同,返回数据的数据结构也不同
|
|
|
+ * @param nBufLen 缓存长度,单位字节
|
|
|
+ * @param pRetLen 输出参数,实际返回的数据长度,单位字节
|
|
|
+ * @param waittime 查询状态等待时间,默认1000ms
|
|
|
+ * @return 成功返回TRUE,失败返回FALSE
|
|
|
+ * @see DeviceStateType
|
|
|
+ */
|
|
|
+ boolean CLIENT_QueryDevState(NativeLong lLoginID, int nType, Pointer pBuf, int nBufLen, IntByReference pRetLen,
|
|
|
+ int waittime);
|
|
|
+
|
|
|
+ /*******************查询远程设备状态*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取前端设备的当前工作状态
|
|
|
+ *
|
|
|
+ * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
+ * @param nType 查询信息类型
|
|
|
+ * @param nChannelID 通道号,对于单通道设备,填写为0,多通道设备填写为具体通道值,0 - n
|
|
|
+ * @param pBuf 输出参数,用于接收查询返回的数据的缓存。根据查询类型的不同,返回数据的数据结构也不同
|
|
|
+ * @param nBufLen 缓存长度,单位字节
|
|
|
+ * @param pRetLen 输出参数,实际返回的数据长度,单位字节
|
|
|
+ * @param waittime 查询状态等待时间,默认1000ms
|
|
|
+ * @return 成功返回TRUE,失败返回FALSE
|
|
|
+ * @see DeviceStateType
|
|
|
+ */
|
|
|
+ boolean CLIENT_QueryRemotDevState(NativeLong lLoginID, int nType, int nChannelID, Pointer pBuf, int nBufLen,
|
|
|
+ IntByReference pRetLen, int waittime);
|
|
|
+
|
|
|
+ /*******************人脸识别*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸识别数据库信息操作(包括添加和删除)
|
|
|
+ *
|
|
|
+ * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
+ * @param pstInParam
|
|
|
+ * @param pstOutParam
|
|
|
+ * @param nWaitTime 等待时间,默认1000ms
|
|
|
+ * @return 失败返回FALSE,成功返回TRUE
|
|
|
+ * @see NET_IN_OPERATE_FACERECONGNITIONDB
|
|
|
+ */
|
|
|
+ boolean CLIENT_OperateFaceRecognitionDB(NativeLong lLoginID, NET_IN_OPERATE_FACERECONGNITIONDB pstInParam,
|
|
|
+ NET_OUT_OPERATE_FACERECONGNITIONDB pstOutParam, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查找人脸识别结果
|
|
|
+ *
|
|
|
+ * @param pstInParam 输入参数 NET_IN_DOFIND_FACERECONGNITION
|
|
|
+ * @param pstOutParam 输出参数 NET_OUT_DOFIND_FACERECONGNITION
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return 失败返回FALSE,成功返回TRUE
|
|
|
+ */
|
|
|
+ boolean CLIENT_DoFindFaceRecognition(final NET_IN_DOFIND_FACERECONGNITION pstInParam,
|
|
|
+ NET_OUT_DOFIND_FACERECONGNITION pstOutParam, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 按条件查询人脸识别结果
|
|
|
+ *
|
|
|
+ * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
+ * @param pstInParam 输入参数 NET_IN_STARTFIND_FACERECONGNITION
|
|
|
+ * @param pstOutParam 输出参数 NET_OUT_STARTFIND_FACERECONGNITION
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return 失败返回FALSE,成功返回TRUE
|
|
|
+ */
|
|
|
+ boolean CLIENT_StartFindFaceRecognition(NativeLong lLoginID, NET_IN_STARTFIND_FACERECONGNITION pstInParam,
|
|
|
+ NET_OUT_STARTFIND_FACERECONGNITION pstOutParam, int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结束人脸识别查询
|
|
|
+ *
|
|
|
+ * @param lFindHandle CLIENT_StartFindFaceRecognition的输出参数中获取
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ boolean CLIENT_StopFindFaceRecognition(NativeLong lFindHandle);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检测人脸(输入一张大图,输出大图中被检测出来的人脸图片)
|
|
|
+ *
|
|
|
+ * @param lLoginID CLIENT_Login或者CLIENT_LoginEx的返回值
|
|
|
+ * @param pstInParam 输入参数 NET_IN_DETECT_FACE
|
|
|
+ * @param pstOutParam 输出参数 NET_OUT_DETECT_FACE
|
|
|
+ * @param nWaitTime 等待时间
|
|
|
+ * @return 失败返回FALSE,成功返回TRUE
|
|
|
+ */
|
|
|
+ boolean CLIENT_DetectFace(NativeLong lLoginID, NET_IN_DETECT_FACE pstInParam, NET_OUT_DETECT_FACE pstOutParam,
|
|
|
+ int nWaitTime);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_OperateFaceRecognitionDB接口输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_OPERATE_FACERECONGNITIONDB extends Structure {
|
|
|
+ /**
|
|
|
+ * 赋值为结构体大小,即sizeof(NET_IN_OPERATE_FACERECONGNITIONDB)
|
|
|
+ */
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 操作类型
|
|
|
+ * <p>EM_OPERATE_FACERECONGNITIONDB_TYPE</p>
|
|
|
+ */
|
|
|
+ public int emOperateType;
|
|
|
+ /**
|
|
|
+ * 人员信息
|
|
|
+ */
|
|
|
+ public FACERECOGNITION_PERSON_INFO stPersonInfo;
|
|
|
+ /**
|
|
|
+ * 缓冲地址
|
|
|
+ */
|
|
|
+ public Pointer pBuffer;
|
|
|
+ /**
|
|
|
+ * 缓冲数据长度
|
|
|
+ */
|
|
|
+ public int nBufferLen;
|
|
|
+
|
|
|
+ public NET_IN_OPERATE_FACERECONGNITIONDB() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人员信息
|
|
|
+ */
|
|
|
+ class FACERECOGNITION_PERSON_INFO extends Structure {
|
|
|
+ /**
|
|
|
+ * 姓名
|
|
|
+ *
|
|
|
+ * @deprecated
|
|
|
+ */
|
|
|
+ public byte[] szPersonName = new byte[DH_MAX_NAME_LEN];
|
|
|
+ /**
|
|
|
+ * 出生年,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ */
|
|
|
+ public short wYear;
|
|
|
+ /**
|
|
|
+ * 出生月,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ */
|
|
|
+ public byte byMonth;
|
|
|
+ /**
|
|
|
+ * 出生日,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ */
|
|
|
+ public byte byDay;
|
|
|
+ /**
|
|
|
+ * 人员唯一标示(身份证号码,工号,或其他编号)
|
|
|
+ */
|
|
|
+ public byte[] szID = new byte[DH_MAX_PERSON_ID_LEN];
|
|
|
+ /**
|
|
|
+ * 人员重要等级,1~10,数值越高越重要,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ */
|
|
|
+ public byte bImportantRank;
|
|
|
+ /**
|
|
|
+ * 性别,1-男,2-女,作为查询条件时,此参数填0,则表示此参数无效
|
|
|
+ */
|
|
|
+ public byte bySex;
|
|
|
+ /**
|
|
|
+ * 图片张数
|
|
|
+ */
|
|
|
+ public short wFacePicNum;
|
|
|
+ /**
|
|
|
+ * 当前人员对应的图片信息
|
|
|
+ */
|
|
|
+ public DH_PIC_INFO[] szFacePicInfo = (DH_PIC_INFO[]) new DH_PIC_INFO().toArray(DH_MAX_PERSON_IMAGE_NUM);
|
|
|
+ /**
|
|
|
+ * 人员类型
|
|
|
+ *
|
|
|
+ * @see PersonType
|
|
|
+ */
|
|
|
+ public byte byType;
|
|
|
+ /**
|
|
|
+ * 证件类型
|
|
|
+ *
|
|
|
+ * @see CertificateType
|
|
|
+ */
|
|
|
+ public byte byIDType;
|
|
|
+ /**
|
|
|
+ * 字节对齐
|
|
|
+ */
|
|
|
+ public byte[] bReserved1 = new byte[2];
|
|
|
+ /**
|
|
|
+ * 省份
|
|
|
+ */
|
|
|
+ public byte[] szProvince = new byte[DH_MAX_PROVINCE_NAME_LEN];
|
|
|
+ /**
|
|
|
+ * 城市
|
|
|
+ */
|
|
|
+ public byte[] szCity = new byte[DH_MAX_CITY_NAME_LEN];
|
|
|
+ /**
|
|
|
+ * 姓名(因存在姓名过长,16字节无法存放问题,故增加此参数)
|
|
|
+ */
|
|
|
+ public byte[] szPersonNameEx = new byte[DH_MAX_PERSON_NAME_LEN];
|
|
|
+ /**
|
|
|
+ * 保留字段
|
|
|
+ */
|
|
|
+ public byte[] bReserved = new byte[60];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 图片文件信息
|
|
|
+ */
|
|
|
+ class DH_PIC_INFO extends Structure {
|
|
|
+ /**
|
|
|
+ * 文件在二进制数据块中的偏移位置, 单位:字节
|
|
|
+ */
|
|
|
+ public int dwOffSet;
|
|
|
+ /**
|
|
|
+ * 文件大小, 单位:字节
|
|
|
+ */
|
|
|
+ public int dwFileLenth;
|
|
|
+ /**
|
|
|
+ * 图片宽度, 单位:像素
|
|
|
+ */
|
|
|
+ public short wWidth;
|
|
|
+ /**
|
|
|
+ * 图片高度, 单位:像素
|
|
|
+ */
|
|
|
+ public short wHeight;
|
|
|
+ /**
|
|
|
+ * 保留字节
|
|
|
+ */
|
|
|
+ public byte[] bReserved = new byte[7];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_OperateFaceRecognitionDB接口输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_OPERATE_FACERECONGNITIONDB extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+
|
|
|
+ public NET_OUT_OPERATE_FACERECONGNITIONDB() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DoFindFaceRecognition 接口输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_DOFIND_FACERECONGNITION extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 查询句柄
|
|
|
+ */
|
|
|
+ public LLong lFindHandle;
|
|
|
+ /**
|
|
|
+ * 查询起始序号
|
|
|
+ */
|
|
|
+ public int nBeginNum;
|
|
|
+ /**
|
|
|
+ * 当前想查询的记录条数
|
|
|
+ */
|
|
|
+ public int nCount;
|
|
|
+
|
|
|
+ public NET_IN_DOFIND_FACERECONGNITION() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DoFindFaceRecognition接口输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_DOFIND_FACERECONGNITION extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 实际返回的候选信息结构体个数
|
|
|
+ */
|
|
|
+ public int nCadidateNum;
|
|
|
+ /**
|
|
|
+ * 候选信息数组
|
|
|
+ */
|
|
|
+ public CANDIDATE_INFO[] stCadidateInfo = (CANDIDATE_INFO[]) new CANDIDATE_INFO().toArray(MAX_FIND_COUNT);
|
|
|
+ /**
|
|
|
+ * 缓冲地址
|
|
|
+ */
|
|
|
+ public Pointer pBuffer;
|
|
|
+ /**
|
|
|
+ * 缓冲数据长度
|
|
|
+ */
|
|
|
+ public int nBufferLen;
|
|
|
+
|
|
|
+ public NET_OUT_DOFIND_FACERECONGNITION() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 候选人员信息
|
|
|
+ */
|
|
|
+ class CANDIDATE_INFO extends Structure {
|
|
|
+ /**
|
|
|
+ * 人员信息
|
|
|
+ */
|
|
|
+ public FACERECOGNITION_PERSON_INFO stPersonInfo;
|
|
|
+ /**
|
|
|
+ * 和查询图片的相似度,百分比表示,1~100
|
|
|
+ */
|
|
|
+ public byte bySimilarity;
|
|
|
+ /**
|
|
|
+ * 人员所属数据库范围
|
|
|
+ *
|
|
|
+ * @see FaceDbType
|
|
|
+ */
|
|
|
+ public byte byRange;
|
|
|
+ public byte[] byReserved1 = new byte[2];
|
|
|
+ /**
|
|
|
+ * 当byRange为历史数据库时有效,表示查询人员出现的时间
|
|
|
+ */
|
|
|
+ public NET_TIME stTime;
|
|
|
+ /**
|
|
|
+ * 当byRange为历史数据库时有效,表示查询人员出现的地点
|
|
|
+ */
|
|
|
+ public byte[] szAddress = new byte[MAX_PATH];
|
|
|
+ /**
|
|
|
+ * 保留字节
|
|
|
+ */
|
|
|
+ public byte[] byReserved = new byte[128];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 时间
|
|
|
+ */
|
|
|
+ class NET_TIME extends Structure {
|
|
|
+ /**
|
|
|
+ * 年
|
|
|
+ */
|
|
|
+ public int dwYear;
|
|
|
+ /**
|
|
|
+ * 月
|
|
|
+ */
|
|
|
+ public int dwMonth;
|
|
|
+ /**
|
|
|
+ * 日
|
|
|
+ */
|
|
|
+ public int dwDay;
|
|
|
+ /**
|
|
|
+ * 时
|
|
|
+ */
|
|
|
+ public int dwHour;
|
|
|
+ /**
|
|
|
+ * 分
|
|
|
+ */
|
|
|
+ public int dwMinute;
|
|
|
+ /**
|
|
|
+ * 秒
|
|
|
+ */
|
|
|
+ public int dwSecond;
|
|
|
+
|
|
|
+ public NET_TIME() {
|
|
|
+ this.dwYear = 0;
|
|
|
+ this.dwMonth = 0;
|
|
|
+ this.dwDay = 0;
|
|
|
+ this.dwHour = 0;
|
|
|
+ this.dwMinute = 0;
|
|
|
+ this.dwSecond = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTime(int year, int month, int day, int hour, int minute, int second) {
|
|
|
+ this.dwYear = year;
|
|
|
+ this.dwMonth = month;
|
|
|
+ this.dwDay = day;
|
|
|
+ this.dwHour = hour;
|
|
|
+ this.dwMinute = minute;
|
|
|
+ this.dwSecond = second;
|
|
|
+ }
|
|
|
+
|
|
|
+ public NET_TIME(NET_TIME other) {
|
|
|
+ this.dwYear = other.dwYear;
|
|
|
+ this.dwMonth = other.dwMonth;
|
|
|
+ this.dwDay = other.dwDay;
|
|
|
+ this.dwHour = other.dwHour;
|
|
|
+ this.dwMinute = other.dwMinute;
|
|
|
+ this.dwSecond = other.dwSecond;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String toStringTime() {
|
|
|
+ return String.format("%02d/%02d/%02d %02d:%02d:%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return String.format("%02d%02d%02d%02d%02d%02d", dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_StartFindFaceRecognition接口输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_STARTFIND_FACERECONGNITION extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 人员信息查询条件是否有效,取值0或1
|
|
|
+ */
|
|
|
+ public int bPersonEnable;
|
|
|
+ /**
|
|
|
+ * 人员信息查询条件
|
|
|
+ */
|
|
|
+ public FACERECOGNITION_PERSON_INFO stPerson;
|
|
|
+ /**
|
|
|
+ * 人脸匹配选项
|
|
|
+ */
|
|
|
+ public NET_FACE_MATCH_OPTIONS stMatchOptions;
|
|
|
+ /**
|
|
|
+ * 查询过滤条件
|
|
|
+ */
|
|
|
+ public NET_FACE_FILTER_CONDTION stFilterInfo;
|
|
|
+ /**
|
|
|
+ * 缓冲地址
|
|
|
+ */
|
|
|
+ public Pointer pBuffer;
|
|
|
+ /**
|
|
|
+ * 缓冲数据长度
|
|
|
+ */
|
|
|
+ public int nBufferLen;
|
|
|
+
|
|
|
+ public NET_IN_STARTFIND_FACERECONGNITION() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸匹配选项
|
|
|
+ */
|
|
|
+ class NET_FACE_MATCH_OPTIONS extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 人员重要等级 1~10,数值越高越重要,(查询重要等级大于等于此等级的人员)
|
|
|
+ */
|
|
|
+ public int nMatchImportant;
|
|
|
+ /**
|
|
|
+ * 人脸比对模式
|
|
|
+ *
|
|
|
+ * @see FaceCompareMode
|
|
|
+ */
|
|
|
+ public int emMode;
|
|
|
+ /**
|
|
|
+ * 人脸区域个数
|
|
|
+ */
|
|
|
+ public int nAreaNum;
|
|
|
+ /**
|
|
|
+ * 人脸区域组合, emMode为NET_FACE_COMPARE_MODE_AREA时有效, 数组元素取FaceArea中的值
|
|
|
+ *
|
|
|
+ * @see FaceAreaType
|
|
|
+ */
|
|
|
+ public int[] szAreas = new int[MAX_FACE_AREA_NUM];
|
|
|
+ /**
|
|
|
+ * 识别精度(取值1~10,随着值增大,检测精度提高,检测速度下降。最小值为1 表示检测速度优先,最大值为10表示检测精度优先。 暂时只对人脸检测有效)
|
|
|
+ */
|
|
|
+ public int nAccuracy;
|
|
|
+ /**
|
|
|
+ * 相似度(必须大于该相识度才报告;百分比表示,1~100)
|
|
|
+ */
|
|
|
+ public int nSimilarity;
|
|
|
+ /**
|
|
|
+ * 报告的最大候选个数(根据相似度进行排序,取相似度最大的候选人数报告)
|
|
|
+ */
|
|
|
+ public int nMaxCandidate;
|
|
|
+
|
|
|
+ public NET_FACE_MATCH_OPTIONS() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询过滤条件
|
|
|
+ */
|
|
|
+ class NET_FACE_FILTER_CONDTION extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 开始时间
|
|
|
+ */
|
|
|
+ public NET_TIME stStartTime;
|
|
|
+ /**
|
|
|
+ * 结束时间
|
|
|
+ */
|
|
|
+ public NET_TIME stEndTime;
|
|
|
+ /**
|
|
|
+ * 地点,支持模糊匹配
|
|
|
+ */
|
|
|
+ public byte[] szMachineAddress = new byte[MAX_PATH];
|
|
|
+ /**
|
|
|
+ * 实际数据库个数
|
|
|
+ */
|
|
|
+ public int nRangeNum;
|
|
|
+ /**
|
|
|
+ * 待查询数据库类型
|
|
|
+ *
|
|
|
+ * @see FaceDbType
|
|
|
+ */
|
|
|
+ public byte[] szRange = new byte[MAX_FACE_DB_NUM];
|
|
|
+ /**
|
|
|
+ * 待查询人脸类型
|
|
|
+ *
|
|
|
+ * @see FaceRecognitionFaceType
|
|
|
+ */
|
|
|
+ public int emFaceType;
|
|
|
+
|
|
|
+ public NET_FACE_FILTER_CONDTION() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_StartFindFaceRecognition接口输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_STARTFIND_FACERECONGNITION extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 返回的符合查询条件的记录个数
|
|
|
+ */
|
|
|
+ public int nTotalCount;
|
|
|
+ /**
|
|
|
+ * 查询句柄
|
|
|
+ */
|
|
|
+ public LLong lFindHandle;
|
|
|
+
|
|
|
+ public NET_OUT_STARTFIND_FACERECONGNITION() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DetectFace接口输入参数
|
|
|
+ */
|
|
|
+ class NET_IN_DETECT_FACE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 大图信息
|
|
|
+ */
|
|
|
+ public DH_PIC_INFO stPicInfo;
|
|
|
+ /**
|
|
|
+ * 缓冲地址
|
|
|
+ */
|
|
|
+ public Pointer pBuffer;
|
|
|
+ /**
|
|
|
+ * 缓冲数据长度
|
|
|
+ */
|
|
|
+ public int nBufferLen;
|
|
|
+
|
|
|
+ public NET_IN_DETECT_FACE() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CLIENT_DetectFace接口输出参数
|
|
|
+ */
|
|
|
+ class NET_OUT_DETECT_FACE extends Structure {
|
|
|
+ public int dwSize;
|
|
|
+ /**
|
|
|
+ * 检测出的人脸图片信息,由用户申请空间
|
|
|
+ */
|
|
|
+ public Pointer pPicInfo;
|
|
|
+ /**
|
|
|
+ * 最大人脸图片信息个数
|
|
|
+ */
|
|
|
+ public int nMaxPicNum;
|
|
|
+ /**
|
|
|
+ * 实际返回的人脸图片个数
|
|
|
+ */
|
|
|
+ public int nRetPicNum;
|
|
|
+ /**
|
|
|
+ * 缓冲地址,由用户申请空间,存放检测出的人脸图片数据
|
|
|
+ */
|
|
|
+ public Pointer pBuffer;
|
|
|
+ /**
|
|
|
+ * 缓冲数据长度
|
|
|
+ */
|
|
|
+ public int nBufferLen;
|
|
|
+
|
|
|
+ public NET_OUT_DETECT_FACE() {
|
|
|
+ this.dwSize = this.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*******************回调*******************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 断线回调
|
|
|
+ */
|
|
|
+ interface fDisConnect extends StdCallCallback {
|
|
|
+ /**
|
|
|
+ * @param lLoginID CLIENT_LoginEx2的返回值
|
|
|
+ * @param pchDVRIP 设备IP
|
|
|
+ * @param nDVRPort 设备端口
|
|
|
+ * @param dwUser 用户数据
|
|
|
+ */
|
|
|
+ void invoke(NativeLong lLoginID, String pchDVRIP, int nDVRPort, NativeLong dwUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 断线后重连回调
|
|
|
+ */
|
|
|
+ interface fHaveReConnect extends StdCallCallback {
|
|
|
+ /**
|
|
|
+ * @param lLoginID CLIENT_LoginEx2的返回值
|
|
|
+ * @param pchDVRIP 设备IP
|
|
|
+ * @param nDVRPort 设备端口
|
|
|
+ * @param dwUser 用户数据
|
|
|
+ */
|
|
|
+ void invoke(NativeLong lLoginID, String pchDVRIP, int nDVRPort, NativeLong dwUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ /*******************用户管理*******************/
|
|
|
+ /**
|
|
|
+ * 设置用户信息
|
|
|
+ *
|
|
|
+ * @param lLoginID 登陆句柄,CLIENT_Login的返回值
|
|
|
+ * @param nOperateType 操作类型
|
|
|
+ * @param opParam 设置用户信息的输入缓冲,具体见上面nOperateType说明
|
|
|
+ * @param subParam 设置用户信息的辅助输入缓冲,当设置类型为修改信息的时候,此处应传进来部分原始用户信息,具体见上面nOperateType说明
|
|
|
+ * @param waittime 等待时间
|
|
|
+ * @return
|
|
|
+ * @see OperateType
|
|
|
+ */
|
|
|
+ boolean CLIENT_OperateUserInfoEx(NativeLong lLoginID, int nOperateType, Pointer opParam, Pointer subParam, int waittime);
|
|
|
+}
|