瀏覽代碼

Merge branch 'dev' of ssh://10.10.100.21/source/smartschool-platform into dev

chenw 6 年之前
父節點
當前提交
1441e995b4

+ 6 - 0
applications/device/device-sdk-dahua/src/main/java/com/usoftchina/smartschool/device/dahua/lib/DahuaSdk.java

@@ -39,6 +39,10 @@ public class DahuaSdk {
      */
     private int tryTimes = 1;
 
+    private fDisConnect disConnect;
+
+    private fHaveReConnect haveReConnect;
+
     /**
      * 拷贝DLL资源到临时目录,解决fat jar无法加载DLL问题
      *
@@ -95,6 +99,8 @@ public class DahuaSdk {
      * @return
      */
     public boolean init(fDisConnect disConnect, fHaveReConnect haveReConnect) {
+        this.disConnect = disConnect;
+        this.haveReConnect = haveReConnect;
         initialized = instance.CLIENT_Init(disConnect, new NativeLong());
         if (!initialized) {
             logger.error("SDK initialize failed");

+ 18 - 8
applications/device/device-sdk-dahua/src/main/java/com/usoftchina/smartschool/device/dahua/service/DahuaDataAnalyzeService.java

@@ -29,12 +29,12 @@ public class DahuaDataAnalyzeService {
     /**
      * 多个登录设备的监听句柄
      */
-    private Map<Long, NativeLong> analyzerHandles;
+    private Map<Long, AnalyzerData> analyzers;
     private final Logger logger = LoggerFactory.getLogger(DahuaDataAnalyzeService.class);
 
     public DahuaDataAnalyzeService(DahuaSdk sdk) {
         this.sdk = sdk;
-        this.analyzerHandles = new HashMap<>();
+        this.analyzers = new HashMap<>();
     }
 
     /**
@@ -45,11 +45,21 @@ public class DahuaDataAnalyzeService {
      */
     public void startListen(DeviceInfo device, NativeLong loginHandle) {
         long key = loginHandle.longValue();
-        if (key != 0 && !analyzerHandles.containsKey(key)) {
+        if (key != 0 && !analyzers.containsKey(key)) {
+            fAnalyzerDataCallBack callback = new AnalyzerDataCallBack(device);
             NativeLong lAnalyzerHandle = sdk.getInstance().CLIENT_RealLoadPictureEx(loginHandle, 0,
-                    DahuaEvents.EVENT_IVS_ALL, true, new AnalyzerDataCallBack(device),
-                    new NativeLong(), null);
-            analyzerHandles.put(key, lAnalyzerHandle);
+                    DahuaEvents.EVENT_IVS_ALL, true, callback, new NativeLong(), null);
+            analyzers.put(key, new AnalyzerData(lAnalyzerHandle, callback));
+        }
+    }
+
+    class AnalyzerData {
+        public NativeLong handle;
+        public fAnalyzerDataCallBack callback;
+
+        public AnalyzerData(NativeLong handle, fAnalyzerDataCallBack callback) {
+            this.handle = handle;
+            this.callback = callback;
         }
     }
 
@@ -104,8 +114,8 @@ public class DahuaDataAnalyzeService {
      */
     public void stopListen(NativeLong loginHandle) {
         long key = loginHandle.longValue();
-        if (key != 0 && analyzerHandles.containsKey(key)) {
-            boolean bRet = sdk.getInstance().CLIENT_StopLoadPic(analyzerHandles.get(key));
+        if (key != 0 && analyzers.containsKey(key)) {
+            boolean bRet = sdk.getInstance().CLIENT_StopLoadPic(analyzers.get(key).handle);
             if (!bRet) {
                 throw new DahuaSdkException(sdk.getLastError());
             }