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