From 38492bbaa63586e2f4877da0eaa01a082fd565a6 Mon Sep 17 00:00:00 2001
From: 554325746@qq.com <554325746@qq.com>
Date: 星期三, 25 十二月 2019 08:42:58 +0800
Subject: [PATCH] a

---
 app/src/main/java/com/basic/security/manager/AlarmManager.java |  145 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 142 insertions(+), 3 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 e25eb0b..cf97f73 100644
--- a/app/src/main/java/com/basic/security/manager/AlarmManager.java
+++ b/app/src/main/java/com/basic/security/manager/AlarmManager.java
@@ -1,16 +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 {
 
@@ -50,7 +64,12 @@
         }
         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");
@@ -63,7 +82,6 @@
                 }
             }
             apiModel.put("alarmVideo", apiModel.get("videoNum"));
-            String picDate = apiModel.get("picDate");
             if (picDate != null) {
                 apiModel.put("alarmPicture", apiModel.remove("picDate"));
             }
@@ -73,6 +91,7 @@
             apiModel.put("alarmLargePicture",
                     apiModel.get("picMaxUrl")
             );
+            apiModel.put(Alarm.picDate, picDate);
             String picAddress = apiModel.get("picAddress");
             if (picAddress != null) {
                 apiModel.put("alarmAddress", apiModel.remove("picAddress"));
@@ -136,20 +155,62 @@
             } 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()+"");
                 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;
@@ -162,4 +223,82 @@
             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