add alarm provider.
authorTrillGates <williamtrillgates@gmail.com>
Fri, 25 Jun 2021 08:27:02 +0000 (16:27 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Fri, 25 Jun 2021 08:27:02 +0000 (16:27 +0800)
app/src/main/AndroidManifest.xml
app/src/main/java/com/enqualcomm/support/bean/Alarm.java
app/src/main/java/com/enqualcomm/support/provider/FZDAlarmProvider.java [new file with mode: 0644]
app/src/main/java/com/enqualcomm/support/provider/FZDDatabaseHelper.java
app/src/main/java/com/ic/protocols/protocol_fzd.java
app/src/main/java/com/ic/protocols/protocol_ic.java
app/version_code.properties

index e7380f5..91c42f4 100644 (file)
             android:authorities="com.ic.fzd.settings"
             android:exported="true" />
 
+
+        <provider
+            android:name=".provider.FZDAlarmProvider"
+            android:authorities="com.ic.provider.alarm"
+            android:exported="true" />
+
         <provider
             android:name=".provider.AiInfoProvider"
             android:authorities="com.ic.ai.info"
index bba17a7..7491111 100644 (file)
@@ -7,6 +7,7 @@ public class Alarm {
     public String time;\r
     //星期是1~7\r
     public String week;\r
+    public String laterRing;\r
 \r
     public Alarm(String _time, String _week, String _ring, String _status) {\r
         this.time = _time;\r
diff --git a/app/src/main/java/com/enqualcomm/support/provider/FZDAlarmProvider.java b/app/src/main/java/com/enqualcomm/support/provider/FZDAlarmProvider.java
new file mode 100644 (file)
index 0000000..594f9b2
--- /dev/null
@@ -0,0 +1,128 @@
+package com.enqualcomm.support.provider;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.UriMatcher;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.net.Uri;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+
+public class FZDAlarmProvider extends ContentProvider {
+
+    private static UriMatcher sUriMatcher;
+    private static final int MATH_CODE_TABLE = 1;
+
+    public static final String PATH = "alarm";
+    public static final String AUTHORITY = "com.ic.provider.alarm";
+    public static final String ALARMS = "content://" + AUTHORITY + "/" + PATH;
+
+    static {
+        sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
+        sUriMatcher.addURI(AUTHORITY, PATH, MATH_CODE_TABLE);
+    }
+
+    private FZDDatabaseHelper mDatabase;
+
+    @Override
+    public boolean onCreate() {
+        mDatabase = new FZDDatabaseHelper(getContext());
+        return false;
+    }
+
+    /**
+     * 查询数据
+     *
+     * @param uri
+     * @param projection
+     * @param selection
+     * @param selectionArgs
+     * @param sortOrder
+     * @return
+     */
+    @Nullable
+    @Override
+    public Cursor query(@NonNull Uri uri,
+                        @Nullable String[] projection,
+                        @Nullable String selection,
+                        @Nullable String[] selectionArgs,
+                        @Nullable String sortOrder) {
+        //匹配规则
+        int match = sUriMatcher.match(uri);
+        SQLiteDatabase readableDatabase = mDatabase.getReadableDatabase();
+        if (match == MATH_CODE_TABLE) {
+            return readableDatabase.query(FZDDatabaseHelper.tb_alarm,
+                    projection,
+                    selection,
+                    selectionArgs,
+                    null, null, sortOrder);
+        }
+        return null;
+    }
+
+    @Nullable
+    @Override
+    public String getType(@NonNull Uri uri) {
+        return null;
+    }
+
+    @Nullable
+    @Override
+    public Uri insert(@NonNull Uri uri,
+                      @Nullable ContentValues values) {
+        int match = sUriMatcher.match(uri);
+        if (match == MATH_CODE_TABLE) {
+            SQLiteDatabase writableDatabase = mDatabase.getWritableDatabase();
+            //判断是否有存在吧,确保唯一,删除再添加吧,否则也是添加不进去的
+            String alarmId = values.getAsString(FZDDatabaseHelper.alarm_id);
+            if (!TextUtils.isEmpty(alarmId)) {
+                writableDatabase.delete(FZDDatabaseHelper.tb_alarm,
+                        FZDDatabaseHelper.alarm_id + "=?", new String[]{
+                                values.getAsString(alarmId)
+                        });
+            }
+            long insert = writableDatabase.insert(FZDDatabaseHelper.tb_alarm, null, values);
+            if (getContext() != null) {
+                getContext().getContentResolver().notifyChange(uri, null);
+            }
+            return Uri.parse(AUTHORITY + "/" + PATH + "/" + insert);
+        }
+        return null;
+    }
+
+
+    @Override
+    public int delete(@NonNull Uri uri,
+                      @Nullable String selection,
+                      @Nullable String[] selectionArgs) {
+        int match = sUriMatcher.match(uri);
+        if (match == MATH_CODE_TABLE) {
+            SQLiteDatabase writableDatabase = mDatabase.getWritableDatabase();
+            int delete = writableDatabase.delete(FZDDatabaseHelper.tb_alarm, selection, selectionArgs);
+            if (getContext() != null) {
+                getContext().getContentResolver().notifyChange(uri, null);
+            }
+            return delete;
+        }
+        return 0;
+    }
+
+    @Override
+    public int update(@NonNull Uri uri,
+                      @Nullable ContentValues values,
+                      @Nullable String selection,
+                      @Nullable String[] selectionArgs) {
+        int match = sUriMatcher.match(uri);
+        if (match == MATH_CODE_TABLE) {
+            SQLiteDatabase writableDatabase = mDatabase.getWritableDatabase();
+            int update = writableDatabase.update(FZDDatabaseHelper.tb_alarm, values, selection, selectionArgs);
+            if (getContext() != null) {
+                getContext().getContentResolver().notifyChange(uri, null);
+            }
+            return update;
+        }
+        return 0;
+    }
+}
index ed34b72..1cb395b 100644 (file)
@@ -84,8 +84,8 @@ public class FZDDatabaseHelper extends SQLiteOpenHelper {
     public static final String flId = "_id";
     public static final String flState = "state";
     public static final String flCount = "count";
-    public static final String flCreateTime = "create_time";
-    public static final String flUpdateTime = "update_time";
+    public static final String createTime = "create_time";
+    public static final String updateTime = "update_time";
 
     public interface FollowState {
         int unread = 0;
@@ -159,9 +159,9 @@ public class FZDDatabaseHelper extends SQLiteOpenHelper {
                 " integer, " +
                 flCount +
                 " integer, " +
-                flCreateTime +
+                createTime +
                 " date, " +
-                flUpdateTime +
+                updateTime +
                 " date)";
         ICLogger.d(createFollow);
         db.execSQL(createFollow);
@@ -181,8 +181,45 @@ public class FZDDatabaseHelper extends SQLiteOpenHelper {
                 " date)";
         ICLogger.d(createSettings);
         db.execSQL(createSettings);
+        //創建闹钟表
+        String createAlarms = "create table " +
+                tb_alarm +
+                " (" +
+                alarm_id +
+                " integer primary key autoincrement, " +
+                alarm_time +
+                " text, " +
+                alarm_week +
+                " text, " +
+                alarm_ring +
+                " text, " +
+                alarm_status +
+                " text, " +
+                alarm_name +
+                " text, " +
+                alarm_later +
+                " text, " +
+                sCreateTime +
+                " date, " +
+                sUpdateTime +
+                " date)";
+        ICLogger.d(createAlarms);
+        db.execSQL(createAlarms);
     }
 
+
+    //闹钟数据库
+    //_id,时间,循环星期,铃声,状态,名称
+    public static final String tb_alarm = "alarm";
+    public static final String alarm_id = "_id";
+    public static final String alarm_time = "time";
+    public static final String alarm_week = "week";
+    public static final String alarm_ring = "ring";
+    public static final String alarm_status = "status";
+    public static final String alarm_name = "name";
+    public static final String alarm_later = "alarm_later";
+
+
     @Override
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         //升级数据库
index 2168f50..4bfebee 100644 (file)
@@ -2246,8 +2246,8 @@ public class protocol_fzd {
             ContentValues contentValues = new ContentValues();
             contentValues.put(FZDDatabaseHelper.flState, FZDDatabaseHelper.FollowState.unread);
             contentValues.put(FZDDatabaseHelper.flCount, count);
-            contentValues.put(FZDDatabaseHelper.flCreateTime, System.currentTimeMillis());
-            contentValues.put(FZDDatabaseHelper.flUpdateTime, System.currentTimeMillis());
+            contentValues.put(FZDDatabaseHelper.createTime, System.currentTimeMillis());
+            contentValues.put(FZDDatabaseHelper.updateTime, System.currentTimeMillis());
             runtime.getContextProxy().getResolver().insert(
                     Uri.parse(FZDFollowProvider.FOLLOW),
                     contentValues
index f8b4385..d6e7cfd 100644 (file)
@@ -23,6 +23,7 @@ import com.enqualcomm.support.bean.Runtime;
 import com.enqualcomm.support.bean.StringMessage;
 import com.enqualcomm.support.bean.VoiceContent;
 import com.enqualcomm.support.bean.voicePacket;
+import com.enqualcomm.support.provider.FZDAlarmProvider;
 import com.enqualcomm.support.provider.FZDDatabaseHelper;
 import com.enqualcomm.support.provider.FZDSettingsProvider;
 import com.enqualcomm.support.service.HeartRateManager;
@@ -330,7 +331,7 @@ public class protocol_ic {
         mRuntime = runtime;
     }
 
-    private StringBuffer cmdbuf = new StringBuffer();
+    private StringBuffer cmdBuf = new StringBuffer();
 
     /*
     输入的字符串,如果有完整命令,返回 命令名
@@ -391,12 +392,12 @@ public class protocol_ic {
         String cmd_msgbuf = new String(bytes);
         ICLogger.d("bytes.size " + bytes.length);
         //cmdbuf.append(cmd_msgbuf);
-        cmdbuf.append(cmd_msgbuf);
-        ICLogger.d("cmdbuf.size " + cmdbuf.length() + " " + cmdbuf.toString());
+        cmdBuf.append(cmd_msgbuf);
+        ICLogger.d("cmdbuf.size " + cmdBuf.length() + " " + cmdBuf.toString());
         /*
         如果不是 #结尾,就认为 接收数据不全,置位。
          */
-        if (cmdbuf.toString().endsWith(CMDEND)) {
+        if (cmdBuf.toString().endsWith(CMDEND)) {
             iscmdComplete = true;
         }
         String[] cmdlist = cmd_msgbuf.split(CMDEND);
@@ -428,7 +429,7 @@ public class protocol_ic {
             }
         }
 
-        cmdbuf = new StringBuffer().append(last_inCompletecmd);
+        cmdBuf = new StringBuffer().append(last_inCompletecmd);
         return ret;
     }
 
@@ -3432,6 +3433,9 @@ public class protocol_ic {
             cmdLen += alarmCount.length() + 1;
             String substring = cmd.substring(cmdLen);
             String[] alarmItemArray = substring.split("@");
+            ContentResolver resolver = mRuntime.getContextProxy().getResolver();
+            //闹钟下发,也是要清空闹钟的
+            resolver.delete(Uri.parse(FZDAlarmProvider.ALARMS), null, null);
             for (String itemStr : alarmItemArray) {
                 ICLogger.d("itemStr==> " + itemStr);
                 String[] itemDetail = itemStr.split(CMDSPLIT);
@@ -3447,8 +3451,29 @@ public class protocol_ic {
                 //第四个是开关
                 String isOpen = itemDetail[3];
                 ICLogger.d("isOpen == > " + isOpen);
+                //如果是全部关闭,那么所有的闹钟都会为0
+                if ("0".equals(isAllOpen)) {
+                    isOpen = "0";
+                }
+                if (TextUtils.isEmpty(alarmTime)) {
+                    continue;
+                }
                 //添加到闹钟数据库中
+                Alarm alarmItem = new Alarm("ST" + alarmTime.substring(0, 2) + "." + alarmTime.substring(2),
+                        "W" + weekItem, "CON", "1".equals(isOpen) ? "ON" : "OFF", alarmName);
+                ICLogger.d("alarmItem == > " + alarmName);
+                //设置闹钟
                 //TODO:
+                //入库
+                ContentValues contentValues = new ContentValues();
+                contentValues.put(FZDDatabaseHelper.alarm_name, alarmItem.name);
+                contentValues.put(FZDDatabaseHelper.alarm_week, alarmItem.week);
+                contentValues.put(FZDDatabaseHelper.alarm_ring, alarmItem.ring);
+                contentValues.put(FZDDatabaseHelper.alarm_time, alarmItem.time);
+                contentValues.put(FZDDatabaseHelper.alarm_status, alarmItem.status);
+                contentValues.put(FZDDatabaseHelper.updateTime, System.currentTimeMillis());
+                contentValues.put(FZDDatabaseHelper.createTime, System.currentTimeMillis());
+                resolver.insert(Uri.parse(FZDAlarmProvider.ALARMS), contentValues);
             }
         } catch (Exception e) {
             e.printStackTrace();
index fa513ec..2d557e0 100644 (file)
@@ -1,5 +1,5 @@
-#Thu Jun 24 11:46:15 CST 2021
+#Fri Jun 25 15:34:00 CST 2021
 >>>>>>>=b405d1184f3616d4e894d199cee0eb91613a68db
-VERSION_CODE=843
-=\=\=\=\=\=\=
+VERSION_CODE=854
 <<<<<<<=HEAD
+=\=\=\=\=\=\=