package com.dahua.netsdk.lib.callback.securityCheck;
|
|
import com.dahua.netsdk.lib.NetSDKLib;
|
import com.dahua.netsdk.lib.ToolKits;
|
import com.dahua.netsdk.lib.structure.DEV_EVENT_SECURITYGATE_PERSONALARM_INFO;
|
import com.dahua.netsdk.lib.structure.NET_SECURITYGATE_ALARM_FACE_INFO;
|
import com.dahua.netsdk.lib.structure.NET_TIME_EX;
|
import com.sun.jna.Pointer;
|
|
import java.io.File;
|
import java.io.UnsupportedEncodingException;
|
|
/**
|
* @author 291189
|
* @version 1.0
|
* @description 智能分析数据回调;nSequence表示上传的相同图片情况,为0时表示是第一次出现,为2表示最后一次出现或仅出现一次,为1表示此次之后还有
|
* @date 2021/7/6
|
*/
|
public class AnalyzerDataCallBack implements NetSDKLib.fAnalyzerDataCallBack {
|
private final File picturePath;
|
|
public static AnalyzerDataCallBack singleton;
|
|
private AnalyzerDataCallBack(){
|
picturePath = new File("./AnalyzerPicture/");
|
}
|
|
public static AnalyzerDataCallBack getInstance(){
|
if(singleton==null){
|
singleton=new AnalyzerDataCallBack();
|
|
return singleton;
|
}
|
return singleton;
|
}
|
|
|
@Override
|
public int invoke(NetSDKLib.LLong lAnalyzerHandle, int dwAlarmType, Pointer pAlarmInfo, Pointer pBuffer,
|
int dwBufSize, Pointer dwUser,
|
int nSequence, Pointer reserved) {
|
File path = new File("./AccessPicture/");
|
if (!path.exists()) {
|
path.mkdir();
|
}
|
|
switch(dwAlarmType)
|
{
|
case NetSDKLib.EVENT_IVS_SECURITYGATE_PERSONALARM: //安检门人员报警事件
|
{
|
|
System.out.println("安检门人员报警事件");
|
|
DEV_EVENT_SECURITYGATE_PERSONALARM_INFO msg = new DEV_EVENT_SECURITYGATE_PERSONALARM_INFO();
|
ToolKits.GetPointerData(pAlarmInfo, msg);
|
|
// 通道号
|
int nChannelID = msg.nChannelID;
|
|
System.out.println("nChannelID:" + nChannelID);
|
|
// 0:脉冲 1:开始 2:停止
|
int nAction = msg.nAction;
|
|
System.out.println("nAction:" + nAction);
|
|
// 事件名称
|
byte[] szName = msg.szName;
|
try {
|
String name = new String(szName, "gbk");
|
System.out.println("szName:" + name);
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
|
// 时间戳(单位是毫秒)
|
double pts = msg.PTS;
|
|
System.out.println("pts:" + pts);
|
|
// 事件发生的时间
|
NET_TIME_EX utc = msg.UTC;
|
|
System.out.println("utc:" + utc);
|
|
|
// 事件ID
|
int nEventID = msg.nEventID;
|
|
System.out.println("nEventID:" + nEventID);
|
|
/**
|
* 人员通过方向枚举,参考枚举{@link com.dahua.netsdk.lib.enumeration.EM_SECURITYGATE_PERSON_PASS_DIRECTION }
|
*/
|
int emDirection = msg.emDirection;
|
|
System.out.println("emDirection:" + emDirection);
|
|
/**
|
* 报警级别,参考枚举{@link com.dahua.netsdk.lib.enumeration.EM_SECURITYGATE_ALARM_LEVEL }
|
*/
|
int emAlarmLevel = msg.emAlarmLevel;
|
|
System.out.println("emAlarmLevel:" + emAlarmLevel);
|
|
// 关联进入通道
|
int nChannelIn = msg.nChannelIn;
|
System.out.println("nChannelIn:" + nChannelIn);
|
|
// 关联离开通道
|
int channelOut = msg.ChannelOut;
|
System.out.println("ChannelOut:" + channelOut);
|
|
// 报警位置个数
|
int nAlarmPositionNum = msg.nAlarmPositionNum;
|
System.out.println("nAlarmPositionNum:" + nAlarmPositionNum);
|
|
|
// 人脸信息
|
NET_SECURITYGATE_ALARM_FACE_INFO faceInfo = msg.stuSecurityGateFaceInfo;
|
System.out.println("【人脸信息】:emSex=" + faceInfo.emSex + ",nAge=" + faceInfo.nAge + ",emEmotion="
|
+ faceInfo.emEmotion + ",emGlasses=" + faceInfo.emGlasses + ",emMask=" + faceInfo.emMask + ",emBeard=" +
|
faceInfo.emBeard + ",nAttractive=" + faceInfo.nAttractive + ",emMouth=" + faceInfo.emMouth + ",emEye=" + faceInfo.emEye + ",fTemperature=" + faceInfo.fTemperature + ",emTempUnit="
|
+ faceInfo.emTempUnit + ",emTempType=" + faceInfo.emTempType);
|
|
|
/**
|
* 报警位置,参考枚举{@link com.dahua.netsdk.lib.enumeration.EM_SECURITYGATE_ALARM_POSITION }
|
*/
|
// 报警位置
|
int[] emAlarmPosition = msg.emAlarmPosition;
|
|
for (int i = 0; i < emAlarmPosition.length; i++) {
|
System.out.println("报警位置:" + i + "[" + emAlarmPosition[i] + "]");
|
}
|
|
//人脸图片信息
|
if (msg.stuImageInfo != null && msg.stuImageInfo.nLength > 0) {
|
String facePicture = picturePath + "\\" + System.currentTimeMillis() + "face.jpg";
|
ToolKits.savePicture(pBuffer, msg.stuImageInfo.nOffSet, msg.stuImageInfo.nLength, facePicture);
|
}
|
|
//人脸小图
|
if (msg.stuFaceImageInfo != null && msg.stuFaceImageInfo.nLength > 0) {
|
String faceSmallPicture = picturePath + "\\" + System.currentTimeMillis() + "faceSmall.jpg";
|
ToolKits.savePicture(pBuffer, msg.stuFaceImageInfo.nOffSet, msg.stuFaceImageInfo.nLength, faceSmallPicture);
|
}
|
|
|
break;
|
}
|
default:
|
break;
|
}
|
return 0;
|
}
|
|
}
|