completed silent time config.
authorTrillGates <williamtrillgates@gmail.com>
Tue, 14 Sep 2021 06:58:04 +0000 (14:58 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Tue, 14 Sep 2021 06:58:04 +0000 (14:58 +0800)
app/src/main/java/com/enqualcomm/support/MainActivity.java
app/src/main/java/com/enqualcomm/support/provider/ICGlobalSettingsProvider.java
app/src/main/java/com/enqualcomm/support/service/SilentManager.java
app/src/main/java/com/ic/protocols/protocol_fzd.java

index 332328d..8dfb322 100644 (file)
@@ -86,7 +86,6 @@ public class MainActivity extends Activity {
 
      //   tesetSharedKey();
 
-
 //               SimSignalUtil.send_at_to_onoff_simcard(CoreService.getInstance().runtime));
 
 //        tbtnblood.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
index 436e561..477dab6 100644 (file)
@@ -10,8 +10,6 @@ import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.text.TextUtils;
 
-import com.enqualcomm.support.utils.ICLogger;
-
 /**
  * 全局配置的内容提供者
  * 保存数据keyValue的形式
@@ -67,10 +65,10 @@ public class ICGlobalSettingsProvider extends ContentProvider {
     @Override
     public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
         int match = sUriMatcher.match(uri);
-        ICLogger.d("match code == > " + match);
+        //ICLogger.d("match code == > " + match);
         if (match == MATH_CODE_TABLE && values != null) {
             String key = (String) values.get(ICDatabaseHelper.sKey);
-            ICLogger.d("key == > " + key);
+            //ICLogger.d("key == > " + key);
             SQLiteDatabase writableDatabase = mDatabase.getWritableDatabase();
             if (!TextUtils.isEmpty(key)) {
                 Cursor query = writableDatabase.query(ICDatabaseHelper.tSettings,
@@ -78,14 +76,14 @@ public class ICGlobalSettingsProvider extends ContentProvider {
                         null, null, null);
                 Uri targetUri;
                 if (query != null && query.moveToNext()) {
-                    ICLogger.d("do update == > " + key);
+                    //ICLogger.d("do update == > " + key);
                     writableDatabase.update(ICDatabaseHelper.tSettings,
                             values, ICDatabaseHelper.sKey + "=?",
                             new String[]{key});
                     targetUri = Uri.parse(SETTINGS + "/" + query.getInt(query.getColumnIndex(ICDatabaseHelper.sId)));
                     query.close();
                 } else {
-                    ICLogger.d("do insert == > " + key);
+                    //ICLogger.d("do insert == > " + key);
                     //为了确保key唯一,没有在sql上加约束,所以先查询一下吧。如果有就走更新
                     long rowId = writableDatabase.insert(ICDatabaseHelper.tSettings,
                             null, values);
index a5d7621..05276f9 100644 (file)
@@ -477,13 +477,6 @@ public class SilentManager extends AbstractInvokeHandlerService {
     //设置下一个改变值的Alarm
     //Alarm的前缀段是:500,后缀段是id组成alarm的requestCode
     public void handleSilentFromDb() {
-        //当前时间小时,分钟,当前星期
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(new Date());
-        int hour = calendar.get(Calendar.HOUR_OF_DAY);
-        int minute = calendar.get(Calendar.MINUTE);
-        int week = calendar.get(Calendar.DAY_OF_WEEK);
-        ICLogger.d("current hour ==> " + hour + " minute ==> " + minute + " week ==> " + week);
         //遍历数据
         Cursor query = mContext.getContentResolver().query(Uri.parse(ICForbiddenProvider.FORBIDDEN), null, null, null, null);
         if (query != null) {
@@ -543,12 +536,38 @@ public class SilentManager extends AbstractInvokeHandlerService {
                     } else {
                         this.cancelSilentAlarmById(idValue, weekValue);
                     }
-                    //判断当前是否需要开启,设置config里的比状态即可
-                    if (hour >= startHour && hour <= endHour && minute >= startMinute && minute <= endMinute) {
+
+                    //当前时间小时,分钟,当前星期
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(new Date());
+                    int weekIndex = calendar.get(Calendar.DAY_OF_WEEK);
+                    ICLogger.d("weekIndex ==> " + weekIndex);
+                    if (weekValue.contains(String.valueOf(weekIndex))) {
+                        long currentTime = calendar.getTimeInMillis();
+                        //开始时间
+                        Calendar startCalendar = Calendar.getInstance();
+                        startCalendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get
+                                (Calendar.DAY_OF_MONTH), startHour, startMinute, 0);
+                        long startMillis = startCalendar.getTimeInMillis();
+
+                        //结束时间
+                        Calendar endCalendar = Calendar.getInstance();
+                        endCalendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get
+                                (Calendar.DAY_OF_MONTH), endHour, endMinute, 0);
+                        long endMillis = endCalendar.getTimeInMillis();
+
+                        ICLogger.d("currentTime ==> " + currentTime
+                                + " startMillis==> " + startMillis
+                                + " endMillis==> " + endMillis);
+                        //判断当前是否需要开启,设置config里的比状态即可
                         //修改Config和Settings
-                        updateSettingAsSilent(true);
-                    } else {
-                        updateSettingAsSilent(false);
+                        //在时间段内,如果是OFF的话还是会false
+                        if (currentTime >= startMillis && currentTime <= endMillis
+                                && "ON".equals(statusValue)) {
+                            updateSettingAsSilent(true);
+                        } else {
+                            updateSettingAsSilent(false);
+                        }
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
@@ -556,6 +575,7 @@ public class SilentManager extends AbstractInvokeHandlerService {
             }
             query.close();
         }
+
     }
 
     public static final String SILENT_KEY = "is_force_to_silent";
index 1cddb37..105ac10 100644 (file)
@@ -2336,17 +2336,20 @@ public class protocol_fzd {
      */
     private void handleSettings(CMD_TYPE cmd, String data, Runtime mRuntime) {
         ICLogger.d(cmd + " trigger setting --> " + data);
+        //设置数据入库
         ContentResolver resolver = mRuntime.getContextProxy().getResolver();
         ContentValues values = new ContentValues();
         values.put(ICDatabaseHelper.sKey, cmdMap.get(cmd));
         values.put(ICDatabaseHelper.sValue, data);
         resolver.insert(Uri.parse(ICGlobalSettingsProvider.SETTINGS), values);
-        if (data.equals("1")) {
-            Util.setSystemProperties("persist.sys.whitelist.enable", "true");
-        } else {
-            Util.setSystemProperties("persist.sys.whitelist.enable", "false");
+        if (cmd == CMD_TYPE.WLKEY) {
+            if (data.equals("1")) {
+                Util.setSystemProperties("persist.sys.whitelist.enable", "true");
+            } else {
+                Util.setSystemProperties("persist.sys.whitelist.enable", "false");
+            }
+            ICLogger.i("收到服务器指令:白名单" + (data.equals("1") ? "开" : "关"));
         }
-        ICLogger.i("收到服务器指令:白名单" + (data.equals("1") ? "开" : "关"));
     }
 
     /**