package com.netsdk.demo.customize; import com.netsdk.demo.accessControl.AccessControl; import com.netsdk.demo.accessControl.AccessFaceOperate; import com.netsdk.demo.util.Base64Util; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; import com.netsdk.lib.NetSDKLib.DEV_EVENT_CITIZEN_PICTURE_COMPARE_INFO; import com.netsdk.lib.structure.*; import com.netsdk.lib.utils.Initialization; import com.sun.jna.Memory; import com.sun.jna.NativeLong; import com.sun.jna.Pointer; import javax.imageio.ImageIO; import static com.netsdk.lib.Utils.getOsPrefix; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Scanner; /** * @author 291189 * @version 1.0 * @description * @date 2021/8/23 14:08 */ public class HealthCodeDemo extends Initialization { // 编码格式 public static String encode; static { String osPrefix = getOsPrefix(); if (osPrefix.toLowerCase().startsWith("win32-amd64")) { encode = "GBK"; } else if (osPrefix.toLowerCase().startsWith("linux-amd64")) { encode = "UTF-8"; } } public void queryRecord(){ } /**(无图的) * 订阅报警信息 * @return */ public void startListen() { // 设置报警回调函数 netSdk.CLIENT_SetDVRMessCallBack(fAlarmDataCB.getCallBack(), null); // 订阅报警 boolean bRet = netSdk.CLIENT_StartListenEx(loginHandle); if (!bRet) { System.err.println("订阅报警失败! LastError = 0x%x\n" + netSdk.CLIENT_GetLastError()); } else { System.out.println("订阅报警成功."); } } /**(无图) * 取消订阅报警信息 * @return */ public void stopListen() { // 停止订阅报警 boolean bRet = netSdk.CLIENT_StopListen(loginHandle); if (bRet) { System.out.println("取消订阅报警信息."); } } /** * 订阅(有图) */ public NetSDKLib.LLong realLoadPicture() { int bNeedPicture = 1; // 是否需要图片 int ChannelId = 0; // -1代表全通道 NetSDKLib.LLong m_hAttachHandle = netSdk.CLIENT_RealLoadPictureEx(loginHandle, ChannelId, NetSDKLib.EVENT_IVS_ALL, bNeedPicture , fAnalyzerDataCB.getInstance() , null , null); if(m_hAttachHandle.longValue() != 0) { System.out.println("智能订阅成功."); } else { System.err.println("智能订阅失败." + ToolKits.getErrorCode()); } return m_hAttachHandle; } /** * 停止智能订阅 */ public void stopLoadPicture(NetSDKLib.LLong attachHandle) { if (attachHandle.longValue() != 0) { netSdk.CLIENT_StopLoadPic(attachHandle); attachHandle.setValue(0); System.out.println("Had Stop RealLoad Picture!"); } } /** * 报警信息回调函数原形,建议写成单例模式 */ private static class fAlarmDataCB implements NetSDKLib.fMessCallBack{ private fAlarmDataCB(){} private static class fAlarmDataCBHolder { private static fAlarmDataCB callback = new fAlarmDataCB(); } public static fAlarmDataCB getCallBack() { return fAlarmDataCB.fAlarmDataCBHolder.callback; } public boolean invoke(int lCommand, NetSDKLib.LLong lLoginID, Pointer pStuEvent, int dwBufLen, String strDeviceIP, NativeLong nDevicePort, Pointer dwUser){ // System.out.printf("command = %x\n", lCommand); switch (lCommand) { case NetSDKLib.NET_ALARM_ACCESS_CTL_EVENT: { // 门禁事件 NetSDKLib.ALARM_ACCESS_CTL_EVENT_INFO msg = new NetSDKLib.ALARM_ACCESS_CTL_EVENT_INFO(); ToolKits.GetPointerData(pStuEvent, msg); System.out.println("普通门禁"); //核酸检测报告结果 int nHSJCResult = msg.nHSJCResult; System.out.println("nHSJCResult:"+nHSJCResult); // 新冠疫苗接种信息 NET_VACCINE_INFO stuVaccineInfo = msg.stuVaccineInfo; int nVaccinateFlag = stuVaccineInfo.nVaccinateFlag; //是否接种疫苗 System.out.println("nVaccinateFlag:"+nVaccinateFlag); byte[] szVaccineName = stuVaccineInfo.szVaccineName; //疫苗名称 System.out.println("szVaccineName:"+new String(szVaccineName)); //历史接种日期有效个数 int nDateCount = stuVaccineInfo.nDateCount; System.out.println("nDateCount:"+nDateCount); //历史接种日期 (yyyy-MM-dd). 如提供不了时间, 则填"0000-00-00", 表示已接种 VaccinateDateByteArr[] szVaccinateDate = stuVaccineInfo.szVaccinateDate; for(int i=0;i