fixed web msg shoot text observer.
authorTrillGates <williamtrillgates@gmail.com>
Tue, 31 Aug 2021 09:19:48 +0000 (17:19 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Tue, 31 Aug 2021 09:19:48 +0000 (17:19 +0800)
app/src/main/java/com/enqualcomm/support/Constants.java
app/src/main/java/com/enqualcomm/support/bean/Alarm.java
app/src/main/java/com/enqualcomm/support/service/SilentManager.java
app/src/main/java/com/enqualcomm/support/utils/ICLogger.java
app/src/main/java/com/enqualcomm/support/utils/VibrateUtil.java
app/src/main/java/com/ic/protocols/protocol_s123.java
app/src/main/java/com/ic/view/webmsgresponse/WebMsgView.java

index 925c67c..333cf5a 100644 (file)
@@ -20,6 +20,7 @@ public interface Constants {
     String ACTION_ALARM_CHECK_ANTI = "com.ic.Action.ALarm.CheckAnti";
 
     String ACTION_ALARM_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE";
+    String ACTION_ALARM_DELETE_ALARM= "com.ic.alarm.action.DELETE_ALARM";
 
     String ACTION_ANTIOFF_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE";
 
index 76e6b7f..a03fa64 100644 (file)
@@ -48,25 +48,17 @@ public class Alarm {
         }\r
     }\r
 \r
+    @Override\r
     public String toString() {\r
-        StringBuilder var1 = new StringBuilder();\r
-        var1.append("Alarm{time='");\r
-        var1.append(this.time);\r
-        var1.append('\'');\r
-        var1.append(", week='");\r
-        var1.append(this.week);\r
-        var1.append('\'');\r
-        var1.append(", ring='");\r
-        var1.append(this.ring);\r
-        var1.append('\'');\r
-        var1.append(", status='");\r
-        var1.append(this.status);\r
-        var1.append('\'');\r
-        var1.append(", name='");\r
-        var1.append(this.name);\r
-        var1.append('\'');\r
-        var1.append('}');\r
-        return var1.toString();\r
+        return "Alarm{" +\r
+                "name='" + name + '\'' +\r
+                ", ring='" + ring + '\'' +\r
+                ", status='" + status + '\'' +\r
+                ", time='" + time + '\'' +\r
+                ", week='" + week + '\'' +\r
+                ", laterRing='" + laterRing + '\'' +\r
+                ", id='" + id + '\'' +\r
+                '}';\r
     }\r
 }\r
 \r
index 529f500..2016138 100644 (file)
@@ -7,6 +7,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.database.ContentObserver;
+import android.database.Cursor;
 import android.media.AudioManager;
 import android.net.Uri;
 import android.os.Handler;
@@ -14,6 +15,7 @@ import android.os.Message;
 import android.os.Messenger;
 import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
+import android.text.TextUtils;
 
 import com.enqualcomm.support.Config;
 import com.enqualcomm.support.CoreService;
@@ -24,6 +26,7 @@ import com.enqualcomm.support.bean.NoticeContent;
 import com.enqualcomm.support.bean.Runtime;
 import com.enqualcomm.support.bean.Silent;
 import com.enqualcomm.support.bean.StheartRate;
+import com.enqualcomm.support.provider.ICAlarmProvider;
 import com.enqualcomm.support.provider.ICContentProvider;
 import com.enqualcomm.support.service.base.AbstractInvokeHandlerService;
 import com.enqualcomm.support.utils.AlarmHelper;
@@ -46,9 +49,10 @@ import java.util.List;
 import static android.telephony.TelephonyManager.CALL_STATE_OFFHOOK;
 import static android.telephony.TelephonyManager.CALL_STATE_RINGING;
 import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE;
+import static com.enqualcomm.support.Constants.ACTION_ALARM_DELETE_ALARM;
 import static com.enqualcomm.support.Constants.ACTION_ANTIOFF_ALARM_CHANGE;
-import static com.enqualcomm.support.Constants.ACTION_IC_ALARM;
 import static com.enqualcomm.support.Constants.ACTION_CLOSE_UNREAD_MSG;
+import static com.enqualcomm.support.Constants.ACTION_IC_ALARM;
 import static com.enqualcomm.support.Constants.ACTION_NOTICE_ALARM_CHANGE;
 import static com.enqualcomm.support.Constants.OTHER_ALARM_END;
 import static com.enqualcomm.support.Constants.OTHER_ALARM_START;
@@ -61,7 +65,7 @@ public class SilentManager extends AbstractInvokeHandlerService {
     private boolean haveHandSilence;
     private boolean isCalling;
     AlarmManager mAlarmManager;
-    private SilentManager.AlramReceiver mAlarmReceiver;
+    private AlarmReceiver mAlarmReceiver;
     Connection mConnection;
 
     private static Handler mHandler;
@@ -104,8 +108,9 @@ public class SilentManager extends AbstractInvokeHandlerService {
     private static SilentManager mSilentManger = null;
 
     public static SilentManager getInstance() {
-        if (mSilentManger == null)
+        if (mSilentManger == null) {
             mSilentManger = new SilentManager();
+        }
         return mSilentManger;
     }
 
@@ -202,31 +207,39 @@ public class SilentManager extends AbstractInvokeHandlerService {
 
     }
 
-    private void cancelAlarm(List<Alarm> var1) {
-        Iterator var2 = var1.iterator();
-
-        while (var2.hasNext()) {
-            Alarm alarmItem = (Alarm) var2.next();
-            String time = alarmItem.time;
-            String week = alarmItem.week;
-            String ring = alarmItem.ring;
-            String name = alarmItem.name;
-            char[] result = week.toCharArray();
-            int var7 = result.length;
+    public void cancelAlarm(List<Alarm> alarms) {
+        Iterator alarmsIterator = alarms.iterator();
 
-            for (int var8 = 1; var8 < var7; ++var8) {
-                char var9 = result[var8];
-                this.mAlarmManager.cancel(this.getPendingIntent(time, week, ring, name, var9 - 47, 0, false));
-            }
+        while (alarmsIterator.hasNext()) {
+            Alarm alarmItem = (Alarm) alarmsIterator.next();
+            doCancelAlarm(alarmItem);
         }
 
     }
 
-    private void cancelNoticeAlarm(ArrayList<NoticeContent> var1) {
-        Iterator var2 = var1.iterator();
+    private void doCancelAlarm(Alarm alarmItem) {
+        String time = alarmItem.time;
+        String week = alarmItem.week;
+        String ring = alarmItem.ring;
+        String name = alarmItem.name;
+        ICLogger.d("alarmItem  ==> " + alarmItem);
+        if (!TextUtils.isEmpty(week)) {
+            week = week.replace("W", "");
+        }
+        char[] result = week.toCharArray();
+        int length = result.length;
+        for (int i = 1; i < length; ++i) {
+            char weekItem = result[i];
+            ICLogger.d("cancel alarm ==> " + alarmItem);
+            this.mAlarmManager.cancel(this.getPendingIntent(time, week,
+                    ring, name, weekItem - 47, 0, false));
+        }
+    }
 
-        while (var2.hasNext()) {
-            NoticeContent var3 = (NoticeContent) var2.next();
+    private void cancelNoticeAlarm(ArrayList<NoticeContent> var1) {
+        Iterator noticesIterator = var1.iterator();
+        while (noticesIterator.hasNext()) {
+            NoticeContent var3 = (NoticeContent) noticesIterator.next();
             String var4 = var3.noticeTime;
             String var9 = var3.noticeName;
             String var5 = var3.noticeNumber;
@@ -252,17 +265,18 @@ public class SilentManager extends AbstractInvokeHandlerService {
                                            String ring,
                                            String name,
                                            int dayOfWeek, long tmpTimeInMillis, boolean repeat) {
-        StringBuilder args = new StringBuilder("alarm:");
-        args.append(time);
-        args.append(",");
-        args.append(week);
-        args.append(",");
-        args.append(ring);
-        args.append(",");
-        args.append(name);
-        args.append(",");
-        args.append(dayOfWeek);
-        week = args.toString();
+        StringBuilder sb = new StringBuilder("alarm:");
+        sb.append(time);
+        sb.append(",");
+        sb.append(week);
+        sb.append(",");
+        sb.append(ring);
+        sb.append(",");
+        sb.append(name);
+        sb.append(",");
+        sb.append(dayOfWeek);
+        week = sb.toString();
+        ICLogger.d("alarm data == > " + week);
         Intent intent = new Intent(this.mContext, CoreService.class);
         intent.setAction(ACTION_IC_ALARM);
         intent.putExtra("IS_REPEAT", repeat);
@@ -652,7 +666,7 @@ public class SilentManager extends AbstractInvokeHandlerService {
     }
 
 
-    private List<Alarm> queryAlarm() {
+    public List<Alarm> queryAlarm() {
         List<Alarm> alarmList = this.mDbHelper.queryAlarm();
         if (!this.mInSilent) {
             if (this.alarms != null) {
@@ -758,7 +772,6 @@ public class SilentManager extends AbstractInvokeHandlerService {
 
     private void setNewNoticeAlarm(ArrayList<NoticeContent> var1) {
         Iterator var19 = var1.iterator();
-
         while (var19.hasNext()) {
             NoticeContent var2 = (NoticeContent) var19.next();
             String var3 = var2.noticeTime;
@@ -814,24 +827,17 @@ public class SilentManager extends AbstractInvokeHandlerService {
         } else {
             var4 = "OFF";
         }
-
         var3.upDateorInsertDeviceStatus(var4);
         this.handSilence(this.mContext, this.mInSilent);
-    /*
-    this.stheartRateList = this.queryStheartRate();
-    this.getStartAndEndStheartRateTime();
-    this.mIsStheartRate = this.isStheartRateTime(false);
-     */
         this.alarms = this.queryAlarm();
         this.voiceNotice = this.queryNotice();
         runtime.getContextProxy().context.getContentResolver().registerContentObserver(ICContentProvider.SILENT_URI, false, this.mContentObserver);
-        this.mAlarmReceiver = new SilentManager.AlramReceiver();
-        IntentFilter var5 = new IntentFilter();
-        var5.addAction(ACTION_NOTICE_ALARM_CHANGE);
-        var5.addAction(ACTION_ALARM_ALARM_CHANGE);
-        //  var5.addAction("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE");
-        // var5.addAction("com.eqc.heartrate.action.RESULT");
-        this.mContext.registerReceiver(this.mAlarmReceiver, var5);
+        this.mAlarmReceiver = new AlarmReceiver();
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(ACTION_NOTICE_ALARM_CHANGE);
+        intentFilter.addAction(ACTION_ALARM_ALARM_CHANGE);
+        intentFilter.addAction(ACTION_ALARM_DELETE_ALARM);
+        this.mContext.registerReceiver(this.mAlarmReceiver, intentFilter);
         runtime.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32);
     }
 
@@ -913,12 +919,12 @@ public class SilentManager extends AbstractInvokeHandlerService {
         return false;
     }
 
-    class AlramReceiver extends BroadcastReceiver {
-        AlramReceiver() {
+    class AlarmReceiver extends BroadcastReceiver {
+        AlarmReceiver() {
         }
 
-        public void onReceive(Context var1, Intent var2) {
-            String action = var2.getAction();
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
             StringBuilder var3 = new StringBuilder();
             var3.append("action = ");
             var3.append(action);
@@ -937,9 +943,9 @@ public class SilentManager extends AbstractInvokeHandlerService {
                 SilentManager.this.getStartAndEndStheartRateTime();
                 SilentManager.this.isStheartRateTime(false);
             } else if ("com.eqc.heartrate.action.RESULT".equals(action)) {
-                String time = var2.getStringExtra("time");
-                int var4 = var2.getIntExtra("value", 0);
-                int var5 = var2.getIntExtra("type", 0);
+                String time = intent.getStringExtra("time");
+                int var4 = intent.getIntExtra("value", 0);
+                int var5 = intent.getIntExtra("type", 0);
                 StringBuilder var7 = new StringBuilder();
                 var7.append("(");
                 var7.append(time);
@@ -948,12 +954,43 @@ public class SilentManager extends AbstractInvokeHandlerService {
                 var7.append("@");
                 var7.append(var5);
                 var7.append(")");
-                time = var7.toString();
-//        SilentManager.this.mConnection.send(API.H60(SilentManager.this.mRuntime, var6));
             } else if (ACTION_ANTIOFF_ALARM_CHANGE.equals(action)) {
                 SilentManager.this.sAntioffList = SilentManager.this.queryAntioff();
                 SilentManager.this.getStartAndEndSantioffTime();
                 SilentManager.this.mIsNeedAntioff = SilentManager.this.isAntioffTime(false);
+            } else if (ACTION_ALARM_DELETE_ALARM.equals(action)) {
+                //刪除闹钟
+                //获取到闹钟的ID,然后进行删除
+                String alarmId = intent.getStringExtra("alarmId");
+                ICLogger.d("delete alarmId ==> " + alarmId);
+                //查询出来,然后进行删除
+                Cursor query = context.getContentResolver().query(Uri.parse(ICAlarmProvider.ALARMS),
+                        null, "_id=?", new String[]{alarmId}, null);
+                if (query != null) {
+                    while (query.moveToNext()) {
+                        Alarm item = new Alarm();
+                        String id = query.getString(0);
+                        String time = query.getString(1);
+                        String week = query.getString(2);
+                        String ring = query.getString(3);
+                        String status = query.getString(4);
+                        String name = query.getString(5);
+                        String notifyLager = query.getString(6);
+                        item.id = id;
+                        item.time = time;
+                        item.week = week;
+                        item.ring = ring;
+                        item.status = status;
+                        item.name = name;
+                        item.laterRing = notifyLager;
+                        ICLogger.d("alarm is == > " + item);
+                        doCancelAlarm(item);
+                        int delete = context.getContentResolver().delete(Uri.parse(ICAlarmProvider.ALARMS),
+                                "_id=?", new String[]{alarmId});
+                        ICLogger.d("delete alarm ==|||=> " + delete);
+                    }
+                    query.close();
+                }
             }
 
         }
index 501c347..581e0bd 100644 (file)
@@ -36,30 +36,25 @@ public class ICLogger {
 
     private static String getFunctionName() {
         StackTraceElement[] currentStack = Thread.currentThread().getStackTrace();
-        if (currentStack == null) {
-            return null;
-        } else {
-            int stackLen = currentStack.length;
-
-            for (int i = 0; i < stackLen; ++i) {
-                StackTraceElement stackElement = currentStack[i];
-                if (!stackElement.isNativeMethod() && !stackElement.getClassName().equals(Thread.class.getName()) && !stackElement.getClassName().equals(ICLogger.class.getName())) {
-                    StringBuilder sb = new StringBuilder();
-                    sb.append("[ ");
-                    sb.append(Thread.currentThread().getName());
-                    sb.append(": ");
-                    sb.append(stackElement.getFileName());
-                    sb.append(":");
-                    sb.append(stackElement.getLineNumber());
-                    sb.append(" ");
-                    sb.append(stackElement.getMethodName());
-                    sb.append(" ]");
-                    return sb.toString();
-                }
+        int stackLen = currentStack.length;
+        for (int i = 0; i < stackLen; ++i) {
+            StackTraceElement stackElement = currentStack[i];
+            if (!stackElement.isNativeMethod() && !stackElement.getClassName().equals(Thread.class.getName()) && !stackElement.getClassName().equals(ICLogger.class.getName())) {
+                StringBuilder sb = new StringBuilder();
+                sb.append("[ ");
+                sb.append(Thread.currentThread().getName());
+                sb.append(": ");
+                sb.append(stackElement.getFileName());
+                sb.append(":");
+                sb.append(stackElement.getLineNumber());
+                sb.append(" ");
+                sb.append(stackElement.getMethodName());
+                sb.append(" ]");
+                return sb.toString();
             }
-
-            return null;
         }
+
+        return null;
     }
 
     /**
@@ -92,7 +87,6 @@ public class ICLogger {
             String filename = StorageUtils.getExternalStorageLogDir() + File.separator + "log.txt";
             logConfigurator.setFileName(filename);                // 日志存储路径,如果该路径没有会自动创建文件
             logConfigurator.setRootLevel(Level.ALL);
-
             logConfigurator.setLevel("log", Level.ALL);
 //        logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");// 设置文件输出模式
             logConfigurator.setFilePattern("%d %m%n ");// 设置文件输出模式
index cc03c30..3e9b9d6 100644 (file)
@@ -50,7 +50,6 @@ public class VibrateUtil {
             if (vibrator != null) {\r
                 patterOnce = new long[]{patter_item, 1000};\r
                 if (on)\r
-//                vibrator.vibrate(patter, 0);//一直循环\r
                     vibrator.vibrate(patterOnce, -1);//不循环\r
                 else\r
                     vibrator.cancel();\r
index 20bb1a9..a658937 100644 (file)
@@ -19,6 +19,7 @@ import android.telephony.CellInfoLte;
 import android.telephony.CellInfoWcdma;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+import android.util.Log;
 
 import com.enqualcomm.support.Config;
 import com.enqualcomm.support.Constants;
@@ -42,6 +43,7 @@ import com.enqualcomm.support.provider.ShootTextProvider;
 import com.enqualcomm.support.provider.WebSmsProvider;
 import com.enqualcomm.support.service.Deliver;
 import com.enqualcomm.support.service.HeartRateManager;
+import com.enqualcomm.support.service.SilentManager;
 import com.enqualcomm.support.utils.APNUtil;
 import com.enqualcomm.support.utils.CameraUtil;
 import com.enqualcomm.support.utils.Connection;
@@ -184,7 +186,6 @@ public class protocol_s123 {
         mConnection.send(stringMessage);
     }
 
-
     public enum CMD_TYPE {
         /*终端发起*/
         AP00,//登录包
@@ -810,6 +811,7 @@ public class protocol_s123 {
     }
 
     public static StringMessage AP03(Runtime ds) {
+        ICLogger.d("创建心跳内容 ==> " + Log.getStackTraceString(new Throwable()));
         //IWAP03,06000908000102,5555,30,1200#
         //IWAP03,06000908000102,5555,30#
         //IW: 标识符
@@ -828,7 +830,6 @@ public class protocol_s123 {
         //30: 翻滚次数
         //获取一下卡路里
         ds.getContextProxy().context.sendBroadcast(new Intent("com.ic.action.GET_PED_COUNT"));
-        //TODO:可能要稍等一下
         ContentResolver resolver = ds.getContextProxy().getResolver();
         Cursor query = resolver.query(Uri.parse(ICGlobalSettingsProvider.SETTINGS),
                 new String[]{"s_value"}, "s_key=?", new String[]{"sport_calorie_value"}, null);
@@ -1427,11 +1428,8 @@ public class protocol_s123 {
                 }
             }//循环获取alarm数据结束
             runtime.getDbHelper().saveAlarm(alarmList);
-
-            //do clean and set alarm things
-
         }
-//IWBP85,867155030002145,410385,1,0,#
+        //IWBP85,867155030002145,410385,1,0,#
 
         String replacement = new StringBuilder("IWBP85,").append(imei).append(",").toString();
         String replycmd = cmd.replace(replacement, "");
@@ -3091,19 +3089,18 @@ public class protocol_s123 {
      * @param cmd
      */
     public void handleBPBT(Connection connection, Runtime runtime, String cmd) {
-/***
- * IWBPBT,353456789012345,080835,1#
- * 说明:设置蓝牙扫描周期,单位时间分钟
- * IW:标识符
- * BPBT : 命令字符
- * 353456789012345:IMEI号,设备唯一ID
- * 080835:指令流水号
- * 1: 扫描周期,对应单位为分钟
- * 设备响应:     IWAPBT,080835, 1#
- * 080835:指令流水号
- * 1: 剪断开关状态(实际上与下行的命令一致)
- */
-
+        /***
+         * IWBPBT,353456789012345,080835,1#
+         * 说明:设置蓝牙扫描周期,单位时间分钟
+         * IW:标识符
+         * BPBT : 命令字符
+         * 353456789012345:IMEI号,设备唯一ID
+         * 080835:指令流水号
+         * 1: 扫描周期,对应单位为分钟
+         * 设备响应:     IWAPBT,080835, 1#
+         * 080835:指令流水号
+         * 1: 剪断开关状态(实际上与下行的命令一致)
+         */
         log("BPBT " + cmd);
         String[] cmdlist = cmd.split(CMDSPLIT);
         if (cmdlist.length == 4) {
@@ -4204,6 +4201,14 @@ public class protocol_s123 {
             String substring = cmd.substring(cmdLen);
             String[] alarmItemArray = substring.split("@");
             ContentResolver resolver = mRuntime.getContextProxy().getResolver();
+            //删除之前先取消已经设置的闹钟
+            List<Alarm> alarmList = mRuntime.getDbHelper().queryIcAlarm();
+            if (alarmList == null || alarmList.size() == 0) {
+                //如果没有的话就去另外一个获取
+                alarmList = SilentManager.getInstance().queryAlarm();
+            }
+            //取消掉上次的闹钟,再进行设置新的
+            SilentManager.getInstance().cancelAlarm(alarmList);
             //闹钟下发,也是要清空闹钟的
             resolver.delete(Uri.parse(ICAlarmProvider.ALARMS), null, null);
             for (String itemStr : alarmItemArray) {
@@ -4229,7 +4234,13 @@ public class protocol_s123 {
                     continue;
                 }
                 //添加到闹钟数据库中
-                Alarm alarmItem = new Alarm("ST" + alarmTime.substring(0, 2) + "." + alarmTime.substring(2),
+                String hour = alarmTime.substring(0, 2);
+                String minute = alarmTime.substring(2);
+                if (TextUtils.isEmpty(hour) || TextUtils.isEmpty(minute)) {
+                    ICLogger.d("date ERROR...");
+                    continue;
+                }
+                Alarm alarmItem = new Alarm("ST" + hour + "." + minute,
                         "W" + weekItem, "CON", "1".equals(isOpen) ? "ON" : "OFF", alarmName);
                 ICLogger.d("alarmItem == > " + alarmName);
                 //入库
index 279a33d..2056bda 100644 (file)
@@ -2,6 +2,7 @@ package com.ic.view.webmsgresponse;
 
 import android.content.ContentResolver;
 import android.content.Context;
+import android.database.ContentObserver;
 import android.database.Cursor;
 import android.net.Uri;
 import android.support.v4.view.ViewPager;
@@ -102,8 +103,19 @@ public class WebMsgView {
         //添加到Window里
         initShootData();
         windowManager.addView(view, layoutParams);
+        contentResolver.registerContentObserver(Uri.parse(ShootTextProvider.SHOOT_TEXT),
+                true, observer);
     }
 
+    private final ContentObserver observer = new ContentObserver(null) {
+
+        @Override
+        public void onChange(boolean selfChange) {
+            initShootData();
+        }
+
+    };
+
     public void setShowMsg(String text) {
         this.currentText = text;
         //设置要显示的消息
@@ -114,6 +126,7 @@ public class WebMsgView {
     }
 
     public void dismiss() {
+        contentResolver.unregisterContentObserver(observer);
         windowManager.removeView(view);
         executorService.shutdown();
         executorService = null;