package com.dahua.netsdk; import com.dahua.netsdk.lib.LibraryLoad; import com.dahua.netsdk.lib.NetSDKLib; import com.dahua.netsdk.lib.callback.impl.AnalyzerDataCB; import com.dahua.netsdk.lib.callback.impl.DefaultDisconnectCallback; import com.dahua.netsdk.lib.callback.impl.DefaultHaveReconnectCallBack; import com.dahua.netsdk.lib.enumeration.EM_EVENT_IVS_TYPE; import com.dahua.netsdk.module.BaseModule; import com.dahua.netsdk.module.entity.DeviceInfo; public class AppDemo extends Thread { private NetSDKLib netsdk = NetSDKLib.NETSDK_INSTANCE; private long loginHandler; private long attachHandler; private final BaseModule baseModule; public AppDemo() { baseModule = new BaseModule(netsdk); } public void init() { baseModule.init(DefaultDisconnectCallback.getINSTANCE(), DefaultHaveReconnectCallBack.getINSTANCE(), true); } /** * 登录设备 * * @param ip 设备ip * @param port 设备端口 * @param username 用户名 * @param password 密码 * @return */ public boolean login(String ip, int port, String username, String password) { DeviceInfo info = baseModule.login(ip, port, username, password); if (info != null && info.getLoginHandler() != 0) { loginHandler = info.getLoginHandler(); return true; } loginHandler = 0; return false; } /** * 订阅事件 * * @return */ public boolean realLoad() { attachHandler = baseModule.realLoadPicture(loginHandler, -1, EM_EVENT_IVS_TYPE.EVENT_IVS_ALL, true, AnalyzerDataCB.getInstance(), null, null); return attachHandler != 0; } /** * 停止订阅 */ public void stopRealLoad() { baseModule.stopRealLoadPicture(attachHandler); } /** * 登出 */ public void logout() { baseModule.logout(loginHandler); } /** * 释放sdk资源 */ public void cleanup() { baseModule.clean(); } public void run() { LibraryLoad.setExtractPath("/home/sccg/libs/linux64/"); // LibraryLoad.setExtractPath("D:\\1.workcode\\ycyl\\sccg\\sccg_server\\ycl-platform\\src\\main\\resources\\libs\\win64\\"); BaseModule baseModule = new BaseModule(); // sdk初始化,设置断线回调和断线重连并开启sdk日志 baseModule.init( DefaultDisconnectCallback.getINSTANCE(), DefaultHaveReconnectCallBack.getINSTANCE(), true); String ip = "172.28.194.186"; int port = 37777; String username = "admin"; String password = "scdx@123"; AppDemo demo = new AppDemo(); demo.init(); //登录后订阅 if (demo.login(ip, port, username, password) && demo.realLoad()) { System.out.println("登录设备并订阅成功!"); //订阅成功后,等待设备上报事件,在回调AnalyzerDataCB中获取事件数据 while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } } demo.stopRealLoad(); demo.logout(); } }