修复仍然有时 设置不循环的闹铃不起效的问题。
authorsnicker <snickersun@163.com>
Wed, 25 Mar 2020 17:15:30 +0000 (01:15 +0800)
committersnicker <snickersun@163.com>
Wed, 25 Mar 2020 17:15:30 +0000 (01:15 +0800)
app/src/main/java/com/enqualcomm/support/service/SilentManager.java

index 97932b1..a0a7928 100644 (file)
@@ -33,14 +33,18 @@ import com.enqualcomm.support.utils.SharPreferenceUtil;
 import com.enqualcomm.support.utils.TimeUtil;\r
 import java.util.ArrayList;\r
 import java.util.Calendar;\r
+import java.util.Date;\r
 import java.util.Iterator;\r
 \r
 import static android.telephony.TelephonyManager.CALL_STATE_OFFHOOK;\r
 import static android.telephony.TelephonyManager.CALL_STATE_RINGING;\r
+import static com.enqualcomm.support.Constants.ACTION_CARE_ALARM;\r
 import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;\r
 \r
 public class SilentManager extends AbstractInvokeHandlerService {\r
   private static final long ONE_WEEK = 604800000L;\r
+  private static final long ONE_DAY = 86400000L;\r
+\r
   private ArrayList<Alarm> alarms;\r
   private boolean haveHandSilence;\r
   private boolean isCalling;\r
@@ -164,7 +168,7 @@ public class SilentManager extends AbstractInvokeHandlerService {
     var6.append(var5);\r
     var2 = var6.toString();\r
     Intent var7 = new Intent(this.mContext, CoreService.class);\r
-    var7.setAction("com.enqualcomm.support.ACTION_CARE_ALARM");\r
+    var7.setAction(ACTION_CARE_ALARM);\r
     var7.setData(Uri.parse(var2));\r
     return PendingIntent.getService(this.mContext, 0, var7, PendingIntent.FLAG_UPDATE_CURRENT);\r
   }\r
@@ -298,16 +302,16 @@ public class SilentManager extends AbstractInvokeHandlerService {
     this.isStheartRateTime(var2);\r
   }\r
 \r
-  private boolean haveStartActivity(Context var1) {\r
-    int var2 = ((TelephonyManager)var1.getSystemService(Context.TELEPHONY_SERVICE)).getCallState();\r
-    boolean var3;\r
-    if (CALL_STATE_RINGING != var2 && CALL_STATE_OFFHOOK != var2) {\r
-      var3 = true;\r
+  private boolean isIdle(Context context) {\r
+    int callstate = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getCallState();\r
+    boolean isidle;\r
+    if (CALL_STATE_RINGING != callstate && CALL_STATE_OFFHOOK != callstate) {\r
+      isidle = true;\r
     } else {\r
-      var3 = false;\r
+      isidle = false;\r
     }\r
 \r
-    return var3 && !this.mInSilent && !this.mRuntime.getBatteryLow();\r
+    return isidle && !this.mInSilent && !this.mRuntime.getBatteryLow();\r
   }\r
 \r
   private boolean isAntioffTime(boolean var1) {\r
@@ -574,6 +578,8 @@ public class SilentManager extends AbstractInvokeHandlerService {
             if (tmpTimeInMillis <= currentTime) {\r
               tmpTimeInMillis += ONE_WEEK;\r
             }\r
+              Date date = new Date(tmpTimeInMillis);\r
+              ICLogger.i("set date "+date.toLocaleString());\r
             PendingIntent pendingIntent = this.getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, dayofweek);\r
             AlarmHelper.setAlarm(this.mAlarmManager, tmpTimeInMillis, pendingIntent);\r
           }\r
@@ -582,8 +588,26 @@ public class SilentManager extends AbstractInvokeHandlerService {
           long tmpTimeInMillis;\r
 //          int dayofweek = weeklist[i] - 47;\r
 //          calendar.set(Calendar.DAY_OF_WEEK, dayofweek);\r
-          tmpTimeInMillis = calendar.getTimeInMillis();\r
-          PendingIntent pendingIntent = this.getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, 0);\r
+//          tmpTimeInMillis = calendar.getTimeInMillis();\r
+\r
+            Date date = new Date(System.currentTimeMillis());\r
+            ICLogger.i("date "+date.toLocaleString());\r
+            Calendar c = Calendar.getInstance();\r
+            c.setTime(date);\r
+            int wek = c.get(Calendar.DAY_OF_WEEK);\r
+            calendar.set(Calendar.DAY_OF_WEEK, wek);\r
+            tmpTimeInMillis = calendar.getTimeInMillis();\r
+            if (tmpTimeInMillis <= currentTime) {\r
+              tmpTimeInMillis += ONE_DAY;\r
+            }\r
+          date = new Date(tmpTimeInMillis);\r
+            c = Calendar.getInstance();\r
+          c.setTime(date);\r
+          wek = c.get(Calendar.DAY_OF_WEEK);\r
+\r
+            ICLogger.i("set date "+date.toLocaleString());\r
+\r
+            PendingIntent pendingIntent = this.getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, wek);\r
           AlarmHelper.setAlarmOnce(this.mAlarmManager, tmpTimeInMillis, pendingIntent);\r
         }\r
 \r
@@ -673,36 +697,38 @@ public class SilentManager extends AbstractInvokeHandlerService {
     this.mContext.unregisterReceiver(this.mAlramReceiver);\r
   }\r
 \r
+  @Override\r
   public boolean onUserRequest(Intent var1, Connection var2, Runtime var3) {\r
-    String var11 = var1.getAction();\r
-    if ("com.enqualcomm.support.ACTION_CARE_ALARM".equals(var11)) {\r
-      String var10 = var1.getDataString();\r
-      var11 = TimeUtil.getSystemTime();\r
-      var10.substring(6).split("\\.");\r
-      int var14 = Integer.parseInt(var10.substring(6).split("\\.")[1].substring(0, 2));\r
-      int var5 = Integer.parseInt(var10.substring(6).split("\\.")[0].substring(2));\r
-      String[] var12 = var11.split(";")[1].split(":");\r
-      int var6 = Integer.parseInt(var12[0]);\r
-      int var7 = Integer.parseInt(var12[1]);\r
-      if (var5 != var6 || var14 != var7) {\r
+    String action = var1.getAction();\r
+    if (ACTION_CARE_ALARM.equals(action)) {\r
+      String alarmTime = var1.getDataString();  //alarm:ST00.43,W,CON,闹铃,2\r
+      String currentTime = TimeUtil.getSystemTime();\r
+      alarmTime.substring(6).split("\\.");\r
+      int alarmTime_minutes = Integer.parseInt(alarmTime.substring(6).split("\\.")[1].substring(0, 2));\r
+      int alarmTime_hour = Integer.parseInt(alarmTime.substring(6).split("\\.")[0].substring(2));\r
+      String[] currentTimeArray = currentTime.split(";")[1].split(":");\r
+      int currentTime_hour = Integer.parseInt(currentTimeArray[0]);\r
+      int currentTime_minutes = Integer.parseInt(currentTimeArray[1]);\r
+      ICLogger.i("alarm time["+alarmTime_hour+":"+alarmTime_minutes+"], current time["+currentTime_hour+":"+currentTime_minutes+"]");\r
+      if (alarmTime_hour != currentTime_hour || alarmTime_minutes != currentTime_minutes) {\r
         return false;\r
       }\r
 \r
-      if (this.haveStartActivity(this.mContext)) {\r
+      if (this.isIdle(this.mContext)) {\r
         try {\r
-          Intent var13 = new Intent("com.enqualcomm.icare.ALARM", Uri.parse(var10));\r
-          var13.putExtra("closeAlarm", 0);\r
-          var13.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\r
-          this.mContext.startActivity(var13);\r
+          Intent intent = new Intent("com.enqualcomm.icare.ALARM", Uri.parse(alarmTime));\r
+            intent.putExtra("closeAlarm", 0);\r
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\r
+          this.mContext.startActivity(intent);\r
         } catch (Exception var9) {\r
           var9.printStackTrace();\r
         }\r
       }\r
-    } else if ("com.enqualcomm.support.ACTION_NOTICE_ALARM".equals(var11)) {\r
-      var11 = var1.getDataString();\r
-      if (this.haveStartActivity(this.mContext)) {\r
+    } else if ("com.enqualcomm.support.ACTION_NOTICE_ALARM".equals(action)) {\r
+        String alarmTime = var1.getDataString();\r
+      if (this.isIdle(this.mContext)) {\r
         try {\r
-          var1 = new Intent("com.enqualcomm.icare.NOTICE", Uri.parse(var11));\r
+          var1 = new Intent("com.enqualcomm.icare.NOTICE", Uri.parse(alarmTime));\r
           var1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);\r
           this.mContext.startActivity(var1);\r
         } catch (Exception var8) {\r
@@ -712,7 +738,7 @@ public class SilentManager extends AbstractInvokeHandlerService {
     } else {\r
       ICLogger.i("静默闹钟来了");\r
       boolean var4;\r
-      if (!"com.eqc.heartrate.action.SILENT_START".equals(var11) && !"com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START".equals(var11)) {\r
+      if (!"com.eqc.heartrate.action.SILENT_START".equals(action) && !"com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START".equals(action)) {\r
         var4 = false;\r
       } else {\r
         var4 = true;\r
@@ -724,12 +750,8 @@ public class SilentManager extends AbstractInvokeHandlerService {
     return false;\r
   }\r
 \r
-  public boolean onUserRequest(Message var1, Connection var2, Runtime var3) {\r
-    Messenger var4 = var1.replyTo;\r
-    if (var1.what == 1005) {\r
-      this.callback(var4, this.mInSilent);\r
-    }\r
-\r
+  @Override\r
+  public boolean onUserRequest(Message paramMessage, Connection paramConnection, Runtime paramRuntime) {\r
     return false;\r
   }\r
 \r