package com.netsdk.demo.example; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.structure.NET_PERSON_FREQUENCY_INFO; import com.netsdk.lib.utils.Initialization; import com.sun.jna.Pointer; /** * @author 291189 * @version 1.0 * @description * @date 2021/7/21 11:05 */ public class FaceRecognitionDemo extends Initialization { // private static String m_strIpAddr = "10.34.3.219"; private static String m_strIpAddr="172.12.5.69"; private static int m_nPort = 37777; private static String m_strUser = "admin"; private static String m_strPassword = "admin123"; // 订阅句柄 private static NetSDKLib.LLong AttachHandle = new NetSDKLib.LLong(0); /** * 选择通道 */ private int channel = 12; /** * 订阅智能任务 */ public void attachIVSEvent() { // 先退订,设备不会对重复订阅作校验,重复订阅后会有重复的事件返回 this.DetachEventRealLoadPic(); // 需要图片 int bNeedPicture = 1; //订阅所有事件 AttachHandle = netSdk.CLIENT_RealLoadPictureEx(loginHandle, channel, NetSDKLib.EVENT_IVS_FACERECOGNITION , bNeedPicture, AnalyzerDataCB.getInstance(), null, null); if (AttachHandle.longValue() != 0) { System.out.printf("Chn[%d] CLIENT_RealLoadPictureEx Success\n", channel); } else { System.out.printf("Ch[%d] CLIENT_RealLoadPictureEx Failed!LastError = %s\n", channel, ToolKits.getErrorCode()); } } /** * 停止侦听智能事件 */ public void DetachEventRealLoadPic() { if (AttachHandle.longValue() != 0) { netSdk.CLIENT_StopLoadPic(AttachHandle); } } /** * 智能事件回调 */ private static class AnalyzerDataCB implements NetSDKLib.fAnalyzerDataCallBack { private static AnalyzerDataCB instance; private AnalyzerDataCB() { } public static AnalyzerDataCB getInstance() { if (instance == null) { synchronized (AnalyzerDataCB.class) { if (instance == null) { instance = new AnalyzerDataCB(); } } } return instance; } public int invoke(NetSDKLib.LLong lAnalyzerHandle, int dwAlarmType, Pointer pAlarmInfo, Pointer pBuffer, int dwBufSize, Pointer dwUser, int nSequence, Pointer reserved) { if (lAnalyzerHandle == null || lAnalyzerHandle.longValue() == 0) { return -1; } switch (dwAlarmType) { case NetSDKLib.EVENT_IVS_FACERECOGNITION: NetSDKLib.DEV_EVENT_FACERECOGNITION_INFO msg = new NetSDKLib.DEV_EVENT_FACERECOGNITION_INFO(); ToolKits.GetPointerData(pAlarmInfo, msg); NetSDKLib.CANDIDATE_INFOEX[] stuCandidatesEx = msg.stuCandidatesEx; for (int i=0;i