package com.enqualcomm.support.bean;\r
\r
public class Alarm {\r
- public String name;\r
- public String ring;\r
- public String status;\r
- public String time;\r
- public String week;\r
+ public String name;\r
+ public String ring;\r
+ public String status;\r
+ public String time;\r
+ //星期是1~7\r
+ public String week;\r
\r
- public Alarm(String _time, String _week, String _ring, String _status) {\r
- this.time = _time;\r
- this.week = _week;\r
- this.ring = _ring;\r
- this.status = _status;\r
- }\r
+ public Alarm(String _time, String _week, String _ring, String _status) {\r
+ this.time = _time;\r
+ this.week = _week;\r
+ this.ring = _ring;\r
+ this.status = _status;\r
+ }\r
\r
- public Alarm(String _time, String _week, String _ring, String _status, String _name) {\r
- this.time = _time;\r
- this.week = _week;\r
- this.ring = _ring;\r
- this.status = _status;\r
- this.name = _name;\r
- }\r
+ public Alarm(String _time, String _week, String _ring, String _status, String _name) {\r
+ this.time = _time;\r
+ this.week = _week;\r
+ this.ring = _ring;\r
+ this.status = _status;\r
+ this.name = _name;\r
+ }\r
\r
- public boolean equals(Object var1) {\r
- if (this == var1) {\r
- return true;\r
- } else if (var1 != null && this.getClass() == var1.getClass()) {\r
- Alarm var2 = (Alarm)var1;\r
- if (!this.time.equals(var2.time)) {\r
- return false;\r
- } else if (!this.week.equals(var2.week)) {\r
- return false;\r
- } else if (!this.ring.equals(var2.ring)) {\r
- return false;\r
- } else {\r
- return !this.status.equals(var2.status) ? false : this.name.equals(var2.name);\r
- }\r
- } else {\r
- return false;\r
+ public boolean equals(Object var1) {\r
+ if (this == var1) {\r
+ return true;\r
+ } else if (var1 != null && this.getClass() == var1.getClass()) {\r
+ Alarm var2 = (Alarm) var1;\r
+ if (!this.time.equals(var2.time)) {\r
+ return false;\r
+ } else if (!this.week.equals(var2.week)) {\r
+ return false;\r
+ } else if (!this.ring.equals(var2.ring)) {\r
+ return false;\r
+ } else {\r
+ return !this.status.equals(var2.status) ? false : this.name.equals(var2.name);\r
+ }\r
+ } else {\r
+ return false;\r
+ }\r
}\r
- }\r
\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
- }\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
+ }\r
}\r
\r
\r
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
+import java.util.List;
import static android.telephony.TelephonyManager.CALL_STATE_OFFHOOK;
import static android.telephony.TelephonyManager.CALL_STATE_RINGING;
private static final long ONE_WEEK = 604800000L;
private static final long ONE_DAY = 86400000L;
- private ArrayList<Alarm> alarms;
+ private List<Alarm> alarms;
private boolean haveHandSilence;
private boolean isCalling;
AlarmManager mAlarmManager;
- private SilentManager.AlramReceiver mAlramReceiver;
+ private SilentManager.AlramReceiver mAlarmReceiver;
Connection mConnection;
private static Handler mHandler;
case PRECISE_CALL_STATE_DISCONNECTING: //挂电话
case PRECISE_CALL_STATE_DISCONNECTED: //挂电话
isCalling = false;
-// if (SilentManager.this.haveHandSilence) {
-// SilentManager.this.handSilence(SilentManager.this.mContext, SilentManager.this.mValue_isSilence);
-// }
if (ICAudioManager.needMute == true) {
-// ICAudioManager.restoreVolumn(mContext); //2秒后恢复音量
+ //2秒后恢复音量
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
}
- private void cancelAlarm(ArrayList<Alarm> var1) {
+ private void cancelAlarm(List<Alarm> var1) {
Iterator var2 = var1.iterator();
while (var2.hasNext()) {
- Alarm var3 = (Alarm) var2.next();
- String var10 = var3.time;
- String var4 = var3.week;
- String var5 = var3.ring;
- String var11 = var3.name;
- char[] var6 = var4.toCharArray();
- int var7 = var6.length;
+ 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;
for (int var8 = 1; var8 < var7; ++var8) {
- char var9 = var6[var8];
- this.mAlarmManager.cancel(this.getPendingIntent(var10, var4, var5, var11, var9 - 47, 0, false));
+ char var9 = result[var8];
+ this.mAlarmManager.cancel(this.getPendingIntent(time, week, ring, name, var9 - 47, 0, false));
}
}
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);
+ return PendingIntent.getService(this.mContext,
+ 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
private PendingIntent getPendingIntent(String var1, String var2,
private void handSilence(Context var1, boolean var2) {
this.mValue_isSilence = var2;
-
-
- /*
- if (this.isCalling) {
- this.haveHandSilence = true;
- } else {
- this.haveHandSilence = false;
- SharPreferenceUtil.setPrefBoolean(var1, "KEY_ISSILENCE", var2);
- Intent var3 = new Intent();
- var3.setAction("com.enqualcomm.support.ACTION_ISSILENCE2IMESSAGE");
- var3.putExtra("KEY_ISSILENCE", var2);
- var1.sendBroadcast(var3);
-
- // ComponentName var4 = new ComponentName(SERVICE_PKG_NAME, SERVICE_CLS_NAME);
- // Intent var5 = (new Intent("com.enqualcomm.support.ACTION_VIDEO_END_CALL")).setComponent(var4);
- // this.mRuntime.getContextProxy().context.startService(var5);
- }*/
}
private void handleSilent(Runtime runtime, boolean silent) {
if (!var6.contains(var7.toString())) {
continue;
}
-
long var8 = var5.startTimeMillis - var2;
int var10;
int var11;
var11 = Integer.parseInt(var5.start.substring(5, 7));
AlarmHelper.setTimeAlarm(this.mContext, var10, var11, "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START");
}
-
var8 = var5.endTimeMillis - var2;
if (var8 < (long) (CoreService.alarmCycle * 60 * 1000) && var8 > 0L) {
var10 = Integer.parseInt(var5.end.substring(2, 4));
var11 = Integer.parseInt(var5.end.substring(5, 7));
AlarmHelper.setTimeAlarm(this.mContext, var10, var11, "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_END");
}
-
if (var5.startTimeMillis > var2 || var5.endTimeMillis <= var2) {
continue;
}
-
this.mInterval = var5.interval;
if (!var1) {
// AlarmHelper.setRealTimeAlarm(this.mContext, Integer.parseInt(this.mInterval), ACTION_HEATR_RATE_START);
}
private void onSilentStateChange(boolean var1) {
-
SharPreferenceUtil.setPrefBoolean(mContext, "KEY_ISSILENCE", var1);
setSilentConfig(mContext, var1);
-
-
if (this.alarms != null) {
if (var1) {
this.cancelAlarm(this.alarms);
}
- private ArrayList<Alarm> queryAlarm() {
- ArrayList var1 = this.mDbHelper.queryAlarm();
+ private List<Alarm> queryAlarm() {
+ List<Alarm> alarmList = this.mDbHelper.queryAlarm();
if (!this.mInSilent) {
if (this.alarms != null) {
this.cancelAlarm(this.alarms);
}
- this.setNewAlarm(var1);
+ this.setNewAlarm(alarmList);
}
-
- return var1;
+ return alarmList;
}
private ArrayList<Antioff> queryAntioff() {
return this.mDbHelper.queryStheartRate(true);
}
- private void setNewAlarm(ArrayList<Alarm> alarmArrayList) {
+ private void setNewAlarm(List<Alarm> alarmArrayList) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.SECOND, 0);
long currentTime = System.currentTimeMillis();
this.alarms = this.queryAlarm();
this.voiceNotice = this.queryNotice();
runtime.getContextProxy().context.getContentResolver().registerContentObserver(ICContentProvider.SILENT_URI, false, this.mContentObserver);
- this.mAlramReceiver = new SilentManager.AlramReceiver();
+ 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.mAlramReceiver, var5);
+ this.mContext.registerReceiver(this.mAlarmReceiver, var5);
runtime.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32);
}
public void onDetach(Connection var1, Runtime var2) {
var2.getContextProxy().context.getContentResolver().unregisterContentObserver(this.mContentObserver);
- this.mContext.unregisterReceiver(this.mAlramReceiver);
+ this.mContext.unregisterReceiver(this.mAlarmReceiver);
}
@Override
String alarmTime = intent.getDataString(); //alarm:ST00.43,W,CON,闹铃,2
ICLogger.d("alarmTime == > " + alarmTime);
String currentTime = TimeUtil.getSystemTime();
- alarmTime.substring(6).split("\\.");
+ alarmTime.substring(6).split("\\.");//ST00.43,W,CON,闹铃,2
int alarmTime_minutes = Integer.parseInt(alarmTime.substring(6).split("\\.")[1].substring(0, 2));
int alarmTime_hour = Integer.parseInt(alarmTime.substring(6).split("\\.")[0].substring(2));
String[] currentTimeArray = currentTime.split(";")[1].split(":");
--- /dev/null
+package com.enqualcomm.support.utils;
+
+import android.media.AudioManager;
+
+public class ProfileManager {
+
+ //只声音,无振动
+ public static void ringModel(AudioManager audio) {
+ audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
+ audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
+ AudioManager.VIBRATE_SETTING_OFF);
+ audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,
+ AudioManager.VIBRATE_SETTING_OFF);
+ }
+
+ //即有声音也有振动
+ public static void ringAndVibrate(AudioManager audio) {
+ audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
+ audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
+ AudioManager.VIBRATE_SETTING_ON);
+ audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,
+ AudioManager.VIBRATE_SETTING_ON);
+ }
+
+ //只能振动
+ public static void vibrate(AudioManager audio) {
+ audio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
+ audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
+ AudioManager.VIBRATE_SETTING_ON);
+ audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,
+ AudioManager.VIBRATE_SETTING_ON);
+ }
+
+ //无声无振动
+ public static void noRingAndVibrate(AudioManager audio) {
+ audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
+ audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
+ AudioManager.VIBRATE_SETTING_OFF);
+ audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,
+ AudioManager.VIBRATE_SETTING_OFF);
+ }
+}
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.database.Cursor;
+import android.media.AudioManager;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import com.enqualcomm.support.Config;
import com.enqualcomm.support.CoreService;
import com.enqualcomm.support.IFZDCallback;
+import com.enqualcomm.support.bean.Alarm;
import com.enqualcomm.support.bean.Contact;
import com.enqualcomm.support.bean.HealthInfo;
import com.enqualcomm.support.bean.Runtime;
import com.enqualcomm.support.utils.Connection;
import com.enqualcomm.support.utils.ICLogger;
import com.enqualcomm.support.utils.MD5;
+import com.enqualcomm.support.utils.ProfileManager;
import com.enqualcomm.support.utils.TimeUtil;
import com.enqualcomm.support.utils.Util;
import com.enqualcomm.support.utils.regexUtil;
TALK,//向对方发起音视频聊天
UNKNOWN_CMD,
MESSAGE/*文字消息*/,
+ profile//情景模式
}
private static HashMap<CMD_TYPE, String> cmdMap = null;
cmdMap.put(CMD_TYPE.TKQ, "TKQ");
cmdMap.put(CMD_TYPE.FLOWER, "FLOWER");
cmdMap.put(CMD_TYPE.WLKEY, "WLKEY");
+ cmdMap.put(CMD_TYPE.profile, "profile");
cmdMap.put(CMD_TYPE.KEYBRD, "KEYBRD");
cmdMap.put(CMD_TYPE.FALLDOWN, "FALLDOWN");
cmdMap.put(CMD_TYPE.SHAKE, "SHAKE");
handleREMIND(cmd, data, mRuntime);
mConnection.DeliverCMDMessageToSystem("REMIND", cmd);
break;
+ case profile:
+ ICLogger.d("收到情景模式设置指令");
+ handleProfile(cmd, data, mRuntime);
+ mConnection.DeliverCMDMessageToSystem("profile", cmd);
+ break;
}
return ret;
}
+
+ //响铃和震动
+ private static final int PROFILE_MODE_RING_AND_VIBRATE = 1;
+ //响铃
+ private static final int PROFILE_MODE_RING = 2;
+ //震动
+ private static final int PROFILE_MODE_VIBRATE = 3;
+ //静音
+ private static final int PROFILE_MODE_SILENT = 4;
+
+ /**
+ * 处理下发的情景模式
+ *
+ * @param cmd
+ * @param data
+ * @param mRuntime
+ */
+ private void handleProfile(String cmd, String data, Runtime mRuntime) {
+ ICLogger.d("profile data == > " + data);
+ //保存一份到设置里
+ handleSettings(cmd, data, mRuntime);
+ //修改情景模式
+ AudioManager audioManager =
+ (AudioManager) mRuntime.getContextProxy()
+ .context.getSystemService(Context.AUDIO_SERVICE);
+ //对data进行判断
+ try {
+ int type = Integer.parseInt(data);
+ switch (type) {
+ case PROFILE_MODE_RING_AND_VIBRATE:
+ ProfileManager.ringAndVibrate(audioManager);
+ break;
+ case PROFILE_MODE_RING:
+ ProfileManager.ringModel(audioManager);
+ break;
+ case PROFILE_MODE_VIBRATE:
+ ProfileManager.vibrate(audioManager);
+ break;
+ case PROFILE_MODE_SILENT:
+ ProfileManager.noRingAndVibrate(audioManager);
+ break;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
/**
* 闹钟处理
+ * 平台发送: [XT*YYYYYYYYYYYYYYY*LEN*REMIND,闹钟 1,闹钟 2,闹钟 3]
+ * 实例:[XT*334588000000156*0018*REMIND,08:10-1-1,08:10-1-2, 08:10-1-3-0111110]
+ * 终端回复:
+ * [XT*YYYYYYYYYYYYYYY*LEN*REMIND]
+ * 实例:[XT*334588000000156*0006*REMIND]
+ * 说明:闹铃格式为:
+ * 时间-开关-频率(1:一次;2:每天;3:自定义)
+ * 08:10-1-1:闹钟时间 8:10,打开,响铃一次
+ * 08:10-1-2:闹钟时间 8:10,打开,每天响铃
+ * 08:10-1-3-0111110:闹钟时间 8:10,打开,自定义周一至周五打开 最左边是周日,
+ * 最右边是周六,即 0111110 的顺序是:周日,周一,周二,周三,周四,周五,周 六(1 为打开,0 为关闭),
+ * 其中周一至周五打开闹钟
*
* @param cmd
* @param data
* @param mRuntime
*/
private void handleREMIND(String cmd, String data, Runtime mRuntime) {
-
+ //解析数据
+ String[] split = data.split(",");
+ if (split.length != 0) {
+ //说明有闹钟内容,对闹钟内容进行切割设置
+ //遍历
+ ArrayList<Alarm> alarmList = new ArrayList<>();
+ for (String item : split) {
+ String[] itemDetail = item.split("-");
+ String time = itemDetail[0];
+ String state = itemDetail[1];
+ String frequent = itemDetail[2];
+ ICLogger.d("time == > " + time);
+ ICLogger.d("state == > " + state);
+ ICLogger.d("frequent == > " + frequent);
+ String week = null;
+ if ("3".equals(frequent)) {
+ week = itemDetail[3];
+ }
+ //对week进行转换
+ StringBuilder stringBuilder = new StringBuilder();
+ if (week != null) {
+ char[] chars = week.toCharArray();
+ for (int i = 0; i < chars.length; i++) {
+ if (chars[i] != 0) {
+ stringBuilder.append(i + 1);
+ }
+ }
+ }
+ String weekValue = stringBuilder.toString();
+ ICLogger.d("weekValue ==> " + weekValue);
+ alarmList.add(new Alarm("ST" + time.substring(0, 2) + "." + time.substring(2),
+ "W" + weekValue, "CON", "1".equals(state) ? "ON" : "OFF", "闹铃"));
+ }
+ }
}
/**
String alarmtime = "";//0900表示早上09:00
int alarmtype = 1; //1表示吃药提醒 , 2 表示喝水提醒 ,3 表示久坐提醒
String repeat = "";// 135表示周一周三周五,使用24小时制
- String[] datalist = cmd.split("@");
- ArrayList<Alarm> alarmlist = new ArrayList<>();
- if (datalist.length > 0) {
- for (int i = 0; i < datalist.length; i++) {
- String[] cmdarglist = datalist[i].split(",");
+ String[] dataList = cmd.split("@");
+ ArrayList<Alarm> alarmList = new ArrayList<>();
+ if (dataList.length > 0) {
+ for (int i = 0; i < dataList.length; i++) {
+ String[] cmdArgList = dataList[i].split(",");
if (i == 0) {
- if (cmdarglist.length == 9) {
+ if (cmdArgList.length == 9) {
try {
- imei = cmdarglist[1];
- cmdindex = cmdarglist[2];
- all_alarmswitch = Integer.parseInt(cmdarglist[3]);
- alarmcount = Integer.parseInt(cmdarglist[4]);
- alarmtime = cmdarglist[5];
- repeat = cmdarglist[6];
- alarmswitch = Integer.parseInt(cmdarglist[7]);
- alarmtype = Integer.parseInt(cmdarglist[8]);
+ imei = cmdArgList[1];
+ cmdindex = cmdArgList[2];
+ all_alarmswitch = Integer.parseInt(cmdArgList[3]);
+ alarmcount = Integer.parseInt(cmdArgList[4]);
+ alarmtime = cmdArgList[5];
+ repeat = cmdArgList[6];
+ alarmswitch = Integer.parseInt(cmdArgList[7]);
+ alarmtype = Integer.parseInt(cmdArgList[8]);
log(new StringBuilder("imei ").append(imei)
.append(", cmdindex ").append(cmdindex)
.append(", allswitch=").append(all_alarmswitch)
.append(", alarmtype=").append(alarmtype)
.toString()
);
- alarmlist.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃"));
+ alarmList.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃"));
} catch (Exception e) {
ICLogger.e(e.getMessage(), e);
}
- } else if (cmdarglist.length == 5) {
+ } else if (cmdArgList.length == 5) {
try {
- imei = cmdarglist[1];
- cmdindex = cmdarglist[2];
- all_alarmswitch = Integer.parseInt(cmdarglist[3]);
- alarmcount = Integer.parseInt(cmdarglist[4]);
+ imei = cmdArgList[1];
+ cmdindex = cmdArgList[2];
+ all_alarmswitch = Integer.parseInt(cmdArgList[3]);
+ alarmcount = Integer.parseInt(cmdArgList[4]);
} catch (Exception e) {
ICLogger.e(e.getMessage(), e);
}
log("data len is too small!");
}
} else {
- if (cmdarglist.length == 4) {
+ if (cmdArgList.length == 4) {
try {
- alarmtime = cmdarglist[0];
- repeat = cmdarglist[1];
- alarmswitch = Integer.parseInt(cmdarglist[2]);
- alarmtype = Integer.parseInt(cmdarglist[3]);
+ alarmtime = cmdArgList[0];
+ repeat = cmdArgList[1];
+ alarmswitch = Integer.parseInt(cmdArgList[2]);
+ alarmtype = Integer.parseInt(cmdArgList[3]);
log(new StringBuilder("set alarmtime ").append(alarmtime)
.append(", relpeat ").append(repeat)
.toString()
);
- alarmlist.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃"));
+ alarmList.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃"));
} catch (Exception e) {
ICLogger.e(e.getMessage(), e);
}
}
}//循环获取alarm数据结束
- runtime.getDbHelper().saveAlarm(alarmlist);
+ runtime.getDbHelper().saveAlarm(alarmList);
//do clean and set alarm things