From: TrillGates Date: Mon, 13 Sep 2021 08:47:54 +0000 (+0800) Subject: try to completed silent time. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=2190476fa076c03995a9f4d7729503abe131edb7;p=icsupport.git try to completed silent time. --- diff --git a/app/src/main/java/com/enqualcomm/support/Constants.java b/app/src/main/java/com/enqualcomm/support/Constants.java index 13d07f74..e1d25a37 100644 --- a/app/src/main/java/com/enqualcomm/support/Constants.java +++ b/app/src/main/java/com/enqualcomm/support/Constants.java @@ -20,8 +20,9 @@ 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_ALARM_DELETE_ALARM_RESULT= "com.ic.alarm.action.DELETE_ALARM_RESULT"; + String ACTION_ALARM_DELETE_ALARM = "com.ic.alarm.action.DELETE_ALARM"; + String ACTION_ALARM_DELETE_ALARM_RESULT = "com.ic.alarm.action.DELETE_ALARM_RESULT"; + String ACTION_ALARM_SILENT2_UPDATE = "com.ic.alarm.action.SILENT2_UPDATE"; String ACTION_ANTIOFF_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE"; diff --git a/app/src/main/java/com/enqualcomm/support/ICApplication.java b/app/src/main/java/com/enqualcomm/support/ICApplication.java index d7dcf50e..2963fe5e 100644 --- a/app/src/main/java/com/enqualcomm/support/ICApplication.java +++ b/app/src/main/java/com/enqualcomm/support/ICApplication.java @@ -28,6 +28,7 @@ public class ICApplication extends Application { @Override public void onCreate() { super.onCreate(); + ICLogger.d("on ICProtocol application create...."); ICLogger.setContext(this.getApplicationContext()); String info = String.format("VERSION_CODE:%s, VERSION_NAME:%s", BuildConfig.VERSION_CODE, BuildConfig.VERSION_NAME); diff --git a/app/src/main/java/com/enqualcomm/support/provider/ICDatabaseHelper.java b/app/src/main/java/com/enqualcomm/support/provider/ICDatabaseHelper.java index 28c6e45d..4744ce91 100644 --- a/app/src/main/java/com/enqualcomm/support/provider/ICDatabaseHelper.java +++ b/app/src/main/java/com/enqualcomm/support/provider/ICDatabaseHelper.java @@ -339,9 +339,13 @@ public class ICDatabaseHelper extends SQLiteOpenHelper { public static final String tb_forbidden_time = "forbidden_time"; public static final String forbidden_id = "_id"; //开始时间 - public static final String forbidden_start = "start"; + public static final String forbidden_start = "start_time"; //结束时间 - public static final String forbidden_end = "end"; + public static final String forbidden_end = "end_time"; + //循环星期 + public static final String forbidden_week = "week"; + //当前状态 + public static final String forbidden_current_status = "current_status"; //开关状态 public static final String forbidden_status = "status"; //创建时间和更新时间 @@ -359,6 +363,10 @@ public class ICDatabaseHelper extends SQLiteOpenHelper { " text, " + forbidden_end + " text, " + + forbidden_week + + " text, " + + forbidden_current_status + + " text, " + forbidden_status + " text, " + forbidden_create_time + diff --git a/app/src/main/java/com/enqualcomm/support/provider/ICForbiddenProvider.java b/app/src/main/java/com/enqualcomm/support/provider/ICForbiddenProvider.java index 95d1f9b0..bc0d57e0 100644 --- a/app/src/main/java/com/enqualcomm/support/provider/ICForbiddenProvider.java +++ b/app/src/main/java/com/enqualcomm/support/provider/ICForbiddenProvider.java @@ -45,7 +45,7 @@ public class ICForbiddenProvider extends ContentProvider { int match = sUriMatcher.match(uri); if (match == MATCH_CODE) { SQLiteDatabase readableDatabase = mDatabase.getReadableDatabase(); - return readableDatabase.query(ICDatabaseHelper.tSettings, projection, + return readableDatabase.query(ICDatabaseHelper.tb_forbidden_time, projection, selection, selectionArgs, null, null, sortOrder); diff --git a/app/src/main/java/com/enqualcomm/support/service/SilentManager.java b/app/src/main/java/com/enqualcomm/support/service/SilentManager.java index ab6545ee..03b78d9e 100644 --- a/app/src/main/java/com/enqualcomm/support/service/SilentManager.java +++ b/app/src/main/java/com/enqualcomm/support/service/SilentManager.java @@ -10,10 +10,8 @@ import android.database.ContentObserver; import android.database.Cursor; import android.media.AudioManager; import android.net.Uri; -import android.os.Build; import android.os.Handler; import android.os.Message; -import android.os.Messenger; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.text.TextUtils; @@ -30,6 +28,8 @@ 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.provider.ICDatabaseHelper; +import com.enqualcomm.support.provider.ICForbiddenProvider; import com.enqualcomm.support.service.base.AbstractInvokeHandlerService; import com.enqualcomm.support.utils.AlarmHelper; import com.enqualcomm.support.utils.Connection; @@ -44,6 +44,7 @@ import com.enqualcomm.support.utils.VibrateUtil; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.Iterator; import java.util.List; @@ -52,6 +53,7 @@ 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_ALARM_DELETE_ALARM_RESULT; +import static com.enqualcomm.support.Constants.ACTION_ALARM_SILENT2_UPDATE; import static com.enqualcomm.support.Constants.ACTION_ANTIOFF_ALARM_CHANGE; import static com.enqualcomm.support.Constants.ACTION_CLOSE_UNREAD_MSG; import static com.enqualcomm.support.Constants.ACTION_IC_ALARM; @@ -180,23 +182,6 @@ public class SilentManager extends AbstractInvokeHandlerService { public SilentManager() { } - private void callback(Messenger var1, boolean var2) { - short var3; - if (var2) { - var3 = 600; - } else { - var3 = 700; - } - - if (var1 != null) { - try { - var1.send(Message.obtain((Handler) null, var3)); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(), e); - } - } - } public void cancelAlarm(List alarms) { for (Alarm alarmItem : alarms) { @@ -251,31 +236,6 @@ public class SilentManager extends AbstractInvokeHandlerService { return PendingIntent.getService(this.mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); } - private PendingIntent getPendingIntent(String time, - String week, - String ring, - String name, - int dayOfWeek, long tmpTimeInMillis, boolean repeat) { - 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); - intent.putExtra("TIME_STAMP", tmpTimeInMillis); - intent.setData(Uri.parse(week)); - return PendingIntent.getService(this.mContext, - 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); - } private PendingIntent getPendingIntent(String var1, String var2, String var3, String var4, String var5, String var6, String var7 @@ -623,17 +583,6 @@ public class SilentManager extends AbstractInvokeHandlerService { } - public static void setAlarmTime(Context context, long timeInMillis, Intent intent) { - AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); - PendingIntent sender = PendingIntent.getBroadcast(context, - intent.getIntExtra("id", 0), - intent, PendingIntent.FLAG_CANCEL_CURRENT); - int interval = (int) intent.getLongExtra("intervalMillis", 0); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - am.setWindow(AlarmManager.RTC_WAKEUP, timeInMillis, interval, sender); - } - } - public static void cancelAlarm(Context context, String action, int id) { Intent intent = new Intent(action); PendingIntent pi = PendingIntent.getBroadcast(context, id, intent, PendingIntent @@ -802,6 +751,7 @@ public class SilentManager extends AbstractInvokeHandlerService { intentFilter.addAction(ACTION_NOTICE_ALARM_CHANGE); intentFilter.addAction(ACTION_ALARM_ALARM_CHANGE); intentFilter.addAction(ACTION_ALARM_DELETE_ALARM); + intentFilter.addAction(ACTION_ALARM_SILENT2_UPDATE); this.mContext.registerReceiver(this.mAlarmReceiver, intentFilter); runtime.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32); } @@ -949,8 +899,88 @@ public class SilentManager extends AbstractInvokeHandlerService { } query.close(); } + } else if (ACTION_ALARM_SILENT2_UPDATE.equals(action)) { + SilentManager.getInstance().handleSilentFromDb(); } } } + + //处理静默时间段的数据 + //从数据库中查出数据,判断当前的状态 + //设置下一个改变值的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) { + while (query.moveToNext()) { + //获取数据 + String idValue = query.getString(query.getColumnIndex(ICDatabaseHelper.forbidden_id)); + String startValue = query.getString(query.getColumnIndex(ICDatabaseHelper.forbidden_start)); + String endValue = query.getString(query.getColumnIndex(ICDatabaseHelper.forbidden_end)); + String weekValue = query.getString(query.getColumnIndex(ICDatabaseHelper.forbidden_week)); + String statusValue = query.getString(query.getColumnIndex(ICDatabaseHelper.forbidden_status)); + ICLogger.d("startValue ==> " + startValue); + ICLogger.d("endValue ==> " + endValue); + ICLogger.d("weekValue ==> " + weekValue); + ICLogger.d("statusValue ==> " + statusValue); + //判断开关 + try { + int startHour = Integer.parseInt(startValue.replace("ST", "").substring(0, 2)); + int startMinute = Integer.parseInt(startValue.replace("ST", "").substring(3)); + ICLogger.d("startHour ==> " + startHour); + ICLogger.d("startMinute ==> " + startMinute); + if ("ON".equals(statusValue)) { + //开启时间的Alarm + //创建开始的alarm + char[] chars = weekValue.toCharArray(); + if (chars.length > 0) { + for (char aChar : chars) { + ICLogger.d("aChar==> " + aChar); + //设置N个,ID为:前缀+id+星期 + String targetAlarm = SILENT_ALARM_REQUEST_CODE_START_PREFIX + idValue + aChar; + int alarmId = Integer.parseInt(targetAlarm); + ICLogger.d("alarmId ==> " + alarmId); + //AlarmManagerUtil.setAlarm(mContext, 2, ); + } + } else { + //单次 + } + //AlarmManagerUtil.setAlarm(); + } else { + //关闭时间的Alarm + + } + } catch (Exception e) { + e.printStackTrace(); + } + //如果关的,那么就取消alarm + //对比数据 + //设置Alarm + } + query.close(); + } + } + + //开始Alarm的前缀段 + private final int SILENT_ALARM_REQUEST_CODE_START_PREFIX = 500; + //结束Alarm的前缀段 + private final int SILENT_ALARM_REQUEST_CODE_END_PREFIX = 600; + + /** + * 取消静音时间段的Alarm + * + * @param id + */ + public void cancelSilentAlarmById(String id) { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java index 7f183194..436b4048 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java @@ -38,7 +38,6 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE; import static com.enqualcomm.support.Constants.ACTION_ANTIOFF_ALARM_CHANGE; import static com.enqualcomm.support.bean.Contact.CATEGORY_ADMIN; import static com.enqualcomm.support.bean.Contact.CATEGORY_CALL; @@ -792,12 +791,10 @@ public class DBHelper { for (current_sys_status = null; cursor.moveToNext(); current_sys_status = cursor.getString(5)) { } - cursor.close(); } else { current_sys_status = null; } - this.cr.delete(ICContentProvider.SILENT_URI, (String) null, (String[]) null); int count = sList.size(); if (count != 0) { @@ -815,7 +812,6 @@ public class DBHelper { + " " + silent.week + " " + silent.status + " " + current_sys_status); } - this.cr.bulkInsert(ICContentProvider.SILENT_URI, contentValuesList); } diff --git a/app/src/main/java/com/ic/protocols/protocol_fzd.java b/app/src/main/java/com/ic/protocols/protocol_fzd.java index 6285d61a..279bf052 100644 --- a/app/src/main/java/com/ic/protocols/protocol_fzd.java +++ b/app/src/main/java/com/ic/protocols/protocol_fzd.java @@ -37,6 +37,7 @@ import com.enqualcomm.support.bean.StringMessage; import com.enqualcomm.support.provider.ICAlarmProvider; import com.enqualcomm.support.provider.ICDatabaseHelper; import com.enqualcomm.support.provider.ICFollowProvider; +import com.enqualcomm.support.provider.ICForbiddenProvider; import com.enqualcomm.support.provider.ICGlobalSettingsProvider; import com.enqualcomm.support.provider.ICMembersProvider; import com.enqualcomm.support.provider.WeTalkMessageProvider; @@ -71,6 +72,7 @@ import java.util.List; import java.util.UUID; import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE; +import static com.enqualcomm.support.Constants.ACTION_ALARM_SILENT2_UPDATE; import static com.enqualcomm.support.Constants.ALARM_POWER_OFF; import static com.enqualcomm.support.Constants.FROM_SERVER; import static com.enqualcomm.support.Constants.contact; @@ -1095,10 +1097,26 @@ public class protocol_fzd { * 关于自定义星期几的规则:最左边是周日,最右边是周六,即 0111110 的顺序是:周日,周一,周二,周三,周四,周五,周六(1 为打开,0 为关闭),所以上面的意思是周一至周五打开上课禁用。 */ public void handleSILENCETIME2(Connection connection, Runtime runtime, String cmd, String data) { + //回复收到数据 connection.send(SILENCETIME2(runtime)); + //切割数据 String[] silent_items = data.split(CMD_SPLIT); - ArrayList slist = new ArrayList<>(); + //解析数据 if (silent_items.length > 0) { + //先删除数据库中的数据 + Uri uri = Uri.parse(ICForbiddenProvider.FORBIDDEN); + Cursor query = runtime.getContextProxy().getResolver().query(uri, new String[]{ICDatabaseHelper.forbidden_id}, + null, null, null); + if (query != null) { + SilentManager silentManager = SilentManager.getInstance(); + while (query.moveToNext()) { + String id = query.getString(0); + silentManager.cancelSilentAlarmById(id); + } + query.close(); + } + //取消对应的Alarm + runtime.getContextProxy().getResolver().delete(uri, null, null); for (String si : silent_items) { String[] sl = si.split("-"); if (sl.length == 4) { @@ -1110,20 +1128,34 @@ public class protocol_fzd { StringBuilder week_sb = new StringBuilder(); for (int i = 0; i < week.length; i++) { if (week[i] == '1') { - week_sb.append(i + 1); + if (i == 0) { + week_sb.append(7); + } else { + week_sb.append(i); + } } } Silent silent = new Silent(start, end, week_sb.toString(), status); - slist.add(silent); ICLogger.i("set silence " + start + " " + end + " " + week_sb.toString() + " " + status); + //存储到数据库中 + ContentValues contentValues = new ContentValues(); + contentValues.put(ICDatabaseHelper.forbidden_start, silent.start); + contentValues.put(ICDatabaseHelper.forbidden_end, silent.end); + contentValues.put(ICDatabaseHelper.forbidden_status, silent.status); + contentValues.put(ICDatabaseHelper.forbidden_week, silent.week); + runtime.getContextProxy().getResolver().insert(uri, contentValues); } else { ICLogger.i("免打扰时间格式错误,skip"); } + //存完以后去处理,从数据库中拿出来,然后对状态进行更新 + //并且设置好下一个Alarm,来更新状态 + mRuntime.getContextProxy().context.sendBroadcast(new Intent(ACTION_ALARM_SILENT2_UPDATE)); } + } else { + ICLogger.d("no data.."); } - runtime.getDbHelper().saveSilent(slist); } public static StringMessage LGZONE(Runtime runtime) { diff --git a/app/src/main/java/com/ic/protocols/protocol_gator.java b/app/src/main/java/com/ic/protocols/protocol_gator.java index 45902ff3..dfd8f1a3 100644 --- a/app/src/main/java/com/ic/protocols/protocol_gator.java +++ b/app/src/main/java/com/ic/protocols/protocol_gator.java @@ -1356,8 +1356,6 @@ SOS报警上行WIFI、LBS混合定位数据,步数为255步,电量等级5,数 ICLogger.i("免打扰时间格式错误,skip"); } runtime.getDbHelper().saveSilent(sList); - - } //请求消息