From 512cae0fd797fac428f07d9d955f880e9ee353c1 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期四, 30 七月 2020 19:45:01 +0800
Subject: [PATCH] 修改人脸显示

---
 app/src/main/java/com/basic/security/manager/AlarmManager.java |  188 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 176 insertions(+), 12 deletions(-)

diff --git a/app/src/main/java/com/basic/security/manager/AlarmManager.java b/app/src/main/java/com/basic/security/manager/AlarmManager.java
index a918c4b..d0f3427 100644
--- a/app/src/main/java/com/basic/security/manager/AlarmManager.java
+++ b/app/src/main/java/com/basic/security/manager/AlarmManager.java
@@ -1,15 +1,30 @@
 package com.basic.security.manager;
 
 import android.database.Cursor;
+import android.text.TextUtils;
+import android.widget.TextView;
 
+import com.basic.security.activity.MainActivity;
+import com.basic.security.base.BaseApplication;
 import com.basic.security.dao.DatabaseManager;
 import com.basic.security.dao.SqliteManager;
+import com.basic.security.fragment.HomeFragment;
+import com.basic.security.fragment.helper.HomeGridViewAdapter;
+import com.basic.security.model.Alarm;
+import com.basic.security.utils.Constants;
+import com.basic.security.utils.FrameUtil;
+import com.basic.security.utils.VideoPath;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
 
 public class AlarmManager extends SqliteManager {
 
@@ -49,29 +64,34 @@
         }
         for (Map<String, String> apiModel : listApiModel) {
             apiModel.put("table", "alarm");
-            apiModel.put("alarmTime", apiModel.get("picDate"));
+            String picDate = apiModel.get("picDate");
+            String alarmTime = picDate;
+            if (alarmTime != null && alarmTime.length() > "2019-11-11 12:32:05".length()) {
+                alarmTime = alarmTime.substring(0, "2019-11-11 12:32:05".length());
+            }
+            apiModel.put("alarmTime", alarmTime);
             apiModel.put("alarmPerson", "");
 
             String sdkType = apiModel.get("sdkType");
             if (sdkType != null) {
                 apiModel.put("alarmType", apiModel.remove("sdkType"));
                 if (sdkType.equals("浜鸿劯")) {
-                    apiModel.put("property", apiModel.get("gender") + " " + apiModel.get("ageDescription") + " " + apiModel.get("race"));
-                    apiModel.put("alarmPerson",
-                            apiModel.remove("tableName")+" "+               apiModel.remove("idcard"));
+//                    apiModel.put("property", apiModel.get("gender") + " " + apiModel.get("ageDescription") + " " + apiModel.get("race"));
+                    apiModel.put("property", apiModel.remove("showLabels"));
+                    apiModel.put("alarmPerson", apiModel.remove("tableName") + " " + apiModel.remove("idcard"));
                 }
             }
             apiModel.put("alarmVideo", apiModel.get("videoNum"));
-            String picDate = apiModel.get("picDate");
             if (picDate != null) {
                 apiModel.put("alarmPicture", apiModel.remove("picDate"));
             }
             apiModel.put("alarmPicture",
-                    apiModel.get("picSmUrl")
+                    "http://" + apiModel.get("picSmUrl")
             );
             apiModel.put("alarmLargePicture",
-                    apiModel.get("picMaxUrl")
+                    "http://" + apiModel.get("picMaxUrl")
             );
+            apiModel.put(Alarm.picDate, picDate);
             String picAddress = apiModel.get("picAddress");
             if (picAddress != null) {
                 apiModel.put("alarmAddress", apiModel.remove("picAddress"));
@@ -99,40 +119,104 @@
         } else {
             sqliteAlarmList.addAll(dbSqliteAlarmList);
         }
+        long keepStartTime = SettingManager.getKeepStartTime();
         for (Map<String, String> alarm : sqliteAlarmList) {
             String alarmVideo = alarm.get("alarmVideo");
             String alarmPicture = alarm.get("alarmPicture");
             String alarmLargePicture = alarm.get("alarmLargePicture");
+            String alarmTimeStr = alarm.get(Alarm.alarmTime);
+            long alarmTime = new Date().getTime();
+            if (alarmTimeStr != null && alarmTimeStr.length() > "yyyy-MM-dd HH:mm:ss".length()) {
+                alarmTimeStr = alarmTimeStr.substring(0, "yyyy-MM-dd HH:mm:ss".length());
+            }
+            try {
+                alarmTime = sdf.parse(alarmTimeStr).getTime();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
 
-            if (alarmVideo != null && alarmVideo.startsWith("http:")) {
+//            if (alarmVideo != null && alarmVideo.startsWith("http:")) {
+            if (alarmVideo != null) {
                 alarm.put("alarmVideoValid", "true");
             } else {
                 alarm.put("alarmVideoValid", "false");
             }
-            if (alarmPicture != null && alarmPicture.startsWith("http:")) {
+//            if (alarmPicture != null && alarmPicture.startsWith("http:")) {
+            if (alarmPicture != null) {
                 alarm.put("alarmPictureValid", "true");
             } else {
                 alarm.put("alarmPictureValid", "false");
             }
-            if (alarmLargePicture != null && alarmLargePicture.startsWith("http:")) {
+//            if (alarmLargePicture != null && alarmLargePicture.startsWith("http:")) {
+            if (alarmLargePicture != null) {
                 alarm.put("alarmLargePictureValid", "true");
             } else {
                 alarm.put("alarmLargePictureValid", "false");
             }
+            if (alarmTime < keepStartTime) {
+                alarm.put("canClose", "true");
+            } else {
+                alarm.put("canClose", "false");
+            }
+//            alarm.put("alarmVideo", "/sdcard/face1.mp4");
         }
         return sqliteAlarmList;
     }
 
+    public static Set<String> newAlarmIdSet = new HashSet<>();
+    public static Lock newAlarmIdSetLock = new ReentrantLock();
+
+    public static void putNewAlarmIdSet(Map<String, String> newRemoteAlarm) {
+        newAlarmIdSetLock.lock();
+        try {
+            String id = newRemoteAlarm.get(Alarm.id);
+            if (!TextUtils.isEmpty(id)) {
+                newAlarmIdSet.add(id);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        newAlarmIdSetLock.unlock();
+    }
+
+    public static boolean removeNewAlarmIdSet(Map<String, String> alarm) {
+        newAlarmIdSetLock.lock();
+        boolean success = false;
+        try {
+            String id = alarm.get(Alarm.id);
+            if (!TextUtils.isEmpty(id)) {
+                if (newAlarmIdSet.contains(id)) {
+                    success = true;
+                }
+                newAlarmIdSet.remove(id);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        newAlarmIdSetLock.unlock();
+        return success;
+    }
+
+
     public static int saveRemoteAlarmListToSqlite(List<Map<String, String>> newRemoteAlarmList) {
         int savedCount = 0;
         for (Map<String, String> newRemoteAlarm : newRemoteAlarmList) {
-            if (findById(newRemoteAlarm.get("id")) == null) {
+            Map<String, String> dbRemoteAlarm = findById(newRemoteAlarm.get("id"));
+            if (dbRemoteAlarm == null) {
                 newRemoteAlarm.put("table", "alarm");
                 newRemoteAlarm.put("closeAlarm", "false");
                 newRemoteAlarm.put("mute", "false");
-                newRemoteAlarm.put("createTime", new Date().getTime()+"");
+                newRemoteAlarm.put("createTime", new Date().getTime() + "");
                 save(newRemoteAlarm);
+                putNewAlarmIdSet(newRemoteAlarm);
                 savedCount++;
+            } else {
+                if (TextUtils.isEmpty(dbRemoteAlarm.get("alarmVideo"))) {
+                    dbRemoteAlarm.put("table", "alarm");
+                    dbRemoteAlarm.put("alarmVideo", newRemoteAlarm.get("alarmVideo"));
+                    save(dbRemoteAlarm);
+                    savedCount++;
+                }
             }
         }
         return savedCount;
@@ -145,4 +229,84 @@
             e.printStackTrace();
         }
     }
+
+    public static List<Map<String, String>> newSqliteAlarmListBackup = new ArrayList<>();
+
+    public static void updateVideoUrl() {
+        HomeFragment homeFragment = ((MainActivity) BaseApplication.getApplication().activity).fragment_home;
+        if (homeFragment == null) {
+            return;
+        }
+        if (homeFragment.refreshGridViewLocker != null) {
+            try {
+                homeFragment.refreshGridViewLocker.lock();
+                if (homeFragment.newSqliteAlarmList != null) {
+                    for (int i = 0; i < homeFragment.newSqliteAlarmList.size(); i++) {
+                        Map<String, String> alarm = homeFragment.newSqliteAlarmList.get(i);
+                        if (alarm.get(Alarm.alarmVideo).length() < 5) {
+                            Map<String, String> newAlarm = new HashMap<>();
+                            newAlarm.putAll(alarm);
+                            newSqliteAlarmListBackup.add(newAlarm);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                homeFragment.refreshGridViewLocker.unlock();
+            }
+        }
+
+        int videoUrlChangeCount = 0;
+        if (newSqliteAlarmListBackup.size() > 0) {
+            for (Map<String, String> alarm : newSqliteAlarmListBackup) {
+                String videoUrl = VideoPath.getVideoUrl(alarm);
+                if (!TextUtils.isEmpty(videoUrl)) {
+                    alarm.put(Alarm.alarmVideo, videoUrl);
+                    save(alarm);
+                    videoUrlChangeCount++;
+                }
+            }
+        }
+        if (videoUrlChangeCount > 0) {
+            homeFragment.refreshGridView();
+        }
+    }
+
+    static Map<String, String> alarmPlayingMap = new HashMap<>();
+    static Lock alarmPlayingMapLock = new ReentrantLock();
+
+    public static void putAlarmPlaying(Map<String, String> alarm, boolean state) {
+        try {
+            String id = alarm.get(Alarm.id);
+            if (!TextUtils.isEmpty(id)) {
+                if (state) {
+                    System.out.println("AlarmManager.putAlarmPlaying " + state + " " + id + FrameUtil.getFrames());
+                }
+                alarmPlayingMapLock.lock();
+                alarmPlayingMap.put(id, state ? Constants.TRUE : Constants.FALSE);
+                alarmPlayingMapLock.unlock();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static boolean getAlarmPlaying(Map<String, String> alarm) {
+        boolean state = false;
+        try {
+            String id = alarm.get(Alarm.id);
+            if (!TextUtils.isEmpty(id)) {
+                alarmPlayingMapLock.lock();
+                if ("true".equals(alarmPlayingMap.get(id))) {
+                    state = true;
+                }
+                alarmPlayingMapLock.unlock();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return state;
+    }
+
 }

--
Gitblit v1.8.0