前言
本来一个很简单的SDK接口对接,折腾了好久;总结下原因有:
海康的SDK底层使用C++写的,我不熟悉C++;
海康Java源码示例写的是一个Swing桌面应用,我需要的是嵌入到web项目;
海康《设备网络SDK使用手册》中的示例是用C++写的;并且会出现使用手册和Java源码示例版本不匹配的情况(用手册版本高于Java源码示例版)
我的需求
使用海康认证对面设备在刷身份证和人脸识别通过后,取到身份证信息和人脸照片并且传到页面上。
代码处理
1.将SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹、ssleay32.dll、libeay32.dll文件均要加载到程序里面,【HCNetSDKCom文件夹】(包含里面的功能组件dll库文件)需要和HCNetSDK.dll、HCCore.dll一起加载,放在同一个目录下(我的事springboot项目,放在resources目录下),且HCNetSDKCom文件夹名不能修改。
2.HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(“E:\project\renliantext\src\main\resources\lib\HCNetSDK”, HCNetSDK.class);修改HCnetSDK的引入路径。
3.将路径:将Demo示例\4- Java 开发示例\2-报警布防监听\AlarmJavaDemo\src\alarmjavademo的demo包移植过来并且解决报错信息,就是导入包的问题 手动引入jar包或者从MAVEN再导入就好
4,写Service类,调用接口进行注册,布防。布防成功后设置报警回调函数
5,写serviceimp类,就是报警回调函数的实现在里面取到想要的数据。
下面是代码
Service类源码 里面有main方法 可以先进行测试看时候可以注册成功已经设置回到函数成功
package com.jeeplus.modules.xwhj.haikang.service;
import com.jeeplus.modules.xwhj.haikang.HCNetSDK;
import com.jeeplus.modules.xwhj.haikang.Haikangimp;
import org.springframework.stereotype.Service;
import javax.swing.*;
import java.util.Timer;
import java.util.TimerTask;
@Service
public class Haikang {
static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
static HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
static HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
static String m_sDeviceIP="192.168.19.249";//已登录设备的IP地址
static String m_sUsername="admin";//设备用户名
static String m_sPassword="xwkj0713";//设备密码
static int lUserID;//用户句柄
static int lAlarmHandle;//报警布防句柄
static int lListenHandle;//报警监听句柄
/* FMSGCallBack fMSFCallBack;//报警回调函数实现
AlarmJavaDemoView.FMSGCallBack_V31 fMSFCallBack_V31;*///报警回调函数实现
public void logintext() {//GEN-FIRST:event_jButtonLoginActionPerformed
hCNetSDK.NET_DVR_Init();
//注册之前先注销已注册的用户,预览情况下不可注销
if (lUserID > -1) {
//先注销
hCNetSDK.NET_DVR_Logout(lUs