--- /dev/null
+// IHeartRateSensorCallback.aidl
+package com.ic.work;
+
+
+import com.ic.work.domain.HeartRate;
+
+interface IHeartRateSensorCallback {
+ //获取到了数据
+ void onHeartRateGet(in HeartRate heartRate);
+ //正在获取数据
+ void onGetData();
+ //等待中
+ void onWaiting();
+}
\ No newline at end of file
--- /dev/null
+// IHeartRateSensorService.aidl
+package com.ic.work;
+
+import com.ic.work.IHeartRateSensorCallback;
+
+interface IHeartRateSensorService {
+ //注册接口
+ void registerCallback(in IHeartRateSensorCallback callback);
+ //取消接口注册
+ void unRegisterCallback(in IHeartRateSensorCallback callback);
+ //获取心率相关数据0表示Alarm,1表示客户端用户发出的,3表示服务端发出的单次获取指令
+ void getHeartRateInfo(int from);
+}
\ No newline at end of file
--- /dev/null
+// ITempSensorCallback.aidl
+package com.ic.work;
+
+import com.ic.work.domain.Temperature;
+
+interface ITempSensorCallback {
+ //获取到了温度数据
+ void onTemperatureGet(in Temperature temperature);
+ //正在获取数据
+ void onGetData();
+ //等待中
+ void onWaiting();
+}
\ No newline at end of file
--- /dev/null
+// ITempSensorService.aidl
+package com.ic.work;
+import com.ic.work.ITempSensorCallback;
+
+interface ITempSensorService {
+ //注册接口
+ void registerCallback(in ITempSensorCallback callback);
+ //取消接口注册
+ void unRegisterCallback(in ITempSensorCallback callback);
+ //获取体温:0表示Alarm,1表示客户端用户发出的,3表示服务端发出的单次获取指令
+ void getTemperatureInfo(int from);
+}
\ No newline at end of file
--- /dev/null
+// HeartRate.aidl
+package com.ic.work.domain;
+
+parcelable HeartRate;
\ No newline at end of file
--- /dev/null
+// Temperature.aidl
+package com.ic.work.domain;
+
+parcelable Temperature;
\ No newline at end of file
public interface Constants {
- public static final String ACTION_LED = "com.enqualcomm.support.ACTION_LED";
-
- public static final String ACTION_SHUTDOWN = "com.ic.action.shutdown";
-
- public static final String ACTION_PLAYTIME = "com.ic.action.playtime";
-
- public static final String ACTION_BROADCAST_PPG = "com.enqualcomm.support.ACTION_BROADCAST_PPG";
- public static final String ACTION_ADDTEST_CONTACTS = "com.enqualcomm.imessage.ACTION_ADDTEST_CONTACTS";
-
- public static final String ACTION_ALARM_ADD_DATAPOINTS = "com.enqualcomm.support.ADD_DATAPOINTS";
-
-
- public static final String ACTION_ALARM_BLE_SCAN = "com.ic.Action.ALarm.bleScan";
- public static final String ACTION_ALARM_CHECK_ANTI = "com.ic.Action.ALarm.CheckAnti";
-
- public static final String ACTION_ALARM_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE";
-
- public static final String ACTION_ANTIOFF_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE";
-
- public static final String ACTION_AT_CALLBACK = "com.eqc.intent.action.callback.at";
-
- public static final String ACTION_BATTERY_LOW_MSG = "com.enqualcomm.support.lowbatteryMsg";
-
- public static final String ACTION_CALL_CMCM_SERVICE_INTERFACE = "com.cmcm.interface";
-
- public static final String ACTION_CALL_RING = "com.enqualcomm.support.phone.ring";
-
- public static final String ACTION_CARE_ALARM = "com.enqualcomm.support.ACTION_CARE_ALARM";
-
- public static final String ACTION_CLOSE_UNREAD_MSG = "com.enqualcomm.support.CloseUnreadMsg";
-
- public static final String ACTION_CM_POWERSAVE_MODE = "cmcm.call.eiot.into.powersave";
-
- public static final String ACTION_EQC_ALARM = "com.enqualcomm.support.ACTION_EQC_ALARM";
-
- public static final String ACTION_LOCATION_ALARM = "com.enqualcomm.support.ACTION_LOCATION_ALARM";
-
- public static final String ACTION_EXIT_MONITOR_MODE = "com.enqualcomm.support.MONITOR_EXIT";
-
- public static final String ACTION_HEART_RATE_RESULT = "com.eqc.heartrate.action.RESULT";
-
- public static final String ACTION_HEATR_RATE_START = "com.eqc.heartrate.action.SILENT_START";
- public static final String ACTION_CHECK_ANTIOFF_EVENT = "com.ic.action.CHECK_ANTIOFF_EVENT";
-
- public static final String ACTION_IMESSAGE = "action.message";
-
- public static final String ACTION_ISCONNECTED = "com.ic.protocol.ACTION_IS_SERVER_CONNECTED";
-
- public static final String ACTION_ISSILENCE = "com.enqualcomm.icare.ACTION_ISSILENCE";
-
- public static final String ACTION_ISSILENCE2IMESSAGE = "com.enqualcomm.support.ACTION_ISSILENCE2IMESSAGE";
-
- public static final String ACTION_MISSED_CALL_GET = "com.enqualcomm.support.ACTION_MISSED_CALL_GET";
-
- public static final String ACTION_NOTICE_ALARM = "com.enqualcomm.support.ACTION_NOTICE_ALARM";
-
- public static final String ACTION_NOTICE_ALARM_CHANGE = "com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE";
-
- public static final String ACTION_PASS_DATA_TO_CM_SERVICES = "com.enqualcomm.support.PASS_DATA";
-
- public static final String ACTION_REMOTE_CAMERA = "com.enqualcomm.support.ACTION_REMOTE_CAMERA";
-
- public static final String ACTION_REMOTE_CAMERA_OSS = "com.enqualcomm.support.ACTION_REMOTE_CAMERA_OSS";
-
- public static final String ACTION_RESTORE_SYSTEM = "android.intent.action.MASTER_CLEAR";
-
- public static final String ACTION_SCANPAIRMESSAGE = "com.enqualcomm.imessage.scanPairMessage";
-
- public static final String ACTION_SEDN_VIDOE_CALL_REQ = "com.enqualcomm.imessage.sendVideoCall";
-
- public static final String ACTION_SEND_SOS_MSG = "com.enqualcomm.support.action_send_sos";
-
- public static final String ACTION_SEND_EMEGENCY_LOCATION_START = "action.emegency.location.start";
- public static final String ACTION_SEND_EMEGENCY_LOCATION_STOP = "action.emegency.location.stop";
- public static final String ACTION_LOCAL_SOS_ACTION = "com.enqualcomm.support.local_sos";
-
- public static final String ACTION_SEND_SOS_VIDEO_FILE = "com.enqualcomm.support.action_send_sos_video_file";
-
- public static final String ACTION_SEND_VIDEO_FILES = "com.enqualcomm.support.ACTION_SEND_VIDEO_FILES";
-
- public static final String ACTION_SHUTDOWN_MOREINFO = "android.intent.action.ACTION_SHUTDOWN_MOREINFO";
-
- public static final String ACTION_SOS_VIDEO_CHAT = "com.enqualcomm.imessage.ACTION_SOS_VIDEO_CHAT";
-
- public static final String ACTION_START_DOWNLOAD = "com.enqualcomm.imessage.START_DOWNLOAD_ACTION";
-
- public static final String ACTION_STHEART_RATE_ALARM_CHANGE = "com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE";
-
- public static final String ACTION_SYNC = "SYNC";
-
- public static final String ACTION_UNBOUND_TERMINAL = "com.enqualcomm.support.ACTION_UNBOUND_TERMINAL";
-
- public static final String ACTION_UPDATE_ICON = "com.enqualcomm.support.ACTION_UPDATE_ICON";
-
- public static final String ACTION_UPDATE_SECRET_KEY = "com.enqualcomm.support.UPDATE_SECRET_KEY";
-
- public static final String ACTION_VIDEO_END_CALL = "com.enqualcomm.support.ACTION_VIDEO_END_CALL";
-
- public static final String ACTION_VIDEO_LOGIN = "com.enqualcomm.imessage.ACTION_VIDEO_LOGIN";
-
- public static final String ACTION_VIDEO_LOGOUT = "com.enqualcomm.imessage.ACTION_VIDEO_LOGOUT";
-
- public static final String ACTION_VIDEO_RECEIVE_LOGIN = "com.enqualcomm.imessage.ACTION_VIDEO_RECEIVE_LOGIN";
-
- public static final String ACTION_WAKEUP_ALARM = "com.eqc.deliverWakeupAlarm.action";
-
- public static final String ACTION_YUN_ALARM_CHANGE = "com.eqc.deskclock.YUN_ALARM_CHANGE";
-
- public static final String ACTION_PRACTICE_REPORT_ALARM = "com.enqualcomm.support.PRACTICE_ALARM";
-
- public final static String ACTION_START_PRACTISE = "com.ic.action_start_practice";
- public final static String KeyPractice = "cmd";
-
- public static final int ALARM_UPDATE_NOTICE = 206;
-
- public static final int CALL_RECORD_CHANGED = 103;
-
- public static final String CMD_ID_CM = "cmdId";
-
- public static final Uri CONTACT_URI = Uri.parse("content://com.enqualcomm.support/contact");
-
- public static final Uri CM_SERVICE_SETTING = Uri.parse("content://com.cmcm.service/cmsetting");
-
- public static final String DIALOG_ACTION = "com.enqualcomm.support.DIALOG";
-
- public static final int ENTER_SILENT_MODE = 212;
-
- public static final int EXIT_SILENT_MODE = 213;
-
- public static final String FLAG = "flag";
-
- public static final String ANTI_ALARM = "com.enqualcomm.support.ANTI_ALARM";
- public static final String TEMP_ALARM = "com.enqualcomm.support.TEMP_ALARM";
- public static final String HEART_ALARM = "com.enqualcomm.support.HEART_ALARM";
-
- public static final int IDLE_MODE_CHANGED = 102;
-
- public static final int INIT_SERVER_OK = 216;
-
- public static final int IN_SILENCE = 600;
-
- public static final boolean IS_OVERSEAS = false;
-
- public static final int JUFENG_SDK_INIT = 215;
-
- public static final String KEY_CATEGORY = "category";
-
- public static final String KEY_COMPANY = "KEY_COMPANY";
-
- public static final String KEY_CONTACT_ID = "contact_id";
-
- public static final String KEY_DELETE_FILE_TIME = "KEY_DELETE_FILE_TIME";
-
- public static final String KEY_DEVICE_ID = "key_device_id";
-
- public static final String KEY_DEVICE_KEY = "key_device_key";
-
- public static final String KEY_FILEPATH = "filepath";
-
- public static final String KEY_FILETYPE = "filetype";
-
- public static final String KEY_ID = "id";
-
- public static final String KEY_ISCONNECTED = "isConnected";
-
- public static final String KEY_ISSILENCE = "KEY_ISSILENCE";
-
- public static final String KEY_IS_RESUME = "key_is_resume";
-
- public static final String KEY_JUST_TALK = "KEY_JUST_TALK";
-
- public static final String KEY_NAME = "name";
-
- public static final String KEY_NET_WORK_TYPE = "NET_WORK_TYPE";
-
- public static final String KEY_NUMBER = "number";
-
- public static final String KEY_PAIR_CID = "PAIR_CID";
-
- public static final String KEY_REMOTE_NUMBER = "key_remote_number";
-
- public static final String KEY_SAVE_STEP_COUNT = "key_save_step_count";
-
- public static final String KEY_SOS_FILE_BODY = "key_sos_file_body";
-
- public static final String KEY_SOS_FILE_FILE_TYPE = "key_sos_file_file_type";
-
- public static final String KEY_STATUS = "key_status";
-
- public static final String KEY_STEP_COUNT = "KEY_STEP_COUNT";
-
- public static final String KEY_UNBOUND_FLAG = "KEY_UNBOUND_FLAG";
-
- public static final String KEY_VIDEO_PATH = "KEY_VIDEO_PATH";
-
- public static final int LOCATION_DATA = 217;
-
- public static final int MONITOR_GOIN = 202;
-
- public static final int MONITOR_GOOUT = 203;
-
- public static final int MSG_WHAT_RELOAD_VOICE = 1000;
-
- public static final int MSG_WHAT_SEND_OSSFILE = 1006;
-
- public static final int MSG_WHAT_SEND_PAIR = 1003;
-
- public static final int MSG_WHAT_SEND_PICTURE = 1002;
-
- public static final int MSG_WHAT_SEND_VOICE = 1001;
-
- public static final int MSG_WHAT_SILENCE_STATUS = 1005;
-
- public static final int MSG_WHAT_VIDEO_CHAT = 1004;
-
- public static final int MSG_WHAT_PPG = 1007;
- public static final String key_ppg="ppg";
- public static final String key_bph="bph";
- public static final String key_bpl="bpl";
- public static final String key_spo2="sp02";
-
-
- public static final int NEW_MEDIA_PUSH = 100;
-
- public static final String ACTION_SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
- public static final String OTHER_ALARM_END = "com.enqualcomm.support.OTHER_ALARM_END";
-
- public static final String OTHER_ALARM_START = "com.enqualcomm.support.OTHER_ALARM_START";
-
- public static final String OTHER_HEARTRATE_ALARM_END = "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_END";
-
- public static final String OTHER_HEARTRATE_ALARM_START = "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START";
-
- public static final int OUT_SILENCE = 700;
-
- public static final int PASS_DATA_DIRECTLY = 500;
-
- public static final int PLAY_RECORD_UPDATE = 207;
-
- public static final int REBOOT_SYSTEM = 208;
-
- public static final int RESET_SYSTEM = 210;
-
- public static final String RESTORE_EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE";
-
- public static final String RESTORE_REASON = "android.intent.extra.REASON";
-
-
- public static final String ACTION_START_FOTA_UPDATE="com.ic.action.startfotaUpdate";
- public static final String ACTION_SMSCMD="com.enqualcomm.support.SMSCMD";
- public static final String ACTION_SMSCMD_Reply="com.ic.action.fotaUpdateReply";
- public static final String ACTION_TINTERNAL_TEST="com.ic.action.internaltest";
-
- public static final String KeyReplyData="reply";
-
- public static final String ACTION_SMSCMD_TEST="com.ic.action.internaltest";
-
- public static final int RESULT_ERROR = 500;
-
- public static final int RESULT_OK = 200;
-
- public static final String RESUME_ACTION = "com.enqualcomm.imessage.RESUME_ACTION";
-
- public static final String SERVICE_CLS_NAME = "com.enqualcomm.support.CoreService";
-
- public static final String SERVICE_PKG_NAME = "com.enqualcomm.support";
-
- public static final int SHUTDOWN_SYSTM = 209;
-
- public static final String SLEEP_ALARM = "com.enqualcomm.support.SLEEP_ALARM";
-
- public static final String SOS_ACTION = "com.enqualcomm.imessage.SOS_ACTION";
-
- public static final int SOS_GOIN = 204;
-
- public static final int SOS_GOOUT = 205;
-
- public static final String STEP_COUNT_ALARM_ACTION = "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM";
-
- public static final String STRING_CMD_JSON_DATA = "cmdJsonData";
-
- public static final String STWORKMODE_ALARM = "com.enqualcomm.support.ACTION_STWORKMODE_ALARM";
-
- public static final String VALUE_SETTIING_VERSION = "value_setting_ver";
-
- public static final int VIDEO_MESSAGE = 300;
-
- public static final String WAKE_ALARM = "com.enqualcomm.support.WAKE_ALARM";
-
- public static final String WEATHER_ALARM = "com.ic.alarm.ACTION_WEATHER_ALARM";
- public static final String WEATHER_ACTION = "com.ic.action.ACTION_GET_WEATHER";
- public static final String ACTION_QUERY_WEATHER = "com.ic.action_query_weather";
- public static final String ACTION_WEATHER_RECEIVED = "com.ic.action_weather_recveived";
- public static final String KEY_Weather = "weather";
-
-
- public static final int WIFI_SET_RESULT = 217;
-
- public static final int WORKMODE_CHANGED = 211;
-
- public static final String contact = "contact";
-
- public static final String wechat_contact = "content";
-
-
- public static final String ACTION_CHECK_SERVER_RESPONSE = "com.enqualcomm.support.ACTION_CHECK_SERVER_RESPONSE";
- public static final String ACTION_RETRY_SERVER_CONNECT = "com.enqualcomm.support.ACTION_RETRY_SERVER_CONNECT";
- public static final String ACTION_CHECK_LOCATION_RESULT = "com.enqualcomm.support.ACTION_CHECK_LOCATION_RESULT";
-
-
- public static final String ACTION_MESSAGE_SENT = "com.ic.action.message_sent";
- public static final String ACTION_MESSAGE_RECEIVED = "com.ic.action.message_received";
- public static final String KEY_MESSAGE_TYPE = "msgType"; // 分为 voice ,pic ,和 text
- public static final String KEY_MESSAGE_URL = "msgUrl"; // 消息为 voice和 pic 此纪录为 路径, text消息则直接是消息内容。 utf-8 格式String
- public static final String KEY_MESSAGE_FROM = "msgFrom"; // 消息来源(发送者名称),预留,暂时不用。
-
-
-
- public static final String ACTION_TEMP_RESULT = "com.ic.action.temp_result";
- public static final String KEY_TEMP_BODY = "body"; // double 体温
- public static final String KEY_TEMP_WRIST= "wrist"; // double 腕温
- public static final String KEY_TEMP_OUT= "out"; // double 腕温
-
- public static String ACTION_ANTI_OFF0 = "com.ic.ACTION_ANTIOFF";
- public static String ACTION_ANTI_OFF = "com.ic.ACTION_STRIP";
- public static String KEY_ANTI_EVENT="eventID"; //integer eventID =1 脱落, eventID =0 佩戴
- public static String KEY_ANTI_TXT="eventTxt"; //String AnitMessage
-
-
-
- public static String ACTION_BATTERYLOW = "com.ic.ACTION_BATTERYLOW";
- public static String KEY_BATTERY_EVENT="eventID"; //integer eventID =1 battery low, eventID =0 解除
-
- public static String PersistFotaServer2Url="persist.sys.ota.host2";
-
- //把服务器下发的文本消息作为短信消息存储在短信数据库中,mms.apk会接收此消息并保存到数据库
- //persist.sys.pushtxtAsSMS == false的时候mms.apk会忽略此消息,默认事true,所以要关闭要单独设置
- public static String ActionReceivePushTxt="action.ic.PushTxtToSMSDB";
- public static String ActionSrvPushTxt="action.ic.srvPushTxt";
+ public static final String ACTION_LED = "com.enqualcomm.support.ACTION_LED";
-/**
- * PreferenceManager.getDefaultSharedPreferences(context) , package name "com.enqualcomm.support"
- */
+ public static final String ACTION_SHUTDOWN = "com.ic.action.shutdown";
- /***
- * 心率血压血氧校准值
- * String 变量,用 "," 分割的 4个数据 格式为【ppg_adj,bph_adj,bpl_adj,spo2_adj】
- * 例如
- * 心率偏差ppg_adj=2,
- * 高压偏差bph_adj=-2,
- * 低压偏差bpl_adj=-3,
- * 血氧偏差spo2_adj=5
- * 则赋值 2,-2,-3,5
- */
- public static String SHAREKEY_SETTING_PPG_ECG_ADJUST = "PpgEcgAdjust";
- /**
- * 睡眠分数 , int
- */
- public static String SHAREKEY_SETTING_SLEEP_SCORE = "SleepScore";
- /**
- *当前睡眠分数的日期 String yyMMddHHmm
- *可能时昨天的,算完就是当天的
- * */
- public static String SHAREKEY_SETTING_SLEEP_SCORE_DATE = "SleepScoreDate";
-
- /**
- * 久坐检测时长,int 分钟为单位,此处为读取方法,可在显示前读取当前设置。
- * 设置请采用broadcast方式发给协议层存储
- */
- public static String SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES = "SIT_RANGE";
-
-/***
- * ACTion 用于 设置久坐时长分钟为单位
- */
+ public static final String ACTION_PLAYTIME = "com.ic.action.playtime";
+
+ public static final String ACTION_BROADCAST_PPG = "com.enqualcomm.support.ACTION_BROADCAST_PPG";
+ public static final String ACTION_ADDTEST_CONTACTS = "com.enqualcomm.imessage.ACTION_ADDTEST_CONTACTS";
+
+ public static final String ACTION_ALARM_ADD_DATAPOINTS = "com.enqualcomm.support.ADD_DATAPOINTS";
+
+
+ public static final String ACTION_ALARM_BLE_SCAN = "com.ic.Action.ALarm.bleScan";
+ public static final String ACTION_ALARM_CHECK_ANTI = "com.ic.Action.ALarm.CheckAnti";
+
+ public static final String ACTION_ALARM_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE";
+
+ public static final String ACTION_ANTIOFF_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE";
+
+ public static final String ACTION_AT_CALLBACK = "com.eqc.intent.action.callback.at";
+
+ public static final String ACTION_BATTERY_LOW_MSG = "com.enqualcomm.support.lowbatteryMsg";
+
+ public static final String ACTION_CALL_CMCM_SERVICE_INTERFACE = "com.cmcm.interface";
+
+ public static final String ACTION_CALL_RING = "com.enqualcomm.support.phone.ring";
+
+ public static final String ACTION_CARE_ALARM = "com.enqualcomm.support.ACTION_CARE_ALARM";
+
+ public static final String ACTION_CLOSE_UNREAD_MSG = "com.enqualcomm.support.CloseUnreadMsg";
+
+ public static final String ACTION_CM_POWERSAVE_MODE = "cmcm.call.eiot.into.powersave";
+
+ public static final String ACTION_EQC_ALARM = "com.enqualcomm.support.ACTION_EQC_ALARM";
+
+ public static final String ACTION_LOCATION_ALARM = "com.enqualcomm.support.ACTION_LOCATION_ALARM";
+
+ public static final String ACTION_EXIT_MONITOR_MODE = "com.enqualcomm.support.MONITOR_EXIT";
+
+ public static final String ACTION_HEART_RATE_RESULT = "com.eqc.heartrate.action.RESULT";
+
+ public static final String ACTION_HEATR_RATE_START = "com.eqc.heartrate.action.SILENT_START";
+ public static final String ACTION_CHECK_ANTIOFF_EVENT = "com.ic.action.CHECK_ANTIOFF_EVENT";
+
+ public static final String ACTION_IMESSAGE = "action.message";
+
+ public static final String ACTION_ISCONNECTED = "com.ic.protocol.ACTION_IS_SERVER_CONNECTED";
+
+ public static final String ACTION_ISSILENCE = "com.enqualcomm.icare.ACTION_ISSILENCE";
+
+ public static final String ACTION_ISSILENCE2IMESSAGE = "com.enqualcomm.support.ACTION_ISSILENCE2IMESSAGE";
+
+ public static final String ACTION_MISSED_CALL_GET = "com.enqualcomm.support.ACTION_MISSED_CALL_GET";
+
+ public static final String ACTION_NOTICE_ALARM = "com.enqualcomm.support.ACTION_NOTICE_ALARM";
+
+ public static final String ACTION_NOTICE_ALARM_CHANGE = "com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE";
+
+ public static final String ACTION_PASS_DATA_TO_CM_SERVICES = "com.enqualcomm.support.PASS_DATA";
+
+ public static final String ACTION_REMOTE_CAMERA = "com.enqualcomm.support.ACTION_REMOTE_CAMERA";
+
+ public static final String ACTION_REMOTE_CAMERA_OSS = "com.enqualcomm.support.ACTION_REMOTE_CAMERA_OSS";
+
+ public static final String ACTION_RESTORE_SYSTEM = "android.intent.action.MASTER_CLEAR";
+
+ public static final String ACTION_SCANPAIRMESSAGE = "com.enqualcomm.imessage.scanPairMessage";
+
+ public static final String ACTION_SEDN_VIDOE_CALL_REQ = "com.enqualcomm.imessage.sendVideoCall";
+
+ public static final String ACTION_SEND_SOS_MSG = "com.enqualcomm.support.action_send_sos";
+
+ public static final String ACTION_SEND_EMEGENCY_LOCATION_START = "action.emegency.location.start";
+ public static final String ACTION_SEND_EMEGENCY_LOCATION_STOP = "action.emegency.location.stop";
+ public static final String ACTION_LOCAL_SOS_ACTION = "com.enqualcomm.support.local_sos";
+
+ public static final String ACTION_SEND_SOS_VIDEO_FILE = "com.enqualcomm.support.action_send_sos_video_file";
+
+ public static final String ACTION_SEND_VIDEO_FILES = "com.enqualcomm.support.ACTION_SEND_VIDEO_FILES";
+
+ public static final String ACTION_SHUTDOWN_MOREINFO = "android.intent.action.ACTION_SHUTDOWN_MOREINFO";
+
+ public static final String ACTION_SOS_VIDEO_CHAT = "com.enqualcomm.imessage.ACTION_SOS_VIDEO_CHAT";
+
+ public static final String ACTION_START_DOWNLOAD = "com.enqualcomm.imessage.START_DOWNLOAD_ACTION";
+
+ public static final String ACTION_STHEART_RATE_ALARM_CHANGE = "com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE";
+
+ public static final String ACTION_SYNC = "SYNC";
+
+ public static final String ACTION_UNBOUND_TERMINAL = "com.enqualcomm.support.ACTION_UNBOUND_TERMINAL";
+
+ public static final String ACTION_UPDATE_ICON = "com.enqualcomm.support.ACTION_UPDATE_ICON";
+
+ public static final String ACTION_UPDATE_SECRET_KEY = "com.enqualcomm.support.UPDATE_SECRET_KEY";
+
+ public static final String ACTION_VIDEO_END_CALL = "com.enqualcomm.support.ACTION_VIDEO_END_CALL";
+
+ public static final String ACTION_VIDEO_LOGIN = "com.enqualcomm.imessage.ACTION_VIDEO_LOGIN";
+
+ public static final String ACTION_VIDEO_LOGOUT = "com.enqualcomm.imessage.ACTION_VIDEO_LOGOUT";
+
+ public static final String ACTION_VIDEO_RECEIVE_LOGIN = "com.enqualcomm.imessage.ACTION_VIDEO_RECEIVE_LOGIN";
+
+ public static final String ACTION_WAKEUP_ALARM = "com.eqc.deliverWakeupAlarm.action";
+
+ public static final String ACTION_YUN_ALARM_CHANGE = "com.eqc.deskclock.YUN_ALARM_CHANGE";
+
+ public static final String ACTION_PRACTICE_REPORT_ALARM = "com.enqualcomm.support.PRACTICE_ALARM";
+
+ public final static String ACTION_START_PRACTISE = "com.ic.action_start_practice";
+ public final static String KeyPractice = "cmd";
+
+ public static final int ALARM_UPDATE_NOTICE = 206;
+
+ public static final int CALL_RECORD_CHANGED = 103;
+
+ public static final String CMD_ID_CM = "cmdId";
+
+ public static final Uri CONTACT_URI = Uri.parse("content://com.enqualcomm.support/contact");
+
+ public static final Uri CM_SERVICE_SETTING = Uri.parse("content://com.cmcm.service/cmsetting");
+
+ public static final String DIALOG_ACTION = "com.enqualcomm.support.DIALOG";
+
+ public static final int ENTER_SILENT_MODE = 212;
+
+ public static final int EXIT_SILENT_MODE = 213;
+
+ public static final String FLAG = "flag";
+
+ public static final String ANTI_ALARM = "com.enqualcomm.support.ANTI_ALARM";
+ public static final String TEMP_ALARM = "com.enqualcomm.support.TEMP_ALARM";
+ public static final String HEART_ALARM = "com.enqualcomm.support.HEART_ALARM";
+
+ public static final int IDLE_MODE_CHANGED = 102;
+
+ public static final int INIT_SERVER_OK = 216;
+
+ public static final int IN_SILENCE = 600;
+
+ public static final boolean IS_OVERSEAS = false;
+
+ public static final int JUFENG_SDK_INIT = 215;
+
+ public static final String KEY_CATEGORY = "category";
+
+ public static final String KEY_COMPANY = "KEY_COMPANY";
+
+ public static final String KEY_CONTACT_ID = "contact_id";
+
+ public static final String KEY_DELETE_FILE_TIME = "KEY_DELETE_FILE_TIME";
+
+ public static final String KEY_DEVICE_ID = "key_device_id";
+
+ public static final String KEY_DEVICE_KEY = "key_device_key";
+
+ public static final String KEY_FILEPATH = "filepath";
+
+ public static final String KEY_FILETYPE = "filetype";
- public static String ACTION_SET_SIT_RANGE = "com.ic.action.set_sit_range";
- /**
- * ACTION_SET_SIT_RANGE 参数 int,分钟数。
- */
- public static String KEY_SIT_RANGE = "sit_range";
+ public static final String KEY_ID = "id";
+ public static final String KEY_ISCONNECTED = "isConnected";
- /***
- * 内部定时器用action alarm
- */
- public static String ACTION_SIT_ALARM = "com.ic.action.sit_alarm_local";
+ public static final String KEY_ISSILENCE = "KEY_ISSILENCE";
- /**
- * 发送给app做显示用
- */
- public static String ACTION_KEEPSIT_ALARM = "com.ic.action.keep_sit_alarm";
+ public static final String KEY_IS_RESUME = "key_is_resume";
+
+ public static final String KEY_JUST_TALK = "KEY_JUST_TALK";
+
+ public static final String KEY_NAME = "name";
+
+ public static final String KEY_NET_WORK_TYPE = "NET_WORK_TYPE";
+
+ public static final String KEY_NUMBER = "number";
+
+ public static final String KEY_PAIR_CID = "PAIR_CID";
+
+ public static final String KEY_REMOTE_NUMBER = "key_remote_number";
+
+ public static final String KEY_SAVE_STEP_COUNT = "key_save_step_count";
+
+ public static final String KEY_SOS_FILE_BODY = "key_sos_file_body";
+
+ public static final String KEY_SOS_FILE_FILE_TYPE = "key_sos_file_file_type";
+
+ public static final String KEY_STATUS = "key_status";
+
+ public static final String KEY_STEP_COUNT = "KEY_STEP_COUNT";
+
+ public static final String KEY_UNBOUND_FLAG = "KEY_UNBOUND_FLAG";
+
+ public static final String KEY_VIDEO_PATH = "KEY_VIDEO_PATH";
+
+ public static final int LOCATION_DATA = 217;
+
+ public static final int MONITOR_GOIN = 202;
+
+ public static final int MONITOR_GOOUT = 203;
+
+ public static final int MSG_WHAT_RELOAD_VOICE = 1000;
+
+ public static final int MSG_WHAT_SEND_OSSFILE = 1006;
+
+ public static final int MSG_WHAT_SEND_PAIR = 1003;
+
+ public static final int MSG_WHAT_SEND_PICTURE = 1002;
+
+ public static final int MSG_WHAT_SEND_VOICE = 1001;
+
+ public static final int MSG_WHAT_SILENCE_STATUS = 1005;
+
+ public static final int MSG_WHAT_VIDEO_CHAT = 1004;
+
+ public static final int MSG_WHAT_PPG = 1007;
+ public static final String key_ppg = "ppg";
+ public static final String key_bph = "bph";
+ public static final String key_bpl = "bpl";
+ public static final String key_spo2 = "sp02";
+
+
+ public static final int NEW_MEDIA_PUSH = 100;
+
+ public static final String ACTION_SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
+ public static final String OTHER_ALARM_END = "com.enqualcomm.support.OTHER_ALARM_END";
+
+ public static final String OTHER_ALARM_START = "com.enqualcomm.support.OTHER_ALARM_START";
+
+ public static final String OTHER_HEARTRATE_ALARM_END = "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_END";
+
+ public static final String OTHER_HEARTRATE_ALARM_START = "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START";
+
+ public static final int OUT_SILENCE = 700;
+
+ public static final int PASS_DATA_DIRECTLY = 500;
+
+ public static final int PLAY_RECORD_UPDATE = 207;
+
+ public static final int REBOOT_SYSTEM = 208;
+
+ public static final int RESET_SYSTEM = 210;
+
+ public static final String RESTORE_EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE";
+
+ public static final String RESTORE_REASON = "android.intent.extra.REASON";
+
+
+ public static final String ACTION_START_FOTA_UPDATE = "com.ic.action.startfotaUpdate";
+ public static final String ACTION_SMSCMD = "com.enqualcomm.support.SMSCMD";
+ public static final String ACTION_SMSCMD_Reply = "com.ic.action.fotaUpdateReply";
+ public static final String ACTION_TINTERNAL_TEST = "com.ic.action.internaltest";
+
+ public static final String KeyReplyData = "reply";
+
+ public static final String ACTION_SMSCMD_TEST = "com.ic.action.internaltest";
+
+ public static final int RESULT_ERROR = 500;
+
+ public static final int RESULT_OK = 200;
+
+ public static final String RESUME_ACTION = "com.enqualcomm.imessage.RESUME_ACTION";
+
+ public static final String SERVICE_CLS_NAME = "com.enqualcomm.support.CoreService";
+
+ public static final String SERVICE_PKG_NAME = "com.enqualcomm.support";
+
+ public static final int SHUTDOWN_SYSTM = 209;
+
+ public static final String SLEEP_ALARM = "com.enqualcomm.support.SLEEP_ALARM";
+
+ public static final String SOS_ACTION = "com.enqualcomm.imessage.SOS_ACTION";
+
+ public static final int SOS_GOIN = 204;
+
+ public static final int SOS_GOOUT = 205;
+
+ public static final String STEP_COUNT_ALARM_ACTION = "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM";
+
+ public static final String STRING_CMD_JSON_DATA = "cmdJsonData";
+
+ public static final String STWORKMODE_ALARM = "com.enqualcomm.support.ACTION_STWORKMODE_ALARM";
+
+ public static final String VALUE_SETTIING_VERSION = "value_setting_ver";
+
+ public static final int VIDEO_MESSAGE = 300;
+
+ public static final String WAKE_ALARM = "com.enqualcomm.support.WAKE_ALARM";
+
+ public static final String WEATHER_ALARM = "com.ic.alarm.ACTION_WEATHER_ALARM";
+ public static final String WEATHER_ACTION = "com.ic.action.ACTION_GET_WEATHER";
+ public static final String ACTION_QUERY_WEATHER = "com.ic.action_query_weather";
+ public static final String ACTION_WEATHER_RECEIVED = "com.ic.action_weather_recveived";
+ public static final String KEY_Weather = "weather";
+
+
+ public static final int WIFI_SET_RESULT = 217;
+
+ public static final int WORKMODE_CHANGED = 211;
+
+ public static final String contact = "contact";
+
+ public static final String wechat_contact = "content";
+
+
+ public static final String ACTION_CHECK_SERVER_RESPONSE = "com.enqualcomm.support.ACTION_CHECK_SERVER_RESPONSE";
+ public static final String ACTION_RETRY_SERVER_CONNECT = "com.enqualcomm.support.ACTION_RETRY_SERVER_CONNECT";
+ public static final String ACTION_CHECK_LOCATION_RESULT = "com.enqualcomm.support.ACTION_CHECK_LOCATION_RESULT";
+
+
+ public static final String ACTION_MESSAGE_SENT = "com.ic.action.message_sent";
+ public static final String ACTION_MESSAGE_RECEIVED = "com.ic.action.message_received";
+ public static final String KEY_MESSAGE_TYPE = "msgType"; // 分为 voice ,pic ,和 text
+ public static final String KEY_MESSAGE_URL = "msgUrl"; // 消息为 voice和 pic 此纪录为 路径, text消息则直接是消息内容。 utf-8 格式String
+ public static final String KEY_MESSAGE_FROM = "msgFrom"; // 消息来源(发送者名称),预留,暂时不用。
+
+
+ public static final String ACTION_TEMP_RESULT = "com.ic.action.temp_result";
+ public static final String KEY_TEMP_BODY = "body"; // double 体温
+ public static final String KEY_TEMP_WRIST = "wrist"; // double 腕温
+ public static final String KEY_TEMP_OUT = "out"; // double 腕温
+
+ public static String ACTION_ANTI_OFF0 = "com.ic.ACTION_ANTIOFF";
+ public static String ACTION_ANTI_OFF = "com.ic.ACTION_STRIP";
+ public static String KEY_ANTI_EVENT = "eventID"; //integer eventID =1 脱落, eventID =0 佩戴
+ public static String KEY_ANTI_TXT = "eventTxt"; //String AnitMessage
+
+
+ public static String ACTION_BATTERYLOW = "com.ic.ACTION_BATTERYLOW";
+ public static String KEY_BATTERY_EVENT = "eventID"; //integer eventID =1 battery low, eventID =0 解除
+
+ public static String PersistFotaServer2Url = "persist.sys.ota.host2";
+
+ //把服务器下发的文本消息作为短信消息存储在短信数据库中,mms.apk会接收此消息并保存到数据库
+ //persist.sys.pushtxtAsSMS == false的时候mms.apk会忽略此消息,默认事true,所以要关闭要单独设置
+ public static String ActionReceivePushTxt = "action.ic.PushTxtToSMSDB";
+ public static String ActionSrvPushTxt = "action.ic.srvPushTxt";
+
+/**
+ * PreferenceManager.getDefaultSharedPreferences(context) , package name "com.enqualcomm.support"
+ */
+ /***
+ * 心率血压血氧校准值
+ * String 变量,用 "," 分割的 4个数据 格式为【ppg_adj,bph_adj,bpl_adj,spo2_adj】
+ * 例如
+ * 心率偏差ppg_adj=2,
+ * 高压偏差bph_adj=-2,
+ * 低压偏差bpl_adj=-3,
+ * 血氧偏差spo2_adj=5
+ * 则赋值 2,-2,-3,5
+ */
+ public static String SHAREKEY_SETTING_PPG_ECG_ADJUST = "PpgEcgAdjust";
+ /**
+ * 睡眠分数 , int
+ */
+ public static String SHAREKEY_SETTING_SLEEP_SCORE = "SleepScore";
+ /**
+ * 当前睡眠分数的日期 String yyMMddHHmm
+ * 可能时昨天的,算完就是当天的
+ */
+ public static String SHAREKEY_SETTING_SLEEP_SCORE_DATE = "SleepScoreDate";
+
+ /**
+ * 久坐检测时长,int 分钟为单位,此处为读取方法,可在显示前读取当前设置。
+ * 设置请采用broadcast方式发给协议层存储
+ */
+ public static String SHAREKEY_SETTING_SIT_ALARM_RANGE_IN_MINUTES = "SIT_RANGE";
+
+ /***
+ * ACTion 用于 设置久坐时长分钟为单位
+ */
+
+ public static String ACTION_SET_SIT_RANGE = "com.ic.action.set_sit_range";
+ /**
+ * ACTION_SET_SIT_RANGE 参数 int,分钟数。
+ */
+ public static String KEY_SIT_RANGE = "sit_range";
+
+
+ /***
+ * 内部定时器用action alarm
+ */
+ public static String ACTION_SIT_ALARM = "com.ic.action.sit_alarm_local";
+
+ /**
+ * 发送给app做显示用
+ */
+ public static String ACTION_KEEPSIT_ALARM = "com.ic.action.keep_sit_alarm";
+
+
+ //获取Sensor数据的请求来源
+ public static final int FROM_SERVER = 0;
+ public static final int FROM_ALARM = 1;
+ public static final int FROM_CLIENT = 2;
}
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
-import android.os.Message;
-import android.os.Messenger;
import android.os.PowerManager;
import android.os.SystemClock;
+import android.support.annotation.Nullable;
import android.widget.Toast;
import com.enqualcomm.support.adapter.LBSHelper;
import com.enqualcomm.support.service.KeepAlive;
import com.enqualcomm.support.service.SendChatMessage;
import com.enqualcomm.support.service.SilentManager;
-import com.enqualcomm.support.service.UpLoadDataPoints;
import com.enqualcomm.support.service.base.AbstractConnectionService;
import com.enqualcomm.support.service.base.AbstractInvokeHandlerService;
import com.enqualcomm.support.utils.AlarmHelper;
import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_START;
import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_STOP;
import static com.enqualcomm.support.Constants.ANTI_ALARM;
+import static com.enqualcomm.support.Constants.FROM_ALARM;
import static com.enqualcomm.support.Constants.HEART_ALARM;
import static com.enqualcomm.support.Constants.KEY_SAVE_STEP_COUNT;
import static com.enqualcomm.support.Constants.KEY_STEP_COUNT;
}
};
- private BroadcastReceiver broadcastPracticeCMDReceiver = new BroadcastReceiver() {
+ private final BroadcastReceiver broadcastPracticeCMDReceiver = new BroadcastReceiver() {
public void onReceive(Context param1Context, Intent param1Intent) {
if (param1Intent.getAction().equals(Constants.ACTION_START_PRACTISE)) {
int cmd = param1Intent.getIntExtra(Constants.KeyPractice, 0);
//停止自由锻炼,恢复正常
Runtime.practising = false;
Util.setSystemProperties(Config.KeyPractiseState, "false");
- HeartRateManager.stopPPGtest();
//最后检测是否还有数据需要发送
if (Runtime.healthInfo.check_info_item_finished()) {
private KeepAlive mKeepAlive;
- final Messenger mMessenger = new Messenger(new RequestHandler(this));
-
private SimSignalUtil mSignalUtil;
}
};
- private int startAlarmCount = 0;
-
- UpLoadDataPoints upLoadDataPoints;
-
-
private AbstractConnectionService getConnectionServiceChain() {
-// Initialize initialize = new Initialize();
CheckSIM checkSIM = new CheckSIM();
this.mKeepAlive = new KeepAlive();
this.mDeliver = new Deliver(this.connection, this.runtime);
-// initialize.setNext(checkSIM);
checkSIM.setNext(this.mKeepAlive);
this.mKeepAlive.setNext(this.mDeliver);
return checkSIM;
}
-
SilentManager silentManager;
private AbstractInvokeHandlerService getInvokeHandlerServiceChain() {
ICLogger.i("getInvokeHandlerServiceChain");
SendChatMessage sendChatMessage = new SendChatMessage();
- HeartRateManager heartRateManager = new HeartRateManager(this.runtime, this.connection);
+ HeartRateManager heartRateManager = HeartRateManager.getInstance();
+ heartRateManager.init(this.runtime);
antiservice = new AntiMonitorService();
silentManager = SilentManager.getInstance();// new SilentManager();
sendChatMessage.setNext(heartRateManager);
private void setPracticeAlarm() {
-
ICLogger.i("setPracticeAlarm " + Runtime.practice_cycle + " seconds!");
//只有周期大于1才有效,否则就等于单次测量
if (Runtime.practice_cycle > 1)
- AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context, Runtime.practice_cycle, Constants.ACTION_PRACTICE_REPORT_ALARM);
+ AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,
+ Runtime.practice_cycle,
+ Constants.ACTION_PRACTICE_REPORT_ALARM);
mHandler.post(mdoPracticeCheck);
}
- private Runnable mdoPracticeCheck = new Runnable() {
+ private final Runnable mdoPracticeCheck = new Runnable() {
@Override
public void run() {
//获取并设置当前步数
// locationClient.triggerLocationProcess();
//开启测温
if (runtime.check_stat_do_temp_test())
- TemperatureUtil.DoTempTest();
+ TemperatureUtil.getInstance().DoTempTest(FROM_ALARM);
//开启测量PPG
if (runtime.check_stat_do_ppg_test())
- HeartRateManager.triggerPPGtest();
+ HeartRateManager.getInstance().triggerPPGTest(FROM_ALARM);
}
};
}
private void wakeUpFromSleep() {
- this.startAlarmCount = 0;
// alarmCycle = 1;
// setAlarm(alarmCycle);
// runtime.getLocationInstance().setLocation_cycle(1);
return wakeLock;
}
- public IBinder onBind(Intent paramIntent) {
- return this.mMessenger.getBinder();
- }
-
public Runtime getRuntime() {
return runtime;
//收到定时定位消息
setLocationAlarm(runtime.getLocationInstance().getWorkingMod());
StringBuilder stringBuilder1 = new StringBuilder();
- stringBuilder1.append("LOCATION_ALARM work mod=");
+ stringBuilder1.append("LOCATION_ALARM com.ic.work mod=");
stringBuilder1.append(runtime.getLocationInstance().getWorkingMod());
if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", stringBuilder1.toString());
// this.locationClient.triggerLocationProcess();
} else if (Constants.ACTION_PRACTICE_REPORT_ALARM.equals(paramIntent.getAction())) {
//alarm是延迟的,所以这个判断主要是给最后一次可能无效的测量
- if (Runtime.practising == true) {
+ if (Runtime.practising) {
//开始下一轮健康测量
setPracticeAlarm();
}
}
if (runtime.check_stat_do_ppg_test()) {
- if (Runtime.practising == true) {
+ if (Runtime.practising) {
sb.append("自由锻炼中,跳过原有的循环心率检测!");
ICLogger.i("自由锻炼中,跳过原有的循环心率检测!");
} else {
sb.append("setHeartRateDetectAlarm " + heartRateDetectAlarmCycle);
if (!server_starting)
- HeartRateManager.triggerPPGtest();
+ HeartRateManager.getInstance().triggerPPGTest(FROM_ALARM);
}
}
if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", sb.toString());
ICLogger.i("locationCycle == 0 stop Location !");
Config.noLocationCycle = true;
}
- if (Config.noLocationCycle == false)
+ if (!Config.noLocationCycle)
AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context, cycle, ACTION_LOCATION_ALARM);
else
ICLogger.i("skip set LocationAlarm ");
}
public void setTempAlarm() {
-// int mod=runtime.getLocationInstance().getWorkingMod();
StringBuilder sb = new StringBuilder();
int cycle = runtime.temp_test_Cycle;
} else {
sb.append(" setTempAlarm " + TEMP_ALARM + ", cycle " + cycle + "<=1 skip!");
}
-// locationClient.triggerLocationProcess();
ICLogger.i(sb.toString());
FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString());
if (runtime.check_stat_do_temp_test()) {
- if (Runtime.practising == true) {
+ if (Runtime.practising) {
ICLogger.i("自由锻炼中,跳过原有的循环温度检测!");
} else {
+ ICLogger.d("server_starting == > " + server_starting);
if (!server_starting)
- TemperatureUtil.doTempTestInThread();
+ TemperatureUtil.getInstance().doTempTestInThread(FROM_ALARM);
}
}
}
}
- private static class RequestHandler extends Handler {
- private final WeakReference<CoreService> mReference;
-
- RequestHandler(CoreService param1CoreService) {
- this.mReference = new WeakReference(param1CoreService);
- }
-
- public void handleMessage(Message param1Message) {
- CoreService coreService = (CoreService) this.mReference.get();
- if (coreService == null)
- return;
- coreService.invokeHandlerServiceChain.processUserRequest(param1Message, coreService.connection, coreService.runtime);
- }
- }
-
private static final String TAG = "ICSrv." + CoreService.class.getSimpleName();
private ScheduledThreadPoolExecutor mTimer_retry_connect = null;
}
}
- private boolean needLogin() {
- return true;
- }
-
-
@Override
public void onDestroy() {
super.onDestroy();
-
-
saveStepCount();
this.connectionServiceChain.processDetach(this.connection, this.runtime);
this.invokeHandlerServiceChain.processDetach(this.connection, this.runtime);
}
+ @Nullable
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+
public void disconnect_server() {
this.connection.close();
}
import android.os.Handler;\r
import android.support.multidex.MultiDex;\r
import android.util.SparseArray;\r
-import com.enqualcomm.support.utils.ICLogger;\r
-import java.util.HashMap;\r
-\r
\r
+import com.enqualcomm.support.utils.ICLogger;\r
\r
-import de.mindpipe.android.logging.log4j.LogConfigurator;\r
+import java.util.HashMap;\r
\r
\r
public class ICApplication extends Application {\r
private static final String TAG = "protocol." + ICApplication.class.getSimpleName();\r
// private static final boolean DEBUG = BuildConfig.DEBUG;\r
\r
- private static ICApplication instance=null;\r
+ private static ICApplication instance = null;\r
+\r
+ public static Context sContext = null;\r
\r
- private static HashMap<String, SparseArray<Handler>> mConfigurationChangedHandlerHashMap = new HashMap<>();\r
\r
+ private final static HashMap<String, SparseArray<Handler>> mConfigurationChangedHandlerHashMap = new HashMap<>();\r
\r
-// private static void log(String msg) {\r
-// if (DEBUG) {\r
-// Log.i(TAG, msg);\r
-//// FileLoger.log(TAG, "", msg);\r
-// }\r
-// }\r
-//\r
-// private static void log(String funcName, String msg) {\r
-// if (DEBUG) {\r
-// Log.i(TAG, "[" + funcName + "]" + msg);\r
-//// FileLoger.log(TAG, funcName, msg);\r
-// }\r
-// }\r
\r
@Override\r
public void onCreate() {\r
super.onCreate();\r
-\r
ICLogger.setContext(this.getApplicationContext());\r
-\r
String info = String.format("VERSION_CODE:%s, VERSION_NAME:%s",\r
BuildConfig.VERSION_CODE, BuildConfig.VERSION_NAME);\r
-// log("onCreate", info);\r
- ICLogger.i(TAG+"[onCreate]" + info);\r
-\r
+ ICLogger.i(TAG + "[onCreate]" + info);\r
CrashHandler crashHandler = CrashHandler.getInstance();\r
crashHandler.init(getApplicationContext());\r
instance = this;\r
-\r
- // String softwareVersion = SystemProperties.get("ro.eqc.software_version");\r
- // log("softwareVersion:" + softwareVersion);\r
-\r
+ sContext = getApplicationContext();\r
}\r
\r
\r
\r
for (Object keyObj : mConfigurationChangedHandlerHashMap.keySet()) {\r
String key = (String) keyObj;\r
- ICLogger.i("WatchApplication"+ " onConfigurationChanged, " + key);\r
+ ICLogger.i("WatchApplication" + " onConfigurationChanged, " + key);\r
SparseArray<Handler> sparseArray = mConfigurationChangedHandlerHashMap.get(key);\r
if (sparseArray != null) {\r
Handler handler = sparseArray.valueAt(0);\r
public static final int NORMAL_MOD=1; //location rate 1 time per 15 minutes\r
public static final int LOWPOWER_MOD=2; // location rate 1 time per hour\r
public static final int REALTIME_MOD=3; //location rate 1 time per minutes\r
- public static final int EMERGNECY_MOD=4; //location rate 1 time per minutes work 5 minutes\r
+ public static final int EMERGNECY_MOD=4; //location rate 1 time per minutes com.ic.work 5 minutes\r
public static final int CUSTOM_MOD=5; //location rate 1 time per minutes\r
public static final int CUSTOM_MOD8_GPS=8; //location rate 1 time per minutes\r
public static final int CUSTOM_MOD8_WIFI=9; //location rate 1 time per minutes\r
private String lastTestTime;\r
private int lastBPH;\r
private int lastBPL;\r
- private int lastSpo2=0;\r
-\r
- private int BPH_ref=0;\r
- private int BPL_ref=0;\r
- private int Age=0;\r
- private int Sex=0;\r
- private int sp02_adjust=0;\r
- private int ppg_adjust=0;\r
- private int bph_adjust=0;\r
- private int bpl_adjust=0;\r
-\r
- public int ppg_threshold_max=0;\r
- public int ppg_threshold_min=0;\r
- public int bph_threshold_max=0;\r
- public int bph_threshold_min=0;\r
- public int bpl_threshold_max=0;\r
- public int bpl_threshold_min=0;\r
-\r
- public void setXY_Ref(int refBPH,int refBPL,int refSex,int refAge){\r
- BPH_ref=refBPH;\r
- BPL_ref=refBPL;\r
- Age=refAge;\r
- Sex=refSex;\r
+ private int lastSpo2 = 0;\r
+\r
+ private int BPH_ref = 0;\r
+ private int BPL_ref = 0;\r
+ private int Age = 0;\r
+ private int Sex = 0;\r
+ private int sp02_adjust = 0;\r
+ private int ppg_adjust = 0;\r
+ private int bph_adjust = 0;\r
+ private int bpl_adjust = 0;\r
+\r
+ public int ppg_threshold_max = 0;\r
+ public int ppg_threshold_min = 0;\r
+ public int bph_threshold_max = 0;\r
+ public int bph_threshold_min = 0;\r
+ public int bpl_threshold_max = 0;\r
+ public int bpl_threshold_min = 0;\r
+\r
+ public void setXY_Ref(int refBPH, int refBPL, int refSex, int refAge) {\r
+ BPH_ref = refBPH;\r
+ BPL_ref = refBPL;\r
+ Age = refAge;\r
+ Sex = refSex;\r
}\r
\r
- public void setAdjust(int _ppg_adjust,int _bph_adjust,int _bpl_adjust ,int _sp02_adjust){\r
- ppg_adjust=_ppg_adjust;\r
- bph_adjust=_bph_adjust;\r
- bpl_adjust=_bpl_adjust;\r
- sp02_adjust=_sp02_adjust;\r
+ public void setAdjust(int _ppg_adjust, int _bph_adjust, int _bpl_adjust, int _sp02_adjust) {\r
+ ppg_adjust = _ppg_adjust;\r
+ bph_adjust = _bph_adjust;\r
+ bpl_adjust = _bpl_adjust;\r
+ sp02_adjust = _sp02_adjust;\r
}\r
\r
\r
private HEARTRATE_WORKINGSTAT currentStat;\r
+\r
public enum HEARTRATE_WORKINGSTAT {\r
HEARTRATE_CLOSED,\r
HEARTRATE_OPEN,\r
HEARTRATE_WARED_AND_TESTING,\r
HEARTRATE_TEST_SUCCESS,\r
HEARTRATE_TEST_FAILED,\r
- } ;\r
-\r
- public boolean isHeartrRateExists(){\r
- return ICJniUtils.isPPGavailable()==1;\r
}\r
\r
- public HEARTRATE_WORKINGSTAT getHeartrateWorkingStat(){\r
+ ;\r
+\r
+ public boolean isHeartrRateExists() {\r
+ return ICJniUtils.isPPGavailable() == 1;\r
+ }\r
\r
+ public HEARTRATE_WORKINGSTAT getHeartrateWorkingStat() {\r
return currentStat;\r
}\r
\r
- public void setHeartrateStat(HEARTRATE_WORKINGSTAT stat){\r
+ public void setHeartrateStat(HEARTRATE_WORKINGSTAT stat) {\r
\r
currentStat = stat;\r
}\r
- public int getPPG(){\r
- int ppg=lastHeartrate;\r
- if(ppg_adjust!=0)\r
- ppg+=ppg_adjust;\r
+\r
+ public int getPPG() {\r
+ int ppg = lastHeartrate;\r
+ if (ppg_adjust != 0)\r
+ ppg += ppg_adjust;\r
return ppg;\r
}\r
\r
public int getBPH() {\r
- int BPH=lastBPH;\r
- if (BPH_ref>=35 && BPH_ref<200) {\r
+ int BPH = lastBPH;\r
+ if (BPH_ref >= 35 && BPH_ref < 200) {\r
if (lastBPH > BPH_ref + 20)\r
BPH = BPH_ref + 20;\r
if (lastBPH < BPH_ref - 20)\r
BPH = BPH_ref - 20;\r
}\r
\r
- if (bph_adjust!=0){\r
- BPH+=bph_adjust;\r
+ if (bph_adjust != 0) {\r
+ BPH += bph_adjust;\r
}\r
return BPH;\r
}\r
+\r
public int getBPL() {\r
- int BPL=lastBPL;\r
- if(BPL_ref>=35 && BPL_ref<200) {\r
+ int BPL = lastBPL;\r
+ if (BPL_ref >= 35 && BPL_ref < 200) {\r
if (lastBPL > BPL_ref + 20)\r
BPL = BPL_ref + 20;\r
if (lastBPL < BPL_ref - 20)\r
BPL = BPL_ref - 20;\r
}\r
\r
- if (bpl_adjust!=0){\r
- BPL+=bpl_adjust;\r
+ if (bpl_adjust != 0) {\r
+ BPL += bpl_adjust;\r
}\r
return BPL;\r
}\r
\r
\r
- public int getSpo2(){\r
- int sp02=lastSpo2;\r
- if (sp02_adjust!=0)\r
- sp02+=sp02_adjust;\r
+ public int getSpo2() {\r
+ int sp02 = lastSpo2;\r
+ if (sp02_adjust != 0)\r
+ sp02 += sp02_adjust;\r
return sp02;\r
}\r
\r
\r
- public String getTestTime(){\r
+ public String getTestTime() {\r
return lastTestTime;\r
}\r
- public void setLastTestTime(String testtime){\r
- lastTestTime=testtime;\r
+\r
+ public void setLastTestTime(String testtime) {\r
+ lastTestTime = testtime;\r
}\r
\r
\r
- public void setLastHeartrate(int value,int bph,int bpl){\r
- lastHeartrate=value;\r
- lastBPH=bph;\r
- lastBPL=bpl;\r
+ public void setLastHeartrate(int value, int bph, int bpl) {\r
+ lastHeartrate = value;\r
+ lastBPH = bph;\r
+ lastBPL = bpl;\r
}\r
\r
- public void setLastHeartrate(int value,int bph,int bpl,int sp02){\r
- lastHeartrate=value;\r
- lastBPH=bph;\r
- lastBPL=bpl;\r
- lastSpo2=sp02;\r
+ public void setLastHeartrate(int value, int bph, int bpl, int sp02) {\r
+ lastHeartrate = value;\r
+ lastBPH = bph;\r
+ lastBPL = bpl;\r
+ lastSpo2 = sp02;\r
}\r
\r
-//心率低阀值,低于该阀值上传心率,如果未设置,则留空\r
+ //心率低阀值,低于该阀值上传心率,如果未设置,则留空\r
//心率高阀值,高于该阀值上传心率,如果未设置,则留空\r
//低压阀值,低压低于该阀值上传血压,如果未设置,则留空\r
//低压阀值,低压高于该阀值上传血压,如果未设置,则留空\r
//高压阀值,高压低于该阀值上传血压,如果未设置,则留空\r
//高压阀值,高压高于该阀值上传血压,如果未设置,则留空\r
- public void setWarningThreshold(int _ppg_threshold_max,int _ppg_threshold_min,int _bph_threshold_max,int _bph_threshold_min,int _bpl_threshold_max,int _bpl_threshold_min){\r
- ppg_threshold_max=_ppg_threshold_max;\r
- ppg_threshold_min=_ppg_threshold_min;\r
- bph_threshold_max=_bph_threshold_max;\r
- bph_threshold_min=_bph_threshold_min;\r
- bpl_threshold_max=_bpl_threshold_max;\r
- bpl_threshold_min=_bpl_threshold_min;\r
+ public void setWarningThreshold(int _ppg_threshold_max, int _ppg_threshold_min, int _bph_threshold_max, int _bph_threshold_min, int _bpl_threshold_max, int _bpl_threshold_min) {\r
+ ppg_threshold_max = _ppg_threshold_max;\r
+ ppg_threshold_min = _ppg_threshold_min;\r
+ bph_threshold_max = _bph_threshold_max;\r
+ bph_threshold_min = _bph_threshold_min;\r
+ bpl_threshold_max = _bpl_threshold_max;\r
+ bpl_threshold_min = _bpl_threshold_min;\r
}\r
}\r
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import static com.enqualcomm.support.Constants.ACTION_WAKEUP_ALARM;
import static com.enqualcomm.support.Constants.DIALOG_ACTION;
+import static com.enqualcomm.support.Constants.FROM_SERVER;
import static com.enqualcomm.support.bean.Contact.CATEGORY_GROUP;
import static com.enqualcomm.support.bean.Content.CONTACT_CATEGORY_GROUP;
if (Util.getSystemProperties("persist.sys.do_check_condition", "false").equals("true")) {
//开启测温
if (mRuntime.check_stat_do_temp_test()) {
- TemperatureUtil.DoTempTest();
+ TemperatureUtil.getInstance().DoTempTest(FROM_SERVER);
}
Util.mSleep(5000);
//开启测量PPG
if (mRuntime.check_stat_do_ppg_test()) {
- HeartRateManager.triggerPPGtest();
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
}
}
package com.enqualcomm.support.service;
import android.content.BroadcastReceiver;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-import android.os.Bundle;
+import android.content.ServiceConnection;
import android.os.Handler;
-import android.os.HandlerThread;
+import android.os.IBinder;
import android.os.Message;
-import android.os.Messenger;
-import android.os.PowerManager;
import com.enqualcomm.support.Config;
-import com.enqualcomm.support.Constants;
import com.enqualcomm.support.CoreService;
+import com.enqualcomm.support.ICApplication;
import com.enqualcomm.support.LocationClient;
import com.enqualcomm.support.bean.Runtime;
import com.enqualcomm.support.bean.StringMessage;
import com.enqualcomm.support.service.base.AbstractInvokeHandlerService;
import com.enqualcomm.support.utils.Connection;
import com.enqualcomm.support.utils.ICLogger;
-import com.enqualcomm.support.utils.SimSignalUtil;
import com.enqualcomm.support.utils.TimeUtil;
-import com.enqualcomm.support.utils.Util;
-import com.ic.jni.ICJniUtils;
import com.ic.protocols.protocolAPIHelper;
+import com.ic.work.IHeartRateSensorCallback;
+import com.ic.work.IHeartRateSensorService;
+import com.ic.work.domain.HeartRate;
-import java.util.Random;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import static android.content.Context.SENSOR_SERVICE;
import static com.enqualcomm.support.Constants.ACTION_BROADCAST_PPG;
import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;
-import static com.enqualcomm.support.Constants.MSG_WHAT_PPG;
-import static com.enqualcomm.support.Constants.key_bph;
-import static com.enqualcomm.support.Constants.key_bpl;
-import static com.enqualcomm.support.Constants.key_ppg;
-import static com.enqualcomm.support.Constants.key_spo2;
-
-public class HeartRateManager extends AbstractInvokeHandlerService implements SensorEventListener {
- private int mNetworkType;
- private SimSignalUtil mSignalUtil;
+public class HeartRateManager extends AbstractInvokeHandlerService {
private Runtime runtime;
- private Connection connection;
+ private static final Handler mHandler = null;
- private ScheduledThreadPoolExecutor timerPPG = null;
- private static Handler mHandler = null;
+ public final static String ACTION_HEART_RATE = "com.ic.sensor.data.action.HEART_RATE";
private void checkWarning() {
//ppg
if (runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_HIGH)) {
//trigger AP10 报警定位
-// Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));
ICLogger.i("triggerSOSLocationProcess ");
LocationClient.getInstance().triggerSOSLocationProcess();
}
} else if (runtime.getHRS().ppg_threshold_min > 0 && runtime.getHRS().getPPG() < runtime.getHRS().ppg_threshold_min) {
if (runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_LOW)) {
//trigger AP10 报警定位
-// Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));
ICLogger.i("triggerSOSLocationProcess ");
LocationClient.getInstance().triggerSOSLocationProcess();
}
//trigger AP10 报警定位
ICLogger.i("triggerSOSLocationProcess ");
LocationClient.getInstance().triggerSOSLocationProcess();
-// Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));
}
} else if (runtime.getHRS().bph_threshold_min > 0 && runtime.getHRS().getBPH() < runtime.getHRS().bph_threshold_min) {
//trigger AP10 报警定位
ICLogger.i("triggerSOSLocationProcess ");
LocationClient.getInstance().triggerSOSLocationProcess();
-// Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));
}
}
//trigger AP10 报警定位
ICLogger.i("triggerSOSLocationProcess ");
LocationClient.getInstance().triggerSOSLocationProcess();
-// Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));
}
} else if (runtime.getHRS().bpl_threshold_min > 0 && runtime.getHRS().getBPL() < runtime.getHRS().bpl_threshold_min) {
//trigger AP10 报警定位
ICLogger.i("triggerSOSLocationProcess ");
LocationClient.getInstance().triggerSOSLocationProcess();
-// Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));
}
}
runtime.getContextProxy().context.sendBroadcast(pedIntent);
}
- public HeartRateManager(Runtime _runtime, Connection _connection) {
- runtime = _runtime;
- connection = _connection;
- currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_CLOSED;
- isTimerStarted = false;
- mSensorManager = (SensorManager) runtime.getContextProxy().context.getSystemService(SENSOR_SERVICE);
- mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
- HandlerThread handlerThread = new HandlerThread("ic:heart-handler-thread");
- handlerThread.start();
- mHandler = new Handler(handlerThread.getLooper(), message -> {
- switch (message.what) {
- case 100: {
- //只有检测PPG成功,且网络连接中才发送数据
- if (runtime.getHRS().getHeartrateWorkingStat() == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS) {
- runtime.getHRS().setLastTestTime(TimeUtil.getSystemTime3());
- //发送PPG给Launcher,显示在主界面用
- sendHeartBroadcast(runtime.getHRS().getPPG(), runtime.getHRS().getSpo2());
- if (Runtime.practising == true) {
- ICLogger.i("自由锻炼中,设置测量心率! " + runtime.getHRS().getPPG() + "," + runtime.getHRS().getBPH() + "," + runtime.getHRS().getBPL() + "," + runtime.getHRS().getSpo2());
- Runtime.healthInfo.setPPGECGData(runtime.getHRS().getPPG(), runtime.getHRS().getBPH(), runtime.getHRS().getBPL(), runtime.getHRS().getSpo2());
-
- //因为心率和定位用时都比温度多,但是定位和心率不一定谁用时多,所以两个都需要检测是否结束
- if (Runtime.healthInfo.check_info_item_finished()) {
- Runtime.healthInfo.appendBuffer(Runtime.healthInfo.getHealthInfoString());
- ICLogger.i("自由锻炼中,测量完成,添加一条记录! 当前条数 " + Runtime.healthInfo.getInfoCount());
- Runtime.healthInfo.reset();
- }
- if (Runtime.healthInfo.getInfoCount() >= (30 - 1)) {
- //超过30次发送数据给服务器
- ICLogger.i("自由锻炼中,发送数据给服务器 " + Runtime.healthInfo.getBufferData().length);
- mHandler.post(new Runnable() {
- @Override
- public void run() {
-// ICHttpUtil.uploadData(Runtime.healthInfo.getBufferDataStr(),runtime,TimeUtil.getSystemTime2(),null);
- Deliver.sendLocationMSG(protocolAPIHelper.getPRACTICE());
- //发送过后重置
- Runtime.healthInfo.resetBuffer();
- }
- });
- }
- } else {
- StringMessage PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(runtime);
- //发送给EQC服务器的
- sendBroadcastPPGResult();
- //因为协议中没有时间变量,所以只能实时传输,如果恰巧没有网络也只能丢弃,有时间变量的话,可以考虑通过deliver的buffer来进行缓存发送
- if (PPGDATA == null) {
- StringMessage ppgd = protocolAPIHelper.getPPG_MSG(runtime.getHRS().getPPG(), runtime);
- StringMessage bloodd = protocolAPIHelper.getBlood_MSG(runtime.getHRS().getBPH(), runtime.getHRS().getBPL(), runtime);
- StringMessage oxd = protocolAPIHelper.getOxygen_MSG(runtime.getHRS().getSpo2(), runtime);
- Deliver.sendLocationMSG(ppgd);
- Deliver.sendLocationMSG(bloodd);
- Deliver.sendLocationMSG(oxd);
-
- checkWarning();
-
- } else {
- Deliver.sendLocationMSG(PPGDATA);
- ICLogger.i("Send PPG " + PPGDATA.isFromCache());
- checkWarning();
- }
- }
- } else {
- ICLogger.i("PPG Failed for Timeout!");
- }
- stopPPG();
- }
- break;
- case 200: {
- startPPG();
- }
- break;
- case 300: {
- stopPPG();
+ private static HeartRateManager sInstance = null;
+
+ public static HeartRateManager getInstance() {
+ if (sInstance == null) {
+ synchronized (HeartRateManager.class) {
+ if (sInstance == null) {
+ sInstance = new HeartRateManager();
}
- break;
}
- return false;
- });
-
+ }
+ return sInstance;
}
- private void sendBroadcastPPGResult() {
- Intent intent = new Intent(ACTION_BROADCAST_PPG);
- intent.putExtra("ppg", runtime.getHRS().getPPG());
- intent.putExtra("bph", runtime.getHRS().getBPH());
- intent.putExtra("bpl", runtime.getHRS().getBPL());
- intent.putExtra("spo2", runtime.getHRS().getSpo2());
- intent.putExtra("time", runtime.getHRS().getTestTime());
- runtime.getContextProxy().context.sendBroadcast(intent);
+ private HeartRateManager() {
+ //绑定远程服务
+ Intent intent = new Intent();
+ intent.setAction(ACTION_HEART_RATE);
+ ICApplication.sContext.bindService(intent, mRemoteConnection, Context.BIND_AUTO_CREATE);
}
- private SensorManager mSensorManager;
- private Sensor mHeartRate;
- int PPG;
- int BPH;
- int BPL;
- int SPo2;
- boolean isWared;
- boolean isPPGTesting;
- static boolean isTimerStarted;
- public static heartRateStatus.HEARTRATE_WORKINGSTAT currentStat;
- static int delayCount;
- static int testCount;
- static int notWaredCount;
- static int noPPGCount;
- private final int MAX_TESTTIMES = 30000;//最大延迟测试时间为30秒
-
- public int randomOxygenValue() {
- int min = 95;
- int max = 99;
- int ret = min + ((int) (new Random().nextFloat() * (max - min)));
- return ret;
+ public void init(Runtime runtime) {
+ this.runtime = runtime;
}
- public void doPPGtest() {
-
- int hrsType = ICJniUtils.isPPGavailable();
- if (hrsType > 0 && hrsType != ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()) {
- PPG = ICJniUtils.getPPG();//调用底层函数保证状态更新。
- BPH = ICJniUtils.getHighBloodPressure();
- BPL = ICJniUtils.getLowBloodPressure();
- SPo2 = ICJniUtils.getSPO2();
- if (SPo2 == 0) {
- SPo2 = randomOxygenValue();
- }
- isWared = (ICJniUtils.isWeared() == 1);
- isPPGTesting = (ICJniUtils.isPPGStarted() == 1);
- } else {
- isPPGTesting = true;
- }
- ICLogger.i("PPG TESTING=" + isPPGTesting + ", isWared=" + isWared + ", PPG=" + PPG + ", BPH=" + BPH + ", BPL=" + BPL + ", SPo2=" + SPo2);
- if (isPPGTesting) {
- if (isWared) {
- if (PPG > 0) {
- currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS;
- } else {
- currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_WARED_AND_TESTING;
- }
- } else {
- currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_NOTWARED;
- }
- } else {
- currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_CLOSED;
- }
+ private IHeartRateSensorService heartRateSensorService;
+ private final ServiceConnection mRemoteConnection = new ServiceConnection() {
- if (currentStat == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_NOTWARED) {
- notWaredCount--;
- if (notWaredCount < 0) { //没有佩戴次数到限制后,停止检测
- ICLogger.i("HEARTRATE_NOTWARED 超过时限,取消检测报告!");
- stopPPG();
- }
- } else if (currentStat == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_WARED_AND_TESTING) {
- noPPGCount--;
- if (noPPGCount < 0) { //没有佩戴次数到限制后,停止检测
- ICLogger.i("HEARTRATE WARED And Testing (Wared=1 PPG=0)超过时限,取消检测报告!");
- stopPPG();
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ ICLogger.d("onServiceConnected...");
+ heartRateSensorService = IHeartRateSensorService.Stub.asInterface(service);
+ try {
+ heartRateSensorService.registerCallback(mRemoteCallback);
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ ICLogger.d("onServiceDisconnected...");
- if (currentStat == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS) {
- runtime.getHRS().setLastHeartrate(PPG, BPH, BPL, SPo2);
- delayCount--;
- if (delayCount < 0) //达到延迟时间后,停止检测并发送数据
- sendAndStopPPG();
-
- } else {
- runtime.getHRS().setLastHeartrate(0, 0, 0, 0);
}
- runtime.getHRS().setHeartrateStat(currentStat);
-
+ };
- testCount--;
- if (testCount < 0) {
- ICLogger.i("PPG 超过 " + MAX_TESTTIMES + "秒 未能得出结果,取消检测报告!");
- stopPPG();
+ private final IHeartRateSensorCallback.Stub mRemoteCallback = new IHeartRateSensorCallback.Stub() {
+ @Override
+ public void onHeartRateGet(HeartRate heartRate) {
+ //处理心率结果
+ ICLogger.d("心率测试结果来了..." + heartRate);
+ runtime.getHRS().setHeartrateStat(heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS);
+ runtime.getHRS().setLastHeartrate(heartRate.getHeartRate(), heartRate.getBloodHeight(), heartRate.getBloodLow(), heartRate.getOxygen());
+ uploadResult();
}
- }
-
- private void sendAndStopPPG() {
- //结束和发送数据
- mHandler.sendEmptyMessage(100);
- }
-
- PowerManager.WakeLock mWakeLock = null;
-
- public PowerManager.WakeLock getPPGWakeLock() {
- mWakeLock = ((PowerManager) (runtime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, HeartRateManager.class.getSimpleName());
- mWakeLock.acquire(30000L);
- return mWakeLock;
- }
-
- public void releaseWakeLock() {
- if (mWakeLock != null && mWakeLock.isHeld()) {
- mWakeLock.release();
+ @Override
+ public void onGetData() {
+ ICLogger.d("正在获取心率数据...");
}
- mWakeLock = null;
- }
-
- public void startPPG() {
-
- int hrsType = ICJniUtils.isPPGavailable();
- if (hrsType > 0 && (isTimerStarted == false)) {
- currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_OPEN;
- delayCount = 4;//检测成功后4秒发送数据
- notWaredCount = 5; //初始化没有佩戴的检测次数5,连续5秒没有佩戴则取消检测
- noPPGCount = 30;//即使佩戴了,但是30秒没有出结果,也认为无效
- testCount = MAX_TESTTIMES;//测试MAX_TESTTIMES后没有结果也要强制退出
- isTimerStarted = true;
- getPPGWakeLock();
- if (hrsType == ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()) {
-
- boolean ret = mSensorManager.registerListener(this, mHeartRate, SensorManager.SENSOR_DELAY_UI);
- ICLogger.i("Heart Rate PPG_EGC_TYPE_IC66 opened ret :: " + ret);
-
- } else {
- int ret = ICJniUtils.enablePPG();
- ICLogger.i("Start PPG test ret=" + ret);
- timerPPG = new ScheduledThreadPoolExecutor(10);
- timerPPG.scheduleAtFixedRate(new Runnable() {
- @Override
- public void run() {
- doPPGtest();
- }
- }, 0, 1000, TimeUnit.MILLISECONDS); //1 秒更新一次数据
-
- }
+ @Override
+ public void onWaiting() {
+ ICLogger.d("正在等待心率测试任务执行...");
}
- }
+ };
- public void stopPPG() {
- if (isTimerStarted) {
- int hrsType = ICJniUtils.isPPGavailable();
- if (hrsType == ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()) {
- mSensorManager.unregisterListener(this);
- ICLogger.i("Heart Rate PPG_EGC_TYPE_IC66 closed");
+ private void uploadResult() {
+ //只有检测PPG成功,且网络连接中才发送数据
+ if (this.runtime.getHRS().getHeartrateWorkingStat() == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS) {
+ this.runtime.getHRS().setLastTestTime(TimeUtil.getSystemTime3());
+ //发送PPG给Launcher,显示在主界面用
+ sendHeartBroadcast(this.runtime.getHRS().getPPG(), this.runtime.getHRS().getSpo2());
+ if (Runtime.practising) {
+ ICLogger.i("自由锻炼中,设置测量心率! " + this.runtime.getHRS().getPPG() + "," + this.runtime.getHRS().getBPH() + "," + this.runtime.getHRS().getBPL() + "," + this.runtime.getHRS().getSpo2());
+ Runtime.healthInfo.setPPGECGData(this.runtime.getHRS().getPPG(), this.runtime.getHRS().getBPH(), this.runtime.getHRS().getBPL(), this.runtime.getHRS().getSpo2());
+
+ //因为心率和定位用时都比温度多,但是定位和心率不一定谁用时多,所以两个都需要检测是否结束
+ if (Runtime.healthInfo.check_info_item_finished()) {
+ Runtime.healthInfo.appendBuffer(Runtime.healthInfo.getHealthInfoString());
+ ICLogger.i("自由锻炼中,测量完成,添加一条记录! 当前条数 " + Runtime.healthInfo.getInfoCount());
+ Runtime.healthInfo.reset();
+ }
+ if (Runtime.healthInfo.getInfoCount() >= (30 - 1)) {
+ //超过30次发送数据给服务器
+ ICLogger.i("自由锻炼中,发送数据给服务器 " + Runtime.healthInfo.getBufferData().length);
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+// ICHttpUtil.uploadData(Runtime.healthInfo.getBufferDataStr(),runtime,TimeUtil.getSystemTime2(),null);
+ Deliver.sendLocationMSG(protocolAPIHelper.getPRACTICE());
+ //发送过后重置
+ Runtime.healthInfo.resetBuffer();
+ }
+ });
+ }
} else {
- timerPPG.shutdownNow();
- timerPPG.purge();
- ICJniUtils.disablePPG();
+ StringMessage PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(this.runtime);
+ //发送给EQC服务器的
+ sendBroadcastPPGResult();
+ //因为协议中没有时间变量,所以只能实时传输,如果恰巧没有网络也只能丢弃,有时间变量的话,可以考虑通过deliver的buffer来进行缓存发送
+ if (PPGDATA == null) {
+ StringMessage ppgd = protocolAPIHelper.getPPG_MSG(this.runtime.getHRS().getPPG(), this.runtime);
+ StringMessage bloodd = protocolAPIHelper.getBlood_MSG(this.runtime.getHRS().getBPH(), this.runtime.getHRS().getBPL(), this.runtime);
+ StringMessage oxd = protocolAPIHelper.getOxygen_MSG(this.runtime.getHRS().getSpo2(), this.runtime);
+ Deliver.sendLocationMSG(ppgd);
+ Deliver.sendLocationMSG(bloodd);
+ Deliver.sendLocationMSG(oxd);
+ checkWarning();
+ } else {
+ Deliver.sendLocationMSG(PPGDATA);
+ ICLogger.i("Send PPG " + PPGDATA.isFromCache());
+ checkWarning();
+ }
}
- isTimerStarted = false;
- }
- releaseWakeLock();
+ } else {
+ ICLogger.i("PPG Failed for Timeout!");
+ }
}
- private void callback(Messenger paramMessenger, int paramInt) {
- if (paramMessenger != null)
- try {
- paramMessenger.send(Message.obtain(null, paramInt));
- return;
- } catch (Exception e) {
- e.printStackTrace();
- }
+
+ private void sendBroadcastPPGResult() {
+ Intent intent = new Intent(ACTION_BROADCAST_PPG);
+ intent.putExtra("ppg", runtime.getHRS().getPPG());
+ intent.putExtra("bph", runtime.getHRS().getBPH());
+ intent.putExtra("bpl", runtime.getHRS().getBPL());
+ intent.putExtra("spo2", runtime.getHRS().getSpo2());
+ intent.putExtra("time", runtime.getHRS().getTestTime());
+ runtime.getContextProxy().context.sendBroadcast(intent);
}
- private BroadcastReceiver PPGStartReceiver = new BroadcastReceiver() {
+ private final BroadcastReceiver PPGStartReceiver = new BroadcastReceiver() {
public void onReceive(Context param1Context, Intent param1Intent) {
if (ACTION_HEATR_RATE_START.equals(param1Intent.getAction())) {
-
//此消息来源于BroadCaset,收到开始测试的消息。
//此时需要重置HeartRateDetect Timer
//倘若有 参数 PPGTestCycle,则根据这个数值进行设置
}
ICLogger.i("PPGStartReceiver ACTION_HEATR_RATE_START " + ppgtestCycle);
CoreService.getInstance().setHeartRateDetectAlarm(runtime.getPpgTestCycle());
-// HeartRateManager.this.startPPG();
}
-
-
}
};
}
public void onAttach(Connection paramConnection, Runtime paramRuntime) {
-
-// this.mSignalUtil = SimSignalUtil.getInstance((paramRuntime.getContextProxy()).context);
regReceiver();
}
public void onDetach(Connection paramConnection, Runtime paramRuntime) {
+ ICLogger.d("onDetach...");
unRegReceiver();
+ //取消服务注册
+ try {
+ heartRateSensorService.unRegisterCallback(mRemoteCallback);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ ICApplication.sContext.unbindService(mRemoteConnection);
}
- public boolean onUserRequest(Intent paramIntent, Connection paramConnection, final Runtime runtime) {
-// String str = paramIntent.getAction();
-// if (ACTION_HEATR_RATE_START.equals(str)) {
-//// this.mSignalUtil = SimSignalUtil.getInstance((runtime.getContextProxy()).context);
-//// str = paramIntent.getStringExtra("filepath");
-//// String str1 = paramIntent.getStringExtra("number");
-// StringBuilder stringBuilder = new StringBuilder();
-// stringBuilder.append("PPG Started on Action "+ACTION_HEATR_RATE_START);
-//// stringBuilder.append(str);
-//// stringBuilder.append("number == ");
-//// stringBuilder.append(str1);
-// ICLogger.i(stringBuilder.toString());
-// //周期测量执行
-// if (Runtime.practising==true) {
-// ICLogger.i("自由锻炼中,跳过原有的循环心率检测!");
-// return false;
-// }
-// startPPG();
-// }
- return false;
- }
-
- public static void triggerPPGtest() {
+ public void triggerPPGTest(int from) {
if (CoreService.getInstance() != null) {
if (CoreService.getInstance().getRuntime().Anti_off_flag == 1) {
ICLogger.i("未佩戴,取消 triggerPPGtest!");
return;
}
}
- if (mHandler != null) mHandler.sendEmptyMessage(200);
- }
-
- public static void stopPPGtest() {
- if (mHandler != null) mHandler.sendEmptyMessage(300);
- }
-
- public boolean onUserRequest(Message message, Connection connection, final Runtime runtime) {
-
-
- int i = 1;
- switch (message.what) {
- case MSG_WHAT_PPG:
-
- //接收UI测试后的结果,直接发送到服务器。
- Bundle bundle3 = message.getData();
- String ppg = bundle3.getString(key_ppg);
- String bph = bundle3.getString(key_bph);
- String bpl = bundle3.getString(key_bpl);
- String spo2 = bundle3.getString(key_spo2);
-
- ICLogger.i("get MSG_WHAT_PPG ppg " + ppg + " , bph " + bph + " , bpl " + bpl + " , spo2 " + spo2);
- if (ppg == null || bph == null || bpl == null || ppg.isEmpty() || bph.isEmpty() || bpl.isEmpty()) {
- ICLogger.i("MSG_WHAT_PPG Data is null or empty ! Skip!");
- callback(message.replyTo, Constants.RESULT_ERROR);
-
- return true;
- }
- if (spo2 == null ||
- (spo2 != null &&
- ((!Util.isNumeric(spo2.trim())) ||
- (Util.isNumeric(spo2.trim()) && Integer.parseInt(spo2.trim()) <= 0)
- )
- )
- ) {
-
- int randomint = randomOxygenValue();
- spo2 = String.valueOf(randomint);
- }
-
-
- if (Runtime.practising == true) {
- ICLogger.i("自由锻炼中,设置测量心率!");
- Runtime.healthInfo.setPPGECGData(ppg, bph, bpl, spo2);
-
- //因为心率和定位用时都比温度多,但是定位和心率不一定谁用时多,所以两个都需要检测是否结束
- if (Runtime.healthInfo.check_info_item_finished()) {
- Runtime.healthInfo.appendBuffer(Runtime.healthInfo.getHealthInfoString());
- Runtime.healthInfo.reset();
- }
- if (Runtime.healthInfo.getInfoCount() >= (30 - 1)) {
- //超过30次发送数据给服务器
- ICLogger.i("发送数据给服务器 " + Runtime.healthInfo.getBufferData().length);
- mHandler.post(new Runnable() {
- @Override
- public void run() {
-// ICHttpUtil.uploadData(Runtime.healthInfo.getBufferDataStr(),runtime,TimeUtil.getSystemTime2(),null);
- Deliver.sendLocationMSG(protocolAPIHelper.getPRACTICE());
- //发送过后重置
- Runtime.healthInfo.resetBuffer();
- }
- });
-
-
- }
- } else {
- try {
- StringMessage PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(Integer.parseInt(ppg), Integer.parseInt(bph), Integer.parseInt(bpl), Integer.parseInt(spo2), runtime);
- if (PPGDATA == null) {
- StringMessage ppgd = protocolAPIHelper.getPPG_MSG(Integer.parseInt(ppg), runtime);
- StringMessage bloodd = protocolAPIHelper.getBlood_MSG(Integer.parseInt(bph), Integer.parseInt(bpl), runtime);
- StringMessage oxd = protocolAPIHelper.getOxygen_MSG(Integer.parseInt(spo2), runtime);
- Deliver.sendLocationMSG(ppgd);
- Deliver.sendLocationMSG(bloodd);
- Deliver.sendLocationMSG(oxd);
- } else {
- Deliver.sendLocationMSG(PPGDATA);
- ICLogger.i("Send PPG " + PPGDATA.isFromCache());
- }
- } catch (Exception e) {
- e.printStackTrace();
- ICLogger.e(e.getMessage(), e);
- }
- }
- callback(message.replyTo, Constants.RESULT_OK);
-
- default:
- break;
+ //开始去测试
+ try {
+ heartRateSensorService.getHeartRateInfo(from);
+ } catch (Exception e) {
+ e.printStackTrace();
}
-
- return true;
}
+
@Override
- public void onSensorChanged(SensorEvent sensorEvent) {
- float values[] = sensorEvent.values;
- int length = values.length;
- ICLogger.i("onSensorChanged() is called " + length
- + " PPG = " + values[0]
- + ", BPH = " + values[1]
- + ", BPL = " + values[2]
- + ", spo2 = " + values[3]
- + " , Weared = " + values[4]
- );
- PPG = (int) values[0];//调用底层函数保证状态更新。
- BPH = (int) values[1];
- BPL = (int) values[2];
- SPo2 = (int) values[3];
- isWared = ((int) values[4] == 2);
- isPPGTesting = true;// (ICJniUtils.isPPGStarted() == 1);
- doPPGtest();
- /*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/
+ public boolean onUserRequest(Intent paramIntent, Connection paramConnection, Runtime paramRuntime) {
+ return false;
}
- @Override
- public void onAccuracyChanged(Sensor sensor, int i) {
- ICLogger.i("onAccuracyChanged() is called " + sensor.getName() + " accuracy=" + i);
+ public boolean onUserRequest(Message message, Connection connection, final Runtime runtime) {
+ return false;
}
}
import java.util.Calendar;\r
\r
public class AlarmHelper {\r
- private static final String ACTION_STEP_COUNT_ALARM = "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM";\r
- \r
- private static final long ONE_DAY = 86400000L;\r
- \r
- private static final long ONE_WEEK = 604800000L;\r
- \r
- private static Method setImpl;\r
- \r
-\r
- \r
- static {\r
- try {\r
- setImpl = AlarmManager.class.getDeclaredMethod("setImpl", new Class[] { int.class, long.class, long.class, long.class, PendingIntent.class, android.os.WorkSource.class });\r
- setImpl.setAccessible(true);\r
-\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- ICLogger.e(e.getMessage(),e);\r
- }\r
- }\r
-\r
- //设置闹铃\r
- public static void setAlarm(AlarmManager paramAlarmManager, long triggerAtMillis, long intervalMillis, PendingIntent paramPendingIntent) {\r
-\r
- paramAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtMillis, intervalMillis, paramPendingIntent);\r
+ private static final String ACTION_STEP_COUNT_ALARM = "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM";\r
+\r
+ private static final long ONE_DAY = 86400000L;\r
+\r
+ private static final long ONE_WEEK = 604800000L;\r
+\r
+ private static Method setImpl;\r
+\r
+\r
+ static {\r
+ try {\r
+ setImpl = AlarmManager.class.getDeclaredMethod("setImpl", new Class[]{int.class, long.class, long.class, long.class, PendingIntent.class, android.os.WorkSource.class});\r
+ setImpl.setAccessible(true);\r
+\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ ICLogger.e(e.getMessage(), e);\r
+ }\r
+ }\r
+\r
+ //设置闹铃\r
+ public static void setAlarm(AlarmManager paramAlarmManager, long triggerAtMillis, long intervalMillis, PendingIntent paramPendingIntent) {\r
+\r
+ paramAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtMillis, intervalMillis, paramPendingIntent);\r
\r
// try {\r
// setImpl.invoke(paramAlarmManager, new Object[] { Integer.valueOf(0), Long.valueOf(triggerAtMillis), Long.valueOf(0L), Long.valueOf(intervalMillis), paramPendingIntent, null });\r
// exception.printStackTrace();\r
// }\r
\r
- }\r
-\r
- //以周为单位设置循环闹铃\r
- public static void setAlarm(AlarmManager paramAlarmManager, long triggerAtMillis, PendingIntent paramPendingIntent) {\r
- ICLogger.i("setAlarm triggerAtMillis "+triggerAtMillis);\r
- setAlarm(paramAlarmManager, triggerAtMillis, ONE_WEEK, paramPendingIntent);\r
- }\r
- public static void setAlarmOnce(AlarmManager paramAlarmManager, long triggerAtMillis, PendingIntent paramPendingIntent) {\r
- ICLogger.i("setAlarmOnce triggerAtMillis "+triggerAtMillis);\r
- setAlarm(paramAlarmManager, triggerAtMillis, 0, paramPendingIntent);\r
- }\r
- public static void setCleanStepCountAlarm(Context context, int hour, int minutes, String paramString) {\r
- AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
- Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
- intent.setAction(paramString);\r
- PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
- alarmManager.cancel(pendingIntent);\r
- long currentMS = System.currentTimeMillis();\r
- Calendar calendar = Calendar.getInstance();\r
- calendar.set(Calendar.HOUR_OF_DAY, hour);\r
- calendar.set(Calendar.MINUTE, minutes);\r
- calendar.set(Calendar.SECOND, 0);\r
- long targetMStmp = calendar.getTimeInMillis();\r
- long targetMS = targetMStmp;\r
- if (targetMStmp < currentMS)\r
- targetMS = targetMStmp + ONE_DAY;\r
- alarmManager.setExact(AlarmManager.RTC_WAKEUP, targetMS, pendingIntent);\r
- }\r
- \r
- public static void setRealTimeAlarm(Context context, int minutes, String actionname) {\r
- AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
- Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
- intent.setAction(actionname);\r
- PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
- alarmManager.cancel(pendingIntent);\r
- long l = SystemClock.elapsedRealtime();\r
- if (Build.VERSION.SDK_INT >= 19) {\r
- alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (minutes * 60 * 1000), pendingIntent);\r
- return;\r
}\r
- alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (minutes * 60 * 1000), pendingIntent);\r
- }\r
- public static void setRealTimeAlarmInMicorSeconds(Context context, int ms, String actionname) {\r
- AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
- Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
- intent.setAction(actionname);\r
- PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
- alarmManager.cancel(pendingIntent);\r
- long l = SystemClock.elapsedRealtime();\r
- if (Build.VERSION.SDK_INT >= 19) {\r
- alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (ms ), pendingIntent);\r
- return;\r
+\r
+ //以周为单位设置循环闹铃\r
+ public static void setAlarm(AlarmManager paramAlarmManager, long triggerAtMillis, PendingIntent paramPendingIntent) {\r
+ ICLogger.i("setAlarm triggerAtMillis " + triggerAtMillis);\r
+ setAlarm(paramAlarmManager, triggerAtMillis, ONE_WEEK, paramPendingIntent);\r
}\r
- alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (ms ), pendingIntent);\r
- }\r
- public static void setRealTimeAlarmInSeconds(Context context, int seconds, String actionname) {\r
- AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
- Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
- intent.setAction(actionname);\r
- PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
- alarmManager.cancel(pendingIntent);\r
- long l = SystemClock.elapsedRealtime();\r
- if (Build.VERSION.SDK_INT >= 19) {\r
- alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (seconds * 1000), pendingIntent);\r
- return;\r
+\r
+ public static void setAlarmOnce(AlarmManager paramAlarmManager, long triggerAtMillis, PendingIntent paramPendingIntent) {\r
+ ICLogger.i("setAlarmOnce triggerAtMillis " + triggerAtMillis);\r
+ setAlarm(paramAlarmManager, triggerAtMillis, 0, paramPendingIntent);\r
+ }\r
+\r
+ public static void setCleanStepCountAlarm(Context context, int hour, int minutes, String paramString) {\r
+ AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);\r
+ Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
+ intent.setAction(paramString);\r
+ PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
+ alarmManager.cancel(pendingIntent);\r
+ long currentMS = System.currentTimeMillis();\r
+ Calendar calendar = Calendar.getInstance();\r
+ calendar.set(Calendar.HOUR_OF_DAY, hour);\r
+ calendar.set(Calendar.MINUTE, minutes);\r
+ calendar.set(Calendar.SECOND, 0);\r
+ long targetMStmp = calendar.getTimeInMillis();\r
+ long targetMS = targetMStmp;\r
+ if (targetMStmp < currentMS)\r
+ targetMS = targetMStmp + ONE_DAY;\r
+ alarmManager.setExact(AlarmManager.RTC_WAKEUP, targetMS, pendingIntent);\r
+ }\r
+\r
+ public static void setRealTimeAlarm(Context context, int minutes, String actionname) {\r
+ AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);\r
+ Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
+ intent.setAction(actionname);\r
+ PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
+ alarmManager.cancel(pendingIntent);\r
+ long l = SystemClock.elapsedRealtime();\r
+ if (Build.VERSION.SDK_INT >= 19) {\r
+ alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (minutes * 60 * 1000), pendingIntent);\r
+ return;\r
+ }\r
+ alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (minutes * 60 * 1000), pendingIntent);\r
+ }\r
+\r
+ public static void setRealTimeAlarmInMicorSeconds(Context context, int ms, String actionname) {\r
+ AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);\r
+ Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
+ intent.setAction(actionname);\r
+ PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
+ alarmManager.cancel(pendingIntent);\r
+ long l = SystemClock.elapsedRealtime();\r
+ if (Build.VERSION.SDK_INT >= 19) {\r
+ alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (ms), pendingIntent);\r
+ return;\r
+ }\r
+ alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (ms), pendingIntent);\r
+ }\r
+\r
+ public static void setRealTimeAlarmInSeconds(Context context, int seconds, String actionname) {\r
+ AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);\r
+ Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
+ intent.setAction(actionname);\r
+ PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
+ alarmManager.cancel(pendingIntent);\r
+ long l = SystemClock.elapsedRealtime();\r
+ if (Build.VERSION.SDK_INT >= 19) {\r
+ alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (seconds * 1000), pendingIntent);\r
+ return;\r
+ }\r
+ alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (seconds * 1000), pendingIntent);\r
+ }\r
+\r
+ public static void setTimeAlarm(Context context, int hour, int minutes, String paramString) {\r
+ AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);\r
+ Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
+ intent.setAction(paramString);\r
+ PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
+ long l3 = System.currentTimeMillis();\r
+ Calendar calendar = Calendar.getInstance();\r
+ calendar.set(Calendar.HOUR_OF_DAY, hour);\r
+ calendar.set(Calendar.MINUTE, minutes);\r
+ calendar.set(Calendar.SECOND, 0);\r
+ long l2 = calendar.getTimeInMillis();\r
+ long l1 = l2;\r
+ if (l2 < l3)\r
+ l1 = l2 + ONE_DAY;\r
+ alarmManager.cancel(pendingIntent);\r
+ alarmManager.setExact(AlarmManager.RTC_WAKEUP, l1, pendingIntent);\r
}\r
- alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (seconds * 1000), pendingIntent);\r
- }\r
-\r
- public static void setTimeAlarm(Context context, int hour, int minutes, String paramString) {\r
- AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
- Intent intent = new Intent(context, com.enqualcomm.support.CoreService.class);\r
- intent.setAction(paramString);\r
- PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
- long l3 = System.currentTimeMillis();\r
- Calendar calendar = Calendar.getInstance();\r
- calendar.set(Calendar.HOUR_OF_DAY, hour);\r
- calendar.set(Calendar.MINUTE, minutes);\r
- calendar.set(Calendar.SECOND, 0);\r
- long l2 = calendar.getTimeInMillis();\r
- long l1 = l2;\r
- if (l2 < l3)\r
- l1 = l2 + ONE_DAY;\r
- alarmManager.cancel(pendingIntent);\r
- alarmManager.setExact(AlarmManager.RTC_WAKEUP, l1, pendingIntent);\r
- }\r
}\r
\r
{"com.enqualcomm.support","Protocol"},\r
{"com.ic.blood","BLood"},\r
{"com.ic.launcher","Launcher"},\r
- {"com.ic.work","Work"},\r
+ {"com.ic.com.ic.work","Work"},\r
{"com.ic.weather","Weather"},\r
{"com.ic.hardware","Hardware"},\r
{"mobile.miki","FactoryMode"},\r
import static com.enqualcomm.support.Constants.ACTION_SHUTDOWN;
import static com.enqualcomm.support.Constants.ACTION_TEMP_RESULT;
import static com.enqualcomm.support.Constants.DIALOG_ACTION;
+import static com.enqualcomm.support.Constants.FROM_SERVER;
import static com.enqualcomm.support.Constants.KEY_MESSAGE_FROM;
import static com.enqualcomm.support.Constants.KEY_MESSAGE_TYPE;
import static com.enqualcomm.support.Constants.KEY_MESSAGE_URL;
if (Util.getSystemProperties("persist.sys.do_check_condition", "false").equals("true")) {
//开启测温
if (CoreService.getInstance().getRuntime().check_stat_do_temp_test())
- TemperatureUtil.DoTempTest();
-
+ TemperatureUtil.getInstance().DoTempTest(FROM_SERVER);
Util.mSleep(5000);
//开启测量PPG
if (CoreService.getInstance().getRuntime().check_stat_do_ppg_test())
- HeartRateManager.triggerPPGtest();
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
}
//开启发送图片
CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", "");
if (Util.getSystemProperties("persist.sys.do_check_condition", "false").equals("true")) {
//开启测温
if (CoreService.getInstance().getRuntime().check_stat_do_temp_test())
- TemperatureUtil.DoTempTest();
+ TemperatureUtil.getInstance().DoTempTest(FROM_SERVER);
Util.mSleep(500);
//开启测量PPG
if (CoreService.getInstance().getRuntime().check_stat_do_ppg_test())
- HeartRateManager.triggerPPGtest();
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
}
//开启发送照片
CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", "");
package com.enqualcomm.support.utils;
+import android.content.ComponentName;
+import android.content.Context;
import android.content.Intent;
-import android.os.Handler;
+import android.content.ServiceConnection;
+import android.os.IBinder;
import com.enqualcomm.support.Config;
import com.enqualcomm.support.CoreService;
+import com.enqualcomm.support.ICApplication;
import com.enqualcomm.support.LocationClient;
import com.enqualcomm.support.bean.Runtime;
import com.enqualcomm.support.bean.StringMessage;
-import com.enqualcomm.support.bean.TemperatureItem;
import com.enqualcomm.support.service.Deliver;
-import com.ic.jni.ICJniUtils;
import com.ic.protocols.protocolAPIHelper;
+import com.ic.work.ITempSensorCallback;
+import com.ic.work.ITempSensorService;
+import com.ic.work.domain.Temperature;
public class TemperatureUtil {
-
private static final String TAG = "TemperatureUtil";
- private static double temp_value_orig = 0.0f;
- private static double temp_adjust_value = 0.0f;
- private static double body_temp_value = 0.0f;
- private static double tempOut_value = 0.0f;
-
- public static double get_tempOut_value_origin() {
- long tmp=System.currentTimeMillis();
- tempOut_value = ICJniUtils.getTemperatureOrigin();
- long tmp1=System.currentTimeMillis()-tmp;
- if (tmp1>1000)
- ICLogger.i("1测量环境温度 原始值 " + tempOut_value+" 超过1秒 "+tmp1);
- ICLogger.i( "1测量环境温度 原始值 " + tempOut_value);
- return tempOut_value;
+ public static final String ACTION_TEMPERATURE = "com.ic.sensor.data.action.TEMPERATURE";
+ private ITempSensorService temperatureRemoteService;
+
+ private TemperatureUtil() {
+ Intent intent = new Intent();
+ intent.setAction(ACTION_TEMPERATURE);
+ //绑定远程服务
+ ICApplication.sContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
- public static double get_temp_value_adjusted() {
- long tmp=System.currentTimeMillis();
- temp_value_orig = ICJniUtils.getTemperature();
- long tmp1=System.currentTimeMillis()-tmp;
- if (tmp1>1000)
- ICLogger.i("1测量体温 原始值 " + temp_value_orig+" 超过1秒 "+tmp1);
- ICLogger.i("1测量体温 原始值 " + temp_value_orig);
- return temp_value_orig;
+
+ public void release() {
+ if (temperatureRemoteService != null) {
+ try {
+ temperatureRemoteService.unRegisterCallback(mRemoteCallback);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ ICApplication.sContext.unbindService(mConnection);
}
- public static double getTempAdjustValue() {
+ private final ServiceConnection mConnection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ ICLogger.d("onServiceConnected...");
+ temperatureRemoteService = ITempSensorService.Stub.asInterface(service);
+ //注册回调接口
+ try {
+ ICLogger.d("registerCallback...");
+ temperatureRemoteService.registerCallback(mRemoteCallback);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
- // temp_adjust_value=ICJniUtils.getTemperatureAdjustValue();
- ICLogger.i("get Temperature Adjust value=" + temp_adjust_value);
- return temp_adjust_value;
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ ICLogger.d("onServiceDisconnected...");
+ temperatureRemoteService = null;
+ }
+ };
- }
- public static double getBodyTemp(double wristtemp, double envtemp) {
- body_temp_value = ICJniUtils.getBodyTempFromWristTemp(wristtemp, envtemp);
- ICLogger.i("get body Temperature value=" + body_temp_value);
- return body_temp_value;
- }
+ private final ITempSensorCallback.Stub mRemoteCallback = new ITempSensorCallback.Stub() {
+ @Override
+ public void onTemperatureGet(Temperature temperature) {
+ //处理结果
+ handleTemperature(temperature);
+ }
+
+ @Override
+ public void onGetData() {
+ //数据获取中...
+ ICLogger.d("数据获取中...");
+ }
+
+ @Override
+ public void onWaiting() {
+ //等待中...
+ ICLogger.d("任务等待中...");
+ }
+ };
+
+ private void handleTemperature(Temperature temperature) {
+ ICLogger.i("Temperature done!" + temperature);
+ if (temperature == null) {
+ return;
+ }
+ //结果处理
+ if (Runtime.practising) {
+ ICLogger.i("自由锻炼中,设置测量体温!" + String.format("%.1f", temperature.getBodyTemp()));
+ Runtime.healthInfo.setTemperatureData(temperature.getBodyTemp());
+ } else {
+ StringMessage temperatureMsg = protocolAPIHelper.getTemperatureMSG(temperature.getWristTemp(),
+ temperature.getBodyTemp(), temperature.getEnvTemp(), null);
+ Deliver.sendLocationMSG(temperatureMsg);
+ if (temperatureMsg != null) ICLogger.i("发送体温测量值 " + temperatureMsg.isFromCache());
+ }
+
+ Runtime runtime = CoreService.getInstance().getRuntime();
+ runtime.tempInfo.setTemp(temperature.getBodyTemp(),
+ temperature.getWristTemp(),
+ temperature.getEnvTemp());
+
+ //发送消息给launcher显示
+ sendTempBroadcast(temperature.getWristTemp(),
+ temperature.getBodyTemp(),
+ temperature.getEnvTemp());
+ //体温异常报警检测开启的会进行异常报警
+ if (Config.needTemperature_abnormal_alarm) {
+ switch (runtime.tempInfo.isBodyTempAbnormal()) {
+ case 0:
+ break;
+ case 1:
+ if (runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_HIGH)) {
+ //trigger AP10 报警定位
+ ICLogger.i("triggerSOSLocationProcess ");
+ LocationClient.getInstance().triggerSOSLocationProcess();
+ }
+ break;
+ case 2:
+ if (runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_LOW)) {
+ //trigger AP10 报警定位
+ ICLogger.i("triggerSOSLocationProcess ");
+ LocationClient.getInstance().triggerSOSLocationProcess();
+ }
+ break;
+ }
+ }
+ }
- public static void doTempTestInThread() {
+ private static TemperatureUtil sInstance = null;
- ThreadPool.newInstance().submitThreadPool(new Runnable() {
- @Override
- public void run() {
- DoTempTest();
+ public static TemperatureUtil getInstance() {
+ if (sInstance == null) {
+ synchronized (TemperatureUtil.class) {
+ if (sInstance == null) {
+ sInstance = new TemperatureUtil();
+ }
}
- });
+ }
+ return sInstance;
+ }
+
+
+ public void doTempTestInThread(int from) {
+ ThreadPool.newInstance().submitThreadPool(() -> DoTempTest(from));
}
public static final String ACTION_TEMP_RESULT = "com.ic.action.temp_result";
public static final String KEY_TEMP_OUT = "out"; //temp out
public static final String KEY_TEMP_BYPROTOCOL = "protocol"; //temp out
- private static void sendTempBroadcast(double value, double animal, double tempOut) {
+ private void sendTempBroadcast(double value, double animal, double tempOut) {
Intent pedIntent = new Intent();
pedIntent.setAction(ACTION_TEMP_RESULT);
pedIntent.putExtra(KEY_TEMP_WRIST, value);
}
- private static int loopTime;
-
-
- public static void DoTempTest() {
- loopTime = 10;
- if (CoreService.getInstance() != null) {
- if (CoreService.getInstance().getRuntime().Anti_off_flag == 1) {
- ICLogger.i("未佩戴,取消TempTest!");
- return;
- }
- } else
+ /**
+ * 不管是什么测试,后台指令,还是定时的,都会走这里。
+ * 那这个地方,不再走本地进行测试,而是走远程IcWorkService进行测试
+ * //TODO:TrillGates,也就是说调用远程的方法,只处理结果就可以了
+ *
+ * @param from
+ */
+ public void DoTempTest(int from) {
+ ICLogger.d("DoTempTest..." + from);
+ if (CoreService.getInstance() != null && CoreService.getInstance().getRuntime().Anti_off_flag == 1) {
+ ICLogger.i("未佩戴,取消TempTest!" + from);
return;
- if (ICJniUtils.isTemperatureDevAvailable() > ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal()) {
-
- if (!DeviceInfoUtil.isFactoryTestTopActivity(CoreService.getInstance())) {
- ICJniUtils.disablePedometer();
- }
- ICJniUtils.enableTemperature();
- Util.mSleep(1000);
-
- double wrist_temp, body_temp, temout;
- temout = 0.0f;
- wrist_temp=0.0f;
- body_temp=0.0f;
- while (true) {
- if (ICJniUtils.isTemperatureDevAvailable() == ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_IC68.ordinal()) {
- //此处温度会走一个算法,跟主板挂钩,不同的主板有不同的公式,需要做实验,配置。
- //具体可以点击进去看里面的代码。
- TemperatureItem temperatureItem = TempAlgUtil.doTempTest();
- if (temperatureItem != null) {
- wrist_temp = Float.parseFloat(temperatureItem.getBodyTemp());
- temout = Float.parseFloat(temperatureItem.getEvnTemp());
- if (temout > 60 || temout < 1) {
- temout = 0.0f;
- }
- if (temout > 0.0f ) {
- body_temp = TemperatureUtil.getBodyTemp(wrist_temp, temout);
- } else {
- body_temp = TemperatureUtil.getBodyTemp(wrist_temp, 26.0f);
- }
- }
- } else {
- wrist_temp = TemperatureUtil.get_temp_value_adjusted();
- if (wrist_temp < 10) {
- Util.mSleep(1000);
- ICLogger.i("retry read temp for <10");
- wrist_temp = TemperatureUtil.get_temp_value_adjusted();
- }
- ICLogger.log(TAG, "temperatureItem is null...");
- if (Config.disableWristTemp) {
- body_temp = wrist_temp;
- } else {
- body_temp = TemperatureUtil.getBodyTemp(wrist_temp, 26.0f);
- }
- }
- try {
- Thread.sleep(1000);
- } catch (Exception e) {
- e.printStackTrace();
- }
- loopTime--;
- if (loopTime <= 0) {
- break;
- }
- }
- ICLogger.i("Temperature done!");
- if (Runtime.practising == true) {
- ICLogger.i("自由锻炼中,设置测量体温!" + String.format("%.1f", body_temp));
- Runtime.healthInfo.setTemperatureData(body_temp);
- } else {
- StringMessage temperatureMsg = protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp, temout, null);
- Deliver.sendLocationMSG(temperatureMsg);
- if (temperatureMsg != null) ICLogger.i("发送体温测量值 " + temperatureMsg.isFromCache());
- }
-
- Runtime runtime = CoreService.getInstance().getRuntime();
- runtime.tempInfo.setTemp(body_temp, wrist_temp, temout);
-
- //发送消息给launcher显示
- sendTempBroadcast(wrist_temp, body_temp, temout);
-
- ICJniUtils.disableTemperature();
- ICJniUtils.enablePedometer();
-
- //体温异常报警检测开启的会进行异常报警
- if (Config.needTemperature_abnormal_alarm) {
- switch (runtime.tempInfo.isBodyTempAbnormal()) {
- case 0:
- break;
- case 1:
- if (runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_HIGH)) {
- //trigger AP10 报警定位
- ICLogger.i("triggerSOSLocationProcess ");
- LocationClient.getInstance().triggerSOSLocationProcess();
-// Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));
- }
- break;
- case 2:
- if (runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_LOW)) {
- //trigger AP10 报警定位
- ICLogger.i("triggerSOSLocationProcess ");
- LocationClient.getInstance().triggerSOSLocationProcess();
-// Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));
- }
- break;
- }
+ }
+ try {
+ if (temperatureRemoteService != null) {
+ ICLogger.d("get temperature info...");
+ temperatureRemoteService.getTemperatureInfo(from);
}
-
-
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
}
import java.util.HashMap;\r
\r
import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;\r
+import static com.enqualcomm.support.Constants.FROM_SERVER;\r
import static com.enqualcomm.support.LocationClient.LOCATION_MODE;\r
-import static com.enqualcomm.support.LocationClient.getInstance;\r
import static com.enqualcomm.support.bean.Contact.GROUP_ALL;\r
import static java.lang.Math.abs;\r
\r
private static final String CMDHEADER = "IW";\r
private static final String CMDEND = "#";\r
private static final String CMDSPLIT = ",";\r
- public static final String defaultServerIP="en.beehome360.com";\r
- public static final int defaultServerPort=5018;\r
+ public static final String defaultServerIP = "en.beehome360.com";\r
+ public static final int defaultServerPort = 5018;\r
+\r
public enum CMD_TYPE {\r
/*终端发起*/\r
AP00,//登录包\r
}\r
\r
\r
- private Connection mConnection=null;\r
- private Runtime mRuntime=null;\r
+ private Connection mConnection = null;\r
+ private Runtime mRuntime = null;\r
\r
- public protocol_beehome(Connection connect,Runtime runtime) {\r
- mConnection=connect;\r
- mRuntime=runtime;\r
+ public protocol_beehome(Connection connect, Runtime runtime) {\r
+ mConnection = connect;\r
+ mRuntime = runtime;\r
\r
- }\r
+ }\r
\r
private StringBuffer cmdbuf = new StringBuffer();\r
\r
\r
return "";\r
}\r
- }else{\r
+ } else {\r
return "";\r
}\r
\r
}\r
\r
\r
-\r
/**/\r
- public static StringMessage genStringMessage(String cmdName, String msg){\r
- StringMessage sm=new StringMessage(new String[]{cmdName,msg});\r
+ public static StringMessage genStringMessage(String cmdName, String msg) {\r
+ StringMessage sm = new StringMessage(new String[]{cmdName, msg});\r
sm.refresh(msg);\r
- sm.setDate(TimeUtil.getSystemDateYYMMDD(),TimeUtil.getSystemTimeHHmmss());\r
+ sm.setDate(TimeUtil.getSystemDateYYMMDD(), TimeUtil.getSystemTimeHHmmss());\r
return sm;\r
}\r
+\r
/*\r
返回true 表示 cmd 全部解析成功\r
返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用\r
boolean iscmdComplete = false;\r
boolean ret = true;\r
String last_inCompletecmd = "";\r
- String cmd_msgbuf=new String(bytes);\r
- log("bytes.size "+bytes.length);\r
+ String cmd_msgbuf = new String(bytes);\r
+ log("bytes.size " + bytes.length);\r
// cmdbuf.append(cmd_msgbuf);\r
cmdbuf.append(cmd_msgbuf);\r
- log("cmdbuf.size "+cmdbuf.length() +" "+cmdbuf.toString());\r
+ log("cmdbuf.size " + cmdbuf.length() + " " + cmdbuf.toString());\r
/*\r
如果不是 #结尾,就认为 接收数据不全,置位。\r
*/\r
}\r
String[] cmdlist = cmd_msgbuf.split(CMDEND);\r
int listlen = cmdlist.length;\r
- log("listlen "+listlen);\r
+ log("listlen " + listlen);\r
/*\r
如果解析出来的cmdlist不是空,且数据不是完整cmd则保留 最后一条数据到last_inCompletecmd\r
*/\r
if (key == CMD_TYPE.BP28) {\r
//如果是BP28则 后面的数据是音频,需要保留\r
byte[] amrBuf;\r
- int amrLen = getBP28Amrlen(cmdlist[i] );\r
+ int amrLen = getBP28Amrlen(cmdlist[i]);\r
if (bytes.length > amrLen) {\r
handleCmd(key, cmdlist[i], bytes);\r
}\r
} else {\r
- handleCmd(key, cmdlist[i]);\r
+ handleCmd(key, cmdlist[i]);\r
}\r
}\r
}\r
cmdbuf = new StringBuffer().append(last_inCompletecmd);\r
return ret;\r
}\r
+\r
public int getBP28Amrlen(String cmd) {\r
\r
String Name;\r
int packetLen;\r
\r
\r
- String[] msg=cmd.split(CMDSPLIT);\r
- if (msg.length>=6){\r
+ String[] msg = cmd.split(CMDSPLIT);\r
+ if (msg.length >= 6) {\r
\r
try {\r
Name = msg[1];\r
\r
log(stringBuffer.toString());\r
return packetLen;\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
- }else{\r
- log("getBP28AmrLen","format Error");\r
+ } else {\r
+ log("getBP28AmrLen", "format Error");\r
\r
}\r
return -1;\r
}\r
+\r
/*登录*/\r
public static StringMessage AP00(Runtime ds) {\r
//示例数据:IWAP00867155030001063#\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP00),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString());\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP00), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString());\r
}\r
\r
//处理 登录 BP00\r
- public void handleBP00(Runtime runtime,String cmd){\r
- String[] msg=cmd.split(CMDSPLIT);\r
+ public void handleBP00(Runtime runtime, String cmd) {\r
+ String[] msg = cmd.split(CMDSPLIT);\r
// get Msg :IWBP00,20191229171933,8# (size)24\r
// 12-30 01:19:33.861 6492-6492/com.enqualcomm.support I/ICSrv.protocolAPIHelper: found cmd keyid=BP00 ,keyname=BP00 , IWBP00,20191229171933,8\r
\r
- if (msg.length>=3) {\r
+ if (msg.length >= 3) {\r
log("handleBP00", "Set Datetime " + msg[1]);\r
log("handleBP00", "Set TimeZone " + msg[2]);\r
\r
}\r
// Set Datetime 20200505112734\r
// Set TimeZone 8\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
- }else{\r
- log("handleBP00","format Error");\r
+ } else {\r
+ log("handleBP00", "format Error");\r
}\r
}\r
\r
//02为工作模式 ,(设防,工作模式如果为00,则代表无或未设置)\r
//5555: 计步步数,每次到达 9999 后重 0 开始计 (此处 9999 为示例,可以为2字节int 然后溢出归零)\r
//30: 翻滚次数\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP03),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP03), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d", abs(ds.getSignalStrength())))\r
.append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
.append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
.append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString());\r
}\r
+\r
//处理 心跳 BP03\r
- public void handleBP03(String cmd){\r
+ public void handleBP03(String cmd) {\r
\r
log("BP03心跳接收成功");\r
}\r
\r
\r
- public static StringMessage AP10(Runtime ds){\r
+ public static StringMessage AP10(Runtime ds) {\r
\r
/**\r
* IWAP10080524A2232.9806N11404.9355E000.1061830323.8706000908000502,\r
* 00:第一个0:是否需要回复地址信息,0:不回复,1回复.\r
* HOME|74-DE-2B-44-88-8C|97&HOME1|74-DE-2B-44-88-8C|97&HOME2|74-DE-2B-44-88-8C|97&HOME3|74-DE-2B-44-88-8C|97#\r
*/\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP10),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP10), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())\r
.append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading())\r
- .append(String.format("%03d",abs(ds.getSignalStrength())))\r
+ .append(String.format("%03d", abs(ds.getSignalStrength())))\r
.append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
.append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
.append(ds.getLBSData()).append(CMDSPLIT)\r
// 460,0,9520,3671,\r
// Home|74-DE-2B-44-88-8C|97& Home1|74-DE-2B-44-88-8C|97&Home2|74-DE-2B-44-88-8C|97& Home3|74-DE-2B-44-88-8C|97#\r
// IWAP01191230A2232.9807N11404.9355E000.1161320000.0006000910000000,460,00,9520,3671,#\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP01),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())\r
- .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP01), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())\r
+ .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d", abs(ds.getSignalStrength())))\r
.append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
.append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
.append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());\r
}\r
\r
//处理 定位 BP01\r
- public void handleBP01(String cmd){\r
+ public void handleBP01(String cmd) {\r
log("BP01定位接收成功");\r
}\r
\r
\r
-\r
/*LBS+WiFi混合定位*/\r
public static StringMessage AP02(Runtime ds) {\r
//示例数据:IWAP02,\r
// 4: 表示WIFI组数,\r
// 1|D8-24-BD-79-FA-1F|59: ssid|mac地址|信号强度,信号强度转正数:150 – abs(信号强度)\r
\r
- int apsum=0;\r
- String wifiinfo=ds.getWifiInfo();\r
+ int apsum = 0;\r
+ String wifiinfo = ds.getWifiInfo();\r
if (!wifiinfo.isEmpty()) {\r
String[] list = wifiinfo.split("&");\r
apsum = list.length;\r
}\r
\r
- ICLogger.i("Wifi ap sum "+apsum);\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP02),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)\r
+ ICLogger.i("Wifi ap sum " + apsum);\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP02), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)\r
.append(ds.getLanguage()).append(CMDSPLIT)\r
.append(0).append(CMDSPLIT) //为0时不回复地址\r
.append(ds.getLBSMultiStationData()).append(CMDSPLIT) //基站信息数据\r
}\r
\r
//处理 定位 BP01\r
- public void handleBP02(String cmd){\r
+ public void handleBP02(String cmd) {\r
log("BP02定位接收成功");\r
}\r
\r
\r
-\r
- public static StringMessage APXL(String id){\r
+ public static StringMessage APXL(String id) {\r
//设备响应: IWAPXL,080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APXL),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APXL), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))\r
.append(CMDSPLIT).append(id)\r
.append(CMDEND).toString());\r
}\r
\r
/**\r
* 测量心率\r
+ *\r
* @param cmd\r
* @param connection\r
*/\r
- public void handleBPXL(String cmd, Connection connection){\r
+ public void handleBPXL(String cmd, Connection connection) {\r
//IWBPXL,353456789012345,080835#\r
//说明:\r
//IW:标识符\r
//080835 :指令流水号\r
//设备响应: IWAPXL,080835#\r
//080835:指令流水号\r
- String[] list=cmd.split(CMDSPLIT);\r
- if (list.length==3){\r
- String index=list[2];\r
- String imei=list[1];\r
- ICLogger.i("Handle BPXL IMEI "+imei+",index "+index);\r
+ String[] list = cmd.split(CMDSPLIT);\r
+ if (list.length == 3) {\r
+ String index = list[2];\r
+ String imei = list[1];\r
+ ICLogger.i("Handle BPXL IMEI " + imei + ",index " + index);\r
connection.send(APXL(index));\r
- }else{\r
+ } else {\r
ICLogger.i("BPXL format error!");\r
}\r
\r
}\r
\r
- public static StringMessage APXY(String id){\r
+ public static StringMessage APXY(String id) {\r
//设备响应: IWAPXY,080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APXY),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APXY), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))\r
.append(CMDSPLIT).append(id)\r
.append(CMDEND).toString());\r
}\r
\r
/**\r
* 测量血压\r
+ *\r
* @param cmd\r
* @param connection\r
*/\r
- public void handleBPXY(String cmd,Connection connection){\r
+ public void handleBPXY(String cmd, Connection connection) {\r
//IWBPXY,353456789012345,080835#\r
//说明:\r
//IW:标识符\r
//080835 :指令流水号\r
//设备响应: IWAPXY,080835#\r
//080835:指令流水号\r
- String[] list=cmd.split(CMDSPLIT);\r
- if (list.length==3){\r
- String index=list[2];\r
- String imei=list[1];\r
- ICLogger.i("Handle BPXY IMEI "+imei+",index "+index);\r
+ String[] list = cmd.split(CMDSPLIT);\r
+ if (list.length == 3) {\r
+ String index = list[2];\r
+ String imei = list[1];\r
+ ICLogger.i("Handle BPXY IMEI " + imei + ",index " + index);\r
connection.send(APXY(index));\r
- }else{\r
+ } else {\r
ICLogger.i("BPXY format error!");\r
}\r
\r
}\r
\r
\r
-\r
- public static StringMessage APJZ(String id,String BPH,String BPL,String Age,String Sex){\r
+ public static StringMessage APJZ(String id, String BPH, String BPL, String Age, String Sex) {\r
//设备响应: IWAPJZ,792997,120,85,42,1#\r
//792997:指令流水号\r
// 高压120,低压85,年龄42,1 男性\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APJZ),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APJZ), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))\r
.append(CMDSPLIT).append(id)\r
.append(CMDSPLIT).append(BPH)\r
.append(CMDSPLIT).append(BPL)\r
}\r
\r
/**\r
- *\r
* @param cmd\r
* @param connection\r
* @param runtime\r
*/\r
- public void handleBPJZ(String cmd,Connection connection,Runtime runtime){\r
+ public void handleBPJZ(String cmd, Connection connection, Runtime runtime) {\r
//cmdbuf.size 42 IWBPJZ,867155030001063,199600,120,85,45,1# 高压120,低压85,年龄45,男性\r
// cmdbuf.size 42 IWBPJZ,867155030001063,909957,120,85,42,0# 高压120,低压85,年龄42,女性\r
//IWBPJZ,353456789012345,080835,110,75#\r
//080835 :指令流水号\r
//设备响应: IWAPJZ,792997,120,85,42,1#\r
//792997:指令流水号\r
- String[] list=cmd.split(CMDSPLIT);\r
- if (list.length==7){\r
- String index=list[2];\r
- String imei=list[1];\r
- String strBPH=list[3];\r
- String strBPL=list[4];\r
- String strAge=list[5];\r
- String strSex=list[6];\r
-\r
- connection.send(APJZ(index,strBPH,strBPL,strAge,strSex));\r
+ String[] list = cmd.split(CMDSPLIT);\r
+ if (list.length == 7) {\r
+ String index = list[2];\r
+ String imei = list[1];\r
+ String strBPH = list[3];\r
+ String strBPL = list[4];\r
+ String strAge = list[5];\r
+ String strSex = list[6];\r
+\r
+ connection.send(APJZ(index, strBPH, strBPL, strAge, strSex));\r
try {\r
runtime.getHRS().setXY_Ref(Integer.parseInt(strBPH), Integer.parseInt(strBPL), Integer.parseInt(strAge), Integer.parseInt(strSex));\r
ICLogger.i("Handle BPJZ IMEI " + imei + ",index " + index + ", BPH " + strBPH + ", BPL " + strBPL + ", Age " + strAge + ", Sex " + (strSex.equals("1") ? "男" : "女"));\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
- }else{\r
+ } else {\r
ICLogger.i("BPXY format error!");\r
}\r
}\r
\r
\r
-\r
//重启\r
\r
\r
- public static StringMessage AP18(String index){\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP18),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))\r
+ public static StringMessage AP18(String index) {\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP18), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))\r
.append(CMDSPLIT).append(index)\r
.append(CMDEND).toString());\r
}\r
\r
- public void handleBP18(Connection connection,String cmd) {\r
+ public void handleBP18(Connection connection, String cmd) {\r
\r
// IWBP18,867155030001063,161723\r
- String[] cmdlist=cmd.split(CMDSPLIT);\r
- if (cmdlist.length==3) {\r
+ String[] cmdlist = cmd.split(CMDSPLIT);\r
+ if (cmdlist.length == 3) {\r
\r
connection.send(AP18(cmdlist[2]));\r
\r
}\r
//恢复出厂设置\r
\r
- public static StringMessage AP17(String index){\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP17),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))\r
+ public static StringMessage AP17(String index) {\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP17), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))\r
.append(CMDSPLIT).append(index)\r
.append(CMDEND).toString());\r
}\r
- public void handleBP17(Connection connection,String cmd) {\r
+\r
+ public void handleBP17(Connection connection, String cmd) {\r
\r
// IWBP17,867155030001063,161723\r
- String[] cmdlist=cmd.split(CMDSPLIT);\r
- if (cmdlist.length==3) {\r
+ String[] cmdlist = cmd.split(CMDSPLIT);\r
+ if (cmdlist.length == 3) {\r
\r
connection.send(AP17(cmdlist[2]));\r
\r
//关机\r
\r
\r
- public static StringMessage AP31(String index){\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP31),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))\r
+ public static StringMessage AP31(String index) {\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP31), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))\r
.append(CMDSPLIT).append(index)\r
.append(CMDEND).toString());\r
}\r
- public void handleBP31(Connection connection,String cmd) {\r
+\r
+ public void handleBP31(Connection connection, String cmd) {\r
\r
// IWBP31,867155030001063,161723\r
- String[] cmdlist=cmd.split(CMDSPLIT);\r
- if (cmdlist.length==3) {\r
+ String[] cmdlist = cmd.split(CMDSPLIT);\r
+ if (cmdlist.length == 3) {\r
\r
connection.send(AP31(cmdlist[2]));\r
\r
}\r
\r
//设置SOS号码\r
- public static StringMessage AP12(String index,String phNum1,String phNum2,String phNum3){\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP12),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))\r
+ public static StringMessage AP12(String index, String phNum1, String phNum2, String phNum3) {\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP12), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))\r
.append(CMDSPLIT).append(index)\r
.append(CMDSPLIT).append(phNum1)\r
.append(CMDSPLIT).append(phNum2)\r
}\r
\r
//设置SOS号码\r
- public void handleBP12(Connection connection,String cmd,Runtime runtime){\r
+ public void handleBP12(Connection connection, String cmd, Runtime runtime) {\r
// IWBP12,353456789012345,080835,135XXXXXXXX,135XXXXXXXX,135XXXXXXXX#\r
- String[] cmdlist=cmd.split(CMDSPLIT);\r
- if (cmdlist.length>=3){\r
- String index=cmdlist[2];\r
- String phNum1=cmdlist.length==3?"":cmdlist[3];\r
- String phNum2=cmdlist.length>3?(cmdlist.length==4?"":cmdlist[4]):"";\r
- String phNum3=(cmdlist.length>4)?(cmdlist.length==5? "":cmdlist[5]):"";\r
- ICLogger.i(new StringBuffer().append("get Emegency Numbs "+phNum1+","+phNum2+","+phNum3).toString());\r
- connection.send(AP12(index,phNum1,phNum2,phNum3));\r
-\r
- ArrayList<Contact> contactArray=new ArrayList<Contact>();\r
- if (!phNum1.isEmpty()) contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",phNum1));\r
- if (!phNum2.isEmpty()) contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos2",phNum2));\r
- if (!phNum3.isEmpty()) contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos3",phNum3));\r
-\r
- runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true);\r
-\r
- }else{\r
+ String[] cmdlist = cmd.split(CMDSPLIT);\r
+ if (cmdlist.length >= 3) {\r
+ String index = cmdlist[2];\r
+ String phNum1 = cmdlist.length == 3 ? "" : cmdlist[3];\r
+ String phNum2 = cmdlist.length > 3 ? (cmdlist.length == 4 ? "" : cmdlist[4]) : "";\r
+ String phNum3 = (cmdlist.length > 4) ? (cmdlist.length == 5 ? "" : cmdlist[5]) : "";\r
+ ICLogger.i(new StringBuffer().append("get Emegency Numbs " + phNum1 + "," + phNum2 + "," + phNum3).toString());\r
+ connection.send(AP12(index, phNum1, phNum2, phNum3));\r
+\r
+ ArrayList<Contact> contactArray = new ArrayList<Contact>();\r
+ if (!phNum1.isEmpty())\r
+ contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", phNum1));\r
+ if (!phNum2.isEmpty())\r
+ contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", phNum2));\r
+ if (!phNum3.isEmpty())\r
+ contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum3));\r
+\r
+ runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true);\r
+\r
+ } else {\r
ICLogger.i(" BP12 format error!");\r
}\r
}\r
\r
\r
- public static StringMessage AP14(String index,String[] phnumbs){\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP14),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))\r
+ public static StringMessage AP14(String index, String[] phnumbs) {\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP14), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))\r
.append(CMDSPLIT).append(index)\r
.append(CMDSPLIT).append(phnumbs[0])\r
.append(CMDSPLIT).append(phnumbs[1])\r
.append(CMDSPLIT).append(phnumbs[9])\r
.append(CMDEND).toString());\r
}\r
+\r
//设置通讯录,白名单(10个)\r
- public void handleBP14(Connection connection,String cmd , Runtime runtime){\r
+ public void handleBP14(Connection connection, String cmd, Runtime runtime) {\r
// IWBP14,867155030001063,357444,9b44529b|13554820016,,,,,,,,,\r
/**\r
* IWBP14,353456789012345,080835,\r
* D3590D54|135xxxxxxxxxx,\r
* D3590D54|135xxxxxxxxxx#\r
*/\r
- String[] cmdlist=cmd.split(CMDSPLIT);\r
- String[] phnums=new String[]{"","","","","","","","","",""};\r
- StringBuffer sb=new StringBuffer().append("recv phone Numbs ");\r
- if (cmdlist.length>=3){\r
- switch (cmdlist.length){\r
+ String[] cmdlist = cmd.split(CMDSPLIT);\r
+ String[] phnums = new String[]{"", "", "", "", "", "", "", "", "", ""};\r
+ StringBuffer sb = new StringBuffer().append("recv phone Numbs ");\r
+ if (cmdlist.length >= 3) {\r
+ switch (cmdlist.length) {\r
case 13:\r
- phnums[9]=cmdlist[12];\r
+ phnums[9] = cmdlist[12];\r
sb.append(phnums[9]).append(",");\r
case 12:\r
- phnums[8]=cmdlist[11];\r
+ phnums[8] = cmdlist[11];\r
sb.append(phnums[8]).append(",");\r
case 11:\r
- phnums[7]=cmdlist[10];\r
+ phnums[7] = cmdlist[10];\r
sb.append(phnums[7]).append(",");\r
case 10:\r
- phnums[6]=cmdlist[9];\r
+ phnums[6] = cmdlist[9];\r
sb.append(phnums[6]).append(",");\r
case 9:\r
- phnums[5]=cmdlist[8];\r
+ phnums[5] = cmdlist[8];\r
sb.append(phnums[5]).append(",");\r
case 8:\r
- phnums[4]=cmdlist[7];\r
+ phnums[4] = cmdlist[7];\r
sb.append(phnums[4]).append(",");\r
case 7:\r
- phnums[3]=cmdlist[6];\r
+ phnums[3] = cmdlist[6];\r
sb.append(phnums[3]).append(",");\r
case 6:\r
- phnums[2]=cmdlist[5];\r
+ phnums[2] = cmdlist[5];\r
sb.append(phnums[2]).append(",");\r
case 5:\r
- phnums[1]=cmdlist[4];\r
+ phnums[1] = cmdlist[4];\r
sb.append(phnums[1]).append(",");\r
case 4:\r
- phnums[0]=cmdlist[3];\r
+ phnums[0] = cmdlist[3];\r
sb.append(phnums[0]).append(",");\r
\r
}\r
\r
- String index=cmdlist[2];\r
+ String index = cmdlist[2];\r
ICLogger.i(sb.toString());\r
- connection.send(AP14(index,phnums));\r
- ArrayList<Contact> contactArray=new ArrayList<Contact>();\r
- for (int i=0; i< phnums.length;i++){\r
- String[] tmp= phnums[i].split("\\|");\r
- if (tmp.length==2){\r
- String name= Util.decodeUnicode2Utf8(tmp[0]);\r
- String phonem=tmp[1];\r
- ICLogger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length+" , name="+name+",-"+phonem);\r
- contactArray.add(new Contact(Contact.CATEGORY_CALL,name,phonem));\r
- }else{\r
- ICLogger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length);\r
+ connection.send(AP14(index, phnums));\r
+ ArrayList<Contact> contactArray = new ArrayList<Contact>();\r
+ for (int i = 0; i < phnums.length; i++) {\r
+ String[] tmp = phnums[i].split("\\|");\r
+ if (tmp.length == 2) {\r
+ String name = Util.decodeUnicode2Utf8(tmp[0]);\r
+ String phonem = tmp[1];\r
+ ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length + " , name=" + name + ",-" + phonem);\r
+ contactArray.add(new Contact(Contact.CATEGORY_CALL, name, phonem));\r
+ } else {\r
+ ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length);\r
\r
}\r
}\r
// contactArray.add(new Contact(Contact.CATEGORY_CARE,"CARE","666"));\r
// contactArray.add(new Contact(Contact.CATEGORY_VOLTE,"VOLTE","666"));\r
\r
- runtime.getDbHelper().saveContacts(contactArray,false,false,true,false,false,false);\r
+ runtime.getDbHelper().saveContacts(contactArray, false, false, true, false, false, false);\r
\r
- }else{\r
+ } else {\r
ICLogger.i(" BP14 format error!");\r
}\r
\r
}\r
\r
\r
-\r
- public static StringMessage AP85(Runtime ds,String cmddata){\r
+ public static StringMessage AP85(Runtime ds, String cmddata) {\r
//示例数据:IWAP49,68##\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP85),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP85), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
.append(CMDSPLIT).append(cmddata)\r
.append(CMDEND).toString());\r
\r
}\r
+\r
//设置闹钟\r
- public void handleBP85(String cmd , Connection connection,Runtime runtime){\r
+ public void handleBP85(String cmd, Connection connection, Runtime runtime) {\r
// IWBP85,867155030001063,155312,1,1,0235,12,1,1\r
// IWBP85,867155030002145,945166,1,0,\r
// IWBP85,867155030001064,265960,1,1,1130,,1,1\r
//3 表示久坐提醒\r
//多组闹钟之间用”@”符号分隔\r
\r
- String imei="",cmdindex="0"/*指令流水号*/;\r
- int all_alarmswitch=0 /*总开关 1为开,0 为关*/,\r
- alarmswitch=0 /*1为开,0 为关*/,\r
- alarmcount=0 /*表示闹钟个数*/;\r
- String alarmtime="";//0900表示早上09:00\r
- int alarmtype=1; //1表示吃药提醒 , 2 表示喝水提醒 ,3 表示久坐提醒\r
- String repeat="";// 135表示周一周三周五,使用24小时制\r
- String[] datalist= cmd.split("@");\r
- ArrayList<Alarm> alarmlist=new ArrayList<>();\r
- if (datalist.length >0){\r
+ String imei = "", cmdindex = "0"/*指令流水号*/;\r
+ int all_alarmswitch = 0 /*总开关 1为开,0 为关*/,\r
+ alarmswitch = 0 /*1为开,0 为关*/,\r
+ alarmcount = 0 /*表示闹钟个数*/;\r
+ String alarmtime = "";//0900表示早上09:00\r
+ int alarmtype = 1; //1表示吃药提醒 , 2 表示喝水提醒 ,3 表示久坐提醒\r
+ String repeat = "";// 135表示周一周三周五,使用24小时制\r
+ String[] datalist = cmd.split("@");\r
+ ArrayList<Alarm> alarmlist = new ArrayList<>();\r
+ if (datalist.length > 0) {\r
try {\r
for (int i = 0; i < datalist.length; i++) {\r
String[] cmdarglist = datalist[i].split(",");\r
runtime.getDbHelper().saveAlarm(alarmlist);\r
\r
//do clean and set alarm things\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
}\r
//IWBP85,867155030002145,410385,1,0,#\r
\r
- String replacement=new StringBuilder("IWBP85,").append(imei).append(",").toString();\r
- String replycmd = cmd.replace(replacement,"");\r
- ICLogger.i("gen reply "+replacement+" "+replycmd);\r
- connection.send(AP85(runtime,replycmd));\r
+ String replacement = new StringBuilder("IWBP85,").append(imei).append(",").toString();\r
+ String replycmd = cmd.replace(replacement, "");\r
+ ICLogger.i("gen reply " + replacement + " " + replycmd);\r
+ connection.send(AP85(runtime, replycmd));\r
}\r
\r
\r
// }\r
\r
\r
-\r
-\r
- public static byte[] AP07(String packetTime,int count,int index,int datalen,byte[] amrdata){\r
+ public static byte[] AP07(String packetTime, int count, int index, int datalen, byte[] amrdata) {\r
//IWAP07,20140818064408,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#\r
//说明:\r
//IW:标识符\r
//如果设备回复确认数据包接收失败状态,则重复发送上一个数据包\r
\r
\r
- String sb=new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP07))\r
+ String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP07))\r
.append(CMDSPLIT).append(packetTime)\r
.append(CMDSPLIT).append(count)\r
.append(CMDSPLIT).append(index)\r
.append(CMDSPLIT).append(datalen)\r
.append(CMDSPLIT).toString();\r
\r
- byte[] sentbuf=new byte[sb.length()+datalen+1];\r
- System.arraycopy(sb.getBytes(),0,sentbuf,0,sb.length());\r
- System.arraycopy(amrdata,0,sentbuf,sb.length(),datalen);\r
- sentbuf[sb.length()+datalen]='#';\r
+ byte[] sentbuf = new byte[sb.length() + datalen + 1];\r
+ System.arraycopy(sb.getBytes(), 0, sentbuf, 0, sb.length());\r
+ System.arraycopy(amrdata, 0, sentbuf, sb.length(), datalen);\r
+ sentbuf[sb.length() + datalen] = '#';\r
\r
return sentbuf;\r
\r
}\r
\r
\r
- public void handleBP07(String cmd , Connection connection ){\r
+ public void handleBP07(String cmd, Connection connection) {\r
//平台响应: IWBP07,20140818064408,6,1,1#\r
//20140818064408:设备语音时间,yyyyMMddHHmmss 格式的年月日时分秒\r
//6:语音包分包总数\r
//1:当前设备收到的是第几个包\r
//1:表示服务器接受数据成功,0表示服务器接受数据失败\r
- String[] cmdlist=cmd.split(CMDSPLIT);\r
- if (cmdlist.length==5){\r
+ String[] cmdlist = cmd.split(CMDSPLIT);\r
+ if (cmdlist.length == 5) {\r
try {\r
String time = cmdlist[1];\r
int packetCount = Integer.parseInt(cmdlist[2]);\r
}\r
//发送消息,再次检查要发送的语音包,确认其发送完毕\r
connection.DeliverCMDMessageToSystem("SentVoicePacket", "SentVoicePacket");\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
- }else{\r
+ } else {\r
ICLogger.i(" BP07 Format error!");\r
}\r
}\r
\r
\r
-\r
- public static StringMessage AP33(String cmdindex,int workMode){\r
+ public static StringMessage AP33(String cmdindex, int workMode) {\r
//IWAP33,080835,1#\r
//080835:指令流水号\r
//1:设置信息,供服务器同步\r
}\r
\r
//设置工作模式\r
- public void handleBP33(Connection connection,Runtime runtime,String cmd){\r
+ public void handleBP33(Connection connection, Runtime runtime, String cmd) {\r
\r
// IWBP33,867155030001063,560555,1\r
// IW:标识符\r
// 080835:指令流水号\r
// 1:设备工作模式,1:正常模式,2:省电模式,3:紧急模式\r
\r
- String[] cmdlist=cmd.split(",");\r
- if (cmdlist.length == 4){\r
- log("work mode "+cmdlist[3]);\r
+ String[] cmdlist = cmd.split(",");\r
+ if (cmdlist.length == 4) {\r
+ log("com.ic.work mode " + cmdlist[3]);\r
try {\r
int mod = Integer.parseInt(cmdlist[3]);\r
int Cycle = 900;\r
runtime.getLocationInstance().setWorkingMod(mod);\r
// CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod());\r
//此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
}\r
\r
}\r
\r
\r
- public static StringMessage AP34(String cmdindex,int workMode){\r
+ public static StringMessage AP34(String cmdindex, int workMode) {\r
//IWAP34,588854,1#\r
//080835:指令流水号\r
//8:模式\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP34),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP34), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))\r
.append(CMDSPLIT).append(cmdindex)\r
.append(CMDSPLIT).append(workMode)\r
.append(CMDEND).toString());\r
}\r
\r
//设置自定义工作模式\r
- public void handleBP34(Connection connection,Runtime runtime,String cmd){\r
+ public void handleBP34(Connection connection, Runtime runtime, String cmd) {\r
\r
// IWBP34,867155030001063,588854,8,900,1#\r
// IW:标识符\r
// 080835:指令流水号\r
// 1:设备工作模式,1:正常模式,2:省电模式,3:紧急模式\r
\r
- String[] cmdlist=cmd.split(",");\r
- if (cmdlist.length == 6){\r
+ String[] cmdlist = cmd.split(",");\r
+ if (cmdlist.length == 6) {\r
\r
\r
- log("work mode "+cmdlist[3]);\r
+ log("com.ic.work mode " + cmdlist[3]);\r
try {\r
int mod = Integer.parseInt(cmdlist[3]);\r
int Cycle = Integer.parseInt(cmdlist[4]);\r
runtime.getLocationInstance().setWorkingMod(mod);\r
// CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod());\r
//此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
}\r
\r
}\r
- public void handleBP40(Connection connection,Runtime runtime,String cmd){\r
+\r
+ public void handleBP40(Connection connection, Runtime runtime, String cmd) {\r
\r
// IWBP40,353456789012345,080835,XXXXXXXXXXXXXX#\r
// IW:标识符\r
// XXXXXXXXXXXX : 表示文字内容GB2312编码\r
\r
\r
- String[] cmdlist=cmd.split(",");\r
- if (cmdlist.length == 4){\r
- String cmdindex=cmdlist[2];\r
- String txtmsg=cmdlist[3];\r
+ String[] cmdlist = cmd.split(",");\r
+ if (cmdlist.length == 4) {\r
+ String cmdindex = cmdlist[2];\r
+ String txtmsg = cmdlist[3];\r
\r
- txtmsg=Util.UrlGB2312ToUTF8(txtmsg);\r
- StringMessage msg=AP40(cmdindex,1);\r
+ txtmsg = Util.UrlGB2312ToUTF8(txtmsg);\r
+ StringMessage msg = AP40(cmdindex, 1);\r
//设定当前工作模式及循环频率\r
connection.send(msg);\r
- ICLogger.i("received Txt Msg "+txtmsg);\r
- runtime.getContextProxy().sendMsgBroadcast(txtmsg,0);\r
+ ICLogger.i("received Txt Msg " + txtmsg);\r
+ runtime.getContextProxy().sendMsgBroadcast(txtmsg, 0);\r
runtime.getContextProxy().saveMstToSMSDB(txtmsg);\r
- }else{\r
+ } else {\r
ICLogger.i("BP40 format error!");\r
}\r
}\r
- public static StringMessage AP40(String cmdindex,int success){\r
+\r
+ public static StringMessage AP40(String cmdindex, int success) {\r
\r
// IWAP40,080835,1#\r
// 080835:指令流水号\r
// 1:表示设备接受数据成功,0表示设备接受数据失败\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP40),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP40))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP40), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP40))\r
.append(CMDSPLIT).append(cmdindex)\r
.append(CMDSPLIT).append(success)\r
.append(CMDEND).toString());\r
\r
/**\r
* 心率上传,返回协议字串\r
+ *\r
* @param ds\r
* @return\r
*/\r
- public static StringMessage AP49(Runtime ds){\r
+ public static StringMessage AP49(Runtime ds) {\r
//示例数据:IWAP49,68##\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP49),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP49), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
.append(CMDSPLIT).append(ds.getHRS().getPPG())\r
.append(CMDEND).toString());\r
\r
}\r
\r
\r
-\r
-\r
/**\r
* 返回上传心率血压的协议字串\r
+ *\r
* @param ds\r
* @return\r
*/\r
- public static StringMessage APHT(Runtime ds){\r
+ public static StringMessage APHT(Runtime ds) {\r
//IWAPHT,60,130,85#\r
//说明:\r
//IW:标识符\r
//85 : 血压低压 [舒张压]\r
//平台响应: IWBPHT#\r
//表示平台已接收,可不作响应\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APHT), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
.append(CMDSPLIT).append(ds.getHRS().getPPG())\r
.append(CMDSPLIT).append(ds.getHRS().getBPH())\r
.append(CMDSPLIT).append(ds.getHRS().getBPL())\r
.append(CMDEND).toString());\r
}\r
- public static StringMessage APHT(int ppg,int bph,int bpl){\r
+\r
+ public static StringMessage APHT(int ppg, int bph, int bpl) {\r
//IWAPHT,60,130,85#\r
//说明:\r
//IW:标识符\r
//85 : 血压低压 [舒张压]\r
//平台响应: IWBPHT#\r
//表示平台已接收,可不作响应\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APHT), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
.append(CMDSPLIT).append(ppg)\r
.append(CMDSPLIT).append(bph)\r
.append(CMDSPLIT).append(bpl)\r
\r
\r
//立即定位反馈\r
- public static StringMessage AP16(String cmdindex){\r
+ public static StringMessage AP16(String cmdindex) {\r
//IWAP16,080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP16),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP16), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
.append(CMDSPLIT).append(cmdindex)\r
.append(CMDEND).toString());\r
}\r
+\r
// 立即定位指令(长链接有效)\r
- public void handleBP16(Connection connection,Runtime runtime,String cmd){\r
+ public void handleBP16(Connection connection, Runtime runtime, String cmd) {\r
//示例数据:IWBP16,867155030001063,335386\r
// IWBP16,353456789012345,080835#\r
// 说明:\r
// 353456789012345:IMEI号,设备唯一ID\r
// 080835 :指令流水号\r
String[] cmdlist = cmd.split(",");\r
- if(cmdlist.length==3){\r
- log("imei "+cmdlist[1]+", cmdindex "+cmdlist[2]);\r
+ if (cmdlist.length == 3) {\r
+ log("imei " + cmdlist[1] + ", cmdindex " + cmdlist[2]);\r
\r
connection.send(AP16(cmdlist[2]));\r
- }else{\r
+ } else {\r
log("error BP16 format");\r
}\r
}\r
\r
\r
/*通过基站获取时间和坐标*/\r
- public static StringMessage APTM(Runtime ds){\r
+ public static StringMessage APTM(Runtime ds) {\r
//示例数据:IWAPTM,460,0,9750,3613#\r
//说明:\r
//IW:标识符\r
//9750: LAC\r
//3613: CID\r
\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APTM),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APTM), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
.append(CMDSPLIT).append(ds.getLocationInstance().getMCC())\r
.append(CMDSPLIT).append(ds.getLocationInstance().getMNC())\r
.append(CMDSPLIT).append(ds.getLocationInstance().getLAC())\r
\r
}\r
\r
- public void handleBPTM(String cmd){\r
+ public void handleBPTM(String cmd) {\r
//平台响应: IWBPTM,20160225090909,22.123456,113.654321#\r
//返回时间,格式为:yyyyMMddHHmmss ,为UTC0 时间\r
//经纬度保留六位小数,若没取到则返回 0\r
- String[] list=cmd.split(CMDSPLIT);\r
+ String[] list = cmd.split(CMDSPLIT);\r
\r
- if(list.length==4){\r
+ if (list.length == 4) {\r
\r
- String time=list[1];\r
- String lat=list[2];\r
- String lon=list[3];\r
- ICLogger.i("BPTM , time="+time+", lat="+lat+", lon="+lon);\r
- }else{\r
+ String time = list[1];\r
+ String lat = list[2];\r
+ String lon = list[3];\r
+ ICLogger.i("BPTM , time=" + time + ", lat=" + lat + ", lon=" + lon);\r
+ } else {\r
ICLogger.i("BPTM format error");\r
}\r
\r
\r
}\r
\r
- public static StringMessage AP15(String index){\r
+ public static StringMessage AP15(String index) {\r
//IWAP15, 080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP15),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP15), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))\r
.append(CMDSPLIT).append(index)\r
.append(CMDEND).toString());\r
}\r
\r
//设置定位周期\r
- public void handleBP15(String cmd ,Connection connection,Runtime runtime){\r
+ public void handleBP15(String cmd, Connection connection, Runtime runtime) {\r
// IWBP15, 353456789012345, 080835, 30#\r
// 353456789012345:IMEI号,设备唯一ID\r
// 080835 :指令流水号\r
// 30: 表示频率为30分钟\r
\r
- String[] list=cmd.split(CMDSPLIT);\r
+ String[] list = cmd.split(CMDSPLIT);\r
\r
- if(list.length==4){\r
+ if (list.length == 4) {\r
try {\r
String index = list[2];\r
String time = list[3];\r
runtime.getLocationInstance().setLocation_cycle(Config.getLocationCycle(runtime.getContextProxy().context));\r
//set AlarmCycle and trigger Location\r
CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod());\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
- }else{\r
+ } else {\r
ICLogger.i("BP15 format error");\r
}\r
\r
}\r
\r
\r
-\r
-\r
-\r
-\r
/*语音下行反馈*/\r
public static StringMessage AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {\r
//示例数据:IWAP28,D3590D54,xxxx,6,1,1#\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP28),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP28), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
.append(CMDSPLIT).append(name)\r
.append(CMDSPLIT).append(msg)\r
.append(CMDSPLIT).append(packagecount)\r
}\r
\r
//处理 BP28 语音消息\r
- public void handleBP28(Connection connection,String cmd,Runtime runtime,byte[] bytes) {\r
+ public void handleBP28(Connection connection, String cmd, Runtime runtime, byte[] bytes) {\r
//log("handleBP28 msg"+cmd);\r
/**\r
* IWBP28, D3590D54,XXXX,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#\r
int packetLen;\r
byte[] packetData;\r
\r
- String[] msg= cmd.split(CMDSPLIT);\r
- if (msg.length>=6){\r
+ String[] msg = cmd.split(CMDSPLIT);\r
+ if (msg.length >= 6) {\r
\r
try {\r
Name = msg[1];\r
\r
connection.DeliverCMDMessageToSystem("NewVoice", amrFilepath);//通知下面线程状态变化\r
}\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
\r
- }else{\r
- log("handleBP28","format Error");\r
+ } else {\r
+ log("handleBP28", "format Error");\r
// connection.send(genStringMessage("AP28",AP28(Name,appendIndex,packetCount,currentId,0)));\r
\r
}\r
}\r
\r
//白名单开关(下行协议号:BP84,响应:AP84)\r
- public static StringMessage AP84(String index,int success){\r
+ public static StringMessage AP84(String index, int success) {\r
\r
//设备响应: IWAP80,080835,1#\r
//080835:指令流水号\r
//1:表示设备执行成功,0 表示设备执行失败\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP84),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP84), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))\r
.append(CMDSPLIT).append(index)\r
.append(CMDSPLIT).append(success)\r
.append(CMDEND).toString());\r
}\r
\r
- public void handleBP84(String cmd,Connection connection){\r
+ public void handleBP84(String cmd, Connection connection) {\r
//示例:\r
//IWBP84,353456789012345,080835,1#\r
//说明:\r
//353456789012345:IMEI号,设备唯一ID\r
//080835 :指令流水号\r
//1: 表示白名单开,0 表示白名单关\r
- String[] list=cmd.split(CMDSPLIT);\r
+ String[] list = cmd.split(CMDSPLIT);\r
\r
- if (list.length==4){\r
- String index=list[2];\r
- String whitelist_switch=list[3];\r
- connection.send(AP84(index,1));\r
+ if (list.length == 4) {\r
+ String index = list[2];\r
+ String whitelist_switch = list[3];\r
+ connection.send(AP84(index, 1));\r
\r
- if (whitelist_switch.equals("1")){\r
- Util.setSystemProperties("persist.sys.whitelist.enable","true");\r
- }else{\r
- Util.setSystemProperties("persist.sys.whitelist.enable","false");\r
+ if (whitelist_switch.equals("1")) {\r
+ Util.setSystemProperties("persist.sys.whitelist.enable", "true");\r
+ } else {\r
+ Util.setSystemProperties("persist.sys.whitelist.enable", "false");\r
}\r
- ICLogger.i("收到服务器指令:白名单"+(whitelist_switch.equals("1")?"开":"关"));\r
+ ICLogger.i("收到服务器指令:白名单" + (whitelist_switch.equals("1") ? "开" : "关"));\r
\r
- }else{\r
+ } else {\r
\r
ICLogger.i("BP84 format error!");\r
}\r
}\r
\r
//17.绑定解绑(下行协议号:BP68,响应:AP68)\r
- public static StringMessage AP68(String index){\r
+ public static StringMessage AP68(String index) {\r
\r
//设备响应: IWAP86, 080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP68),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP68), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68))\r
.append(CMDSPLIT).append(index)\r
.append(CMDEND).toString());\r
}\r
\r
- public void handleBP68(String cmd,Connection connection,Runtime runtime){\r
+ public void handleBP68(String cmd, Connection connection, Runtime runtime) {\r
\r
//示例:\r
//IWBP68,353456789012345,080835,1#\r
//080835 :指令流水号\r
//1 : 表示设备为激活状态(绑定成功) 0:表示设备为未激活状态(解绑成功)\r
\r
- String[] list=cmd.split(CMDSPLIT);\r
+ String[] list = cmd.split(CMDSPLIT);\r
\r
- if (list.length==4){\r
- String index=list[2];\r
- String type=list[3];\r
+ if (list.length == 4) {\r
+ String index = list[2];\r
+ String type = list[3];\r
connection.send(AP68(index));\r
- ICLogger.i("收到服务器消息:"+(type.equals("1")?"绑定成功 ":"未激活或者解绑"));\r
+ ICLogger.i("收到服务器消息:" + (type.equals("1") ? "绑定成功 " : "未激活或者解绑"));\r
\r
- }else{\r
+ } else {\r
ICLogger.i("BP86 format error!");\r
}\r
\r
}\r
+\r
//17.设置心率/血压测量周期(下行协议号:BP86,响应:AP86)\r
- public static StringMessage AP86(String index){\r
+ public static StringMessage AP86(String index) {\r
\r
//设备响应: IWAP86, 080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP86),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP86), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))\r
.append(CMDSPLIT).append(index)\r
.append(CMDEND).toString());\r
}\r
\r
- public void handleBP86(String cmd,Connection connection,Runtime runtime){\r
+ public void handleBP86(String cmd, Connection connection, Runtime runtime) {\r
\r
//示例:\r
//IWBP86, 353456789012345, 080835,1,720#\r
//1: 表示心率周期;2 :表示血压周期\r
//720: 表示720分钟\r
\r
- String[] list=cmd.split(CMDSPLIT);\r
+ String[] list = cmd.split(CMDSPLIT);\r
\r
- if (list.length==5){\r
+ if (list.length == 5) {\r
try {\r
String index = list[2];\r
String type = list[3];\r
Intent intent = new Intent();\r
intent.putExtra("PPGTestCycle", Integer.parseInt(cycle));\r
runtime.getContextProxy().sendBrodcast(ACTION_HEATR_RATE_START, intent);\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
- }else{\r
+ } else {\r
ICLogger.i("BP86 format error!");\r
}\r
\r
}\r
- public static StringMessage AP88(String index){\r
+\r
+ public static StringMessage AP88(String index) {\r
//设备响应: IWAP88, 080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP88),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP88), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88))\r
.append(CMDSPLIT).append(index)\r
.append(CMDEND).toString());\r
}\r
\r
- public static void handleBP88(String cmd,Connection connection){\r
+ public static void handleBP88(String cmd, Connection connection) {\r
// IWBP88,080835#\r
- String[] list=cmd.split(CMDSPLIT);\r
+ String[] list = cmd.split(CMDSPLIT);\r
\r
- if (list.length==2){\r
- String index=list[1];\r
+ if (list.length == 2) {\r
+ String index = list[1];\r
connection.send(AP88(index));\r
ICLogger.i("收到服务器消息:查询设备");\r
\r
- }else{\r
+ } else {\r
ICLogger.i("BP88 format error!");\r
}\r
}\r
\r
//18.18.设置心率/血压阀值(下行协议号:BP89,响应:AP89)\r
- public static StringMessage AP89(String index){\r
+ public static StringMessage AP89(String index) {\r
\r
//设备响应: IWAP89, 080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.AP89),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP89), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))\r
.append(CMDSPLIT).append(index)\r
.append(CMDEND).toString());\r
}\r
\r
- public void handleBP89(String cmd,Connection connection){\r
+ public void handleBP89(String cmd, Connection connection) {\r
\r
//示例:\r
//IWBP89, 353456789012345, 080835,50,90,80,90,110,140#\r
//90: 低压阀值,低压高于该阀值上传血压,如果未设置,则留空\r
//110: 高压阀值,高压低于该阀值上传血压,如果未设置,则留空\r
//140: 高压阀值,高压高于该阀值上传血压,如果未设置,则留空\r
- String[] list=cmd.split(CMDSPLIT);\r
- if (list.length==9){\r
- String index=list[2];\r
- String PPGH=list[3];\r
- String PPGL=list[4];\r
- String BPH_H=list[5];\r
- String BPH_L=list[6];\r
- String BPL_H=list[7];\r
- String BPL_L=list[8];\r
+ String[] list = cmd.split(CMDSPLIT);\r
+ if (list.length == 9) {\r
+ String index = list[2];\r
+ String PPGH = list[3];\r
+ String PPGL = list[4];\r
+ String BPH_H = list[5];\r
+ String BPH_L = list[6];\r
+ String BPL_H = list[7];\r
+ String BPL_L = list[8];\r
connection.send(AP89(index));\r
- ICLogger.i("收到服务器指令:心率/血压阀值 "+PPGH+","+PPGL+","+BPH_H+","+BPH_L+","+BPL_H+","+BPL_L);\r
- }else{\r
+ ICLogger.i("收到服务器指令:心率/血压阀值 " + PPGH + "," + PPGL + "," + BPH_H + "," + BPH_L + "," + BPL_H + "," + BPL_L);\r
+ } else {\r
ICLogger.i("BP89 format error!");\r
}\r
\r
}\r
\r
//体温间隔测量 (后台测试体温)(下行协议号:BPTE,响应:APTE)\r
- public static StringMessage APTE(String index,int freq){\r
+ public static StringMessage APTE(String index, int freq) {\r
\r
//设备响应: IWAPTE,080835,60#\r
//080835:指令流水号\r
//1:表示设备接受数据成功,0表示设备接受数据失败\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APTE),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APTE), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE))\r
.append(CMDSPLIT).append(index)\r
.append(CMDSPLIT).append(freq)\r
.append(CMDEND).toString());\r
}\r
\r
- public void handleBPTE(String cmd,Connection connection,Runtime runtime){\r
+ public void handleBPTE(String cmd, Connection connection, Runtime runtime) {\r
\r
//示例:\r
//IWBPTE,353456789012345,080835,60#\r
//353456789012345:IMEI号,设备唯一ID\r
//080835 :指令流水号\r
//60 : 上传间隔,单位分钟(60分钟上传一次体温,终端收到后立即开始测量一次并重置定时器)\r
- String[] list=cmd.split(CMDSPLIT);\r
- if (list.length==4){\r
+ String[] list = cmd.split(CMDSPLIT);\r
+ if (list.length == 4) {\r
try {\r
String index = list[2];\r
String freqstr = list[3];\r
Config.setTemperatureTestCycle(runtime, freq * 60);\r
CoreService.getInstance().setTempAlarm();\r
\r
- if(runtime.check_stat_do_temp_test()) TemperatureUtil.doTempTestInThread();\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ if (runtime.check_stat_do_temp_test())\r
+ TemperatureUtil.getInstance().doTempTestInThread(FROM_SERVER);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
// double wrist_temp,body_temp;\r
// wrist_temp=TemperatureUtil.get_temp_value_adjusted();\r
// String temperatureMsg=APTP(wrist_temp,body_temp);\r
// connection.send(genStringMessage("APTP",temperatureMsg));\r
// ICLogger.i("发送体温测量值 "+temperatureMsg);\r
- }else{\r
+ } else {\r
ICLogger.i("BP89 format error!");\r
}\r
\r
}\r
\r
//体温上行(上行协议号:APTP,响应:BPTP)\r
- public static StringMessage APTP(double wrist_temp,double body_temp){\r
+ public static StringMessage APTP(double wrist_temp, double body_temp) {\r
\r
//设备: IWAPTP,36.3,33,132#\r
//IW:标识符\r
//APTP : 命令字符\r
//35.3:测量体温 (摄氏度)\r
//33,132:温补用的参数,此处不用,可以用0 来代替。\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APTP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP))\r
- .append(CMDSPLIT).append(String.format("%1$.2f",wrist_temp))\r
- .append(CMDSPLIT).append(String.format("%1$.2f",body_temp))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APTP), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP))\r
+ .append(CMDSPLIT).append(String.format("%1$.2f", wrist_temp))\r
+ .append(CMDSPLIT).append(String.format("%1$.2f", body_temp))\r
.append(CMDSPLIT).append(0)\r
.append(CMDEND).toString());\r
}\r
\r
- public void handleBPTP(){\r
+ public void handleBPTP() {\r
\r
ICLogger.d("BPTP 服务器收到体温数据!");\r
\r
}\r
\r
\r
- public static StringMessage APX1(String id){\r
+ public static StringMessage APX1(String id) {\r
//设备响应: IWAPX1, 080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APX1),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APX1))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APX1), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APX1))\r
.append(CMDSPLIT).append(id)\r
.append(CMDEND).toString());\r
}\r
\r
/**\r
- *\r
* @param cmd\r
* @param connection\r
* @param runtime\r
*/\r
- public void handleBPX1(String cmd,Connection connection,Runtime runtime){\r
+ public void handleBPX1(String cmd, Connection connection, Runtime runtime) {\r
//IWBPX1,353456789012345,080835,2,1,-3,0#\r
//说明:\r
// IW:标识符\r
// 1:高压修正值\r
// -3:低压修正值\r
// 0:血氧修正值\r
- String[] list=cmd.split(CMDSPLIT);\r
- if (list.length==7){\r
- String index=list[2];\r
- String imei=list[1];\r
- String strXL=list[3];\r
- String strBPH=list[4];\r
- String strBPL=list[5];\r
- String strSpO2=list[6];\r
+ String[] list = cmd.split(CMDSPLIT);\r
+ if (list.length == 7) {\r
+ String index = list[2];\r
+ String imei = list[1];\r
+ String strXL = list[3];\r
+ String strBPH = list[4];\r
+ String strBPL = list[5];\r
+ String strSpO2 = list[6];\r
\r
connection.send(APX1(index));\r
\r
Config.setSPo2Adjust(mRuntime.getContextProxy().context, spo2_adjust);\r
\r
ICLogger.i("Handle BPX1 IMEI " + imei + ",index " + index + ", BPH " + strBPH + ", BPL " + strBPL + ", PPG " + strXL + ", Sp02 " + strSpO2);\r
- }catch (Exception e){\r
- ICLogger.e(e.getMessage(),e);\r
+ } catch (Exception e) {\r
+ ICLogger.e(e.getMessage(), e);\r
}\r
- }else{\r
+ } else {\r
ICLogger.i("BPX1 format error!");\r
}\r
}\r
\r
\r
-\r
- public static StringMessage APS4(String id){\r
+ public static StringMessage APS4(String id) {\r
//设备响应: IWAPS4,080835#\r
//080835:指令流水号\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APS4),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APS4))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APS4), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APS4))\r
.append(CMDSPLIT).append(id)\r
.append(CMDEND).toString());\r
}\r
\r
/**\r
* 主要为久坐设置提醒时长。\r
+ *\r
* @param cmd\r
* @param connection\r
* @param runtime\r
*/\r
- public void handleBPS4(String cmd,Connection connection,Runtime runtime){\r
+ public void handleBPS4(String cmd, Connection connection, Runtime runtime) {\r
//IWBPS4,353456789012345,080835,1|1234567|0900|1100|180, 2|1234567|0900|1100|180, 1|1234567|0900|1100|180#\r
//说明:\r
// IW:标识符\r
// 1|1234567|0900|1100|180:类型(1久坐,2喝水)|重复周期|开始时间|结束时间|时间间隔(单位秒)\r
// 重复周期、开始结束时间格式 参考BP85闹钟设置,\r
//#:结尾标识符\r
- String[] list=cmd.split(CMDSPLIT);\r
- if (list.length>=4){\r
+ String[] list = cmd.split(CMDSPLIT);\r
+ if (list.length >= 4) {\r
\r
- String index=list[2];\r
- String imei=list[1];\r
+ String index = list[2];\r
+ String imei = list[1];\r
connection.send(APS4(index));\r
\r
String setting1;\r
- switch(list.length){\r
+ switch (list.length) {\r
case 10:\r
- setting1=list[9];\r
- ICLogger.i("set 7th alarm "+setting1);\r
+ setting1 = list[9];\r
+ ICLogger.i("set 7th alarm " + setting1);\r
case 9:\r
- setting1=list[8];\r
- ICLogger.i("set 6th alarm "+setting1);\r
+ setting1 = list[8];\r
+ ICLogger.i("set 6th alarm " + setting1);\r
case 8:\r
- setting1=list[7];\r
- ICLogger.i("set 5th alarm "+setting1);\r
+ setting1 = list[7];\r
+ ICLogger.i("set 5th alarm " + setting1);\r
case 7:\r
- setting1=list[6];\r
- ICLogger.i("set 4th alarm "+setting1);\r
+ setting1 = list[6];\r
+ ICLogger.i("set 4th alarm " + setting1);\r
case 6:\r
- setting1=list[5];\r
- ICLogger.i("set 3rd alarm "+setting1);\r
+ setting1 = list[5];\r
+ ICLogger.i("set 3rd alarm " + setting1);\r
case 5:\r
- setting1=list[4];\r
- ICLogger.i("set 2nt alarm "+setting1);\r
+ setting1 = list[4];\r
+ ICLogger.i("set 2nt alarm " + setting1);\r
case 4:\r
- setting1=list[3];\r
- ICLogger.i("set 1st alarm "+setting1);\r
+ setting1 = list[3];\r
+ ICLogger.i("set 1st alarm " + setting1);\r
break;\r
}\r
\r
- ICLogger.i("Handle BPX1 IMEI "+imei+",index "+index+", get "+(list.length-3) +" settings");\r
- }else{\r
+ ICLogger.i("Handle BPX1 IMEI " + imei + ",index " + index + ", get " + (list.length - 3) + " settings");\r
+ } else {\r
ICLogger.i("BPX1 format error!");\r
}\r
}\r
\r
- public static StringMessage APHP(Runtime ds){\r
+ public static StringMessage APHP(Runtime ds) {\r
//IWAPHP,60,130,85,95,90, , , , , , , , #\r
//IW:标识符\r
//APHT : 命令字符\r
//95:血氧\r
//90:血糖\r
// 本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空\r
- return genStringMessage( cmdMap.get(CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APHP), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
.append(CMDSPLIT).append(ds.getHRS().getPPG())\r
.append(CMDSPLIT).append(ds.getHRS().getBPH())\r
.append(CMDSPLIT).append(ds.getHRS().getBPL())\r
.append(CMDSPLIT)\r
.append(CMDEND).toString());\r
}\r
- public static StringMessage APHP(int ppg,int bph, int bpl, int spo2){\r
+\r
+ public static StringMessage APHP(int ppg, int bph, int bpl, int spo2) {\r
//IWAPHP,60,130,85,95,90, , , , , , , , #\r
//IW:标识符\r
//APHT : 命令字符\r
//95:血氧\r
//90:血糖\r
// 本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空\r
- return genStringMessage(cmdMap.get(CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
+ return genStringMessage(cmdMap.get(CMD_TYPE.APHP), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP))\r
.append(CMDSPLIT).append(ppg)\r
.append(CMDSPLIT).append(bph)\r
.append(CMDSPLIT).append(bpl)\r
.append(CMDEND).toString());\r
}\r
\r
- public void handleBPHP(){\r
+ public void handleBPHP() {\r
\r
ICLogger.i("服务器收到APHP 心率血压血氧 !");\r
\r
public boolean handleCmd(CMD_TYPE type, String cmd) {\r
\r
//普通非二进制命令用此函数处理\r
- boolean ret=true;\r
- ICLogger.i("handleCmd "+type.name() + " strLen="+cmd.length());\r
- if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", " recv " + cmd);\r
- switch (type){\r
+ boolean ret = true;\r
+ ICLogger.i("handleCmd " + type.name() + " strLen=" + cmd.length());\r
+ if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + cmd);\r
+ switch (type) {\r
case BP00: //登录包\r
- handleBP00(mRuntime,cmd);\r
+ handleBP00(mRuntime, cmd);\r
ICLogger.i("服务器收到登录包AP00");\r
- mConnection.DeliverCMDMessageToSystem("login",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("login", cmd);//通知下面线程状态变化\r
break;\r
case BP01: //gps定位包\r
handleBP01(cmd);\r
ICLogger.i("服务器收到定位AP01");\r
- mConnection.DeliverCMDMessageToSystem("AP01",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("AP01", cmd);//通知下面线程状态变化\r
break;\r
case BP02:// wifi定位包\r
handleBP02(cmd);\r
ICLogger.i("服务器收到定位AP02");\r
- mConnection.DeliverCMDMessageToSystem("AP02",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("AP02", cmd);//通知下面线程状态变化\r
break;\r
case BP03: //心跳包\r
handleBP03(cmd);\r
ICLogger.i("服务器收到心跳包AP03");\r
- mConnection.DeliverCMDMessageToSystem("heartbeat",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("heartbeat", cmd);//通知下面线程状态变化\r
break;\r
\r
case BP07:\r
//收到发送的语音包\r
- handleBP07(cmd,mConnection);\r
+ handleBP07(cmd, mConnection);\r
break;\r
case BP10:\r
//报警包\r
- mConnection.DeliverCMDMessageToSystem("AP10",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("AP10", cmd);//通知下面线程状态变化\r
break;\r
\r
case BPTM:\r
//校时命令\r
handleBPTM(cmd);\r
ICLogger.i("服务器收到校时命令APTM");\r
- mConnection.DeliverCMDMessageToSystem("APTM",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("APTM", cmd);//通知下面线程状态变化\r
break;\r
case BP85://设置闹钟\r
- handleBP85(cmd,mConnection,mRuntime);\r
+ handleBP85(cmd, mConnection, mRuntime);\r
ICLogger.i("收到服务器设置闹钟命令BP85");\r
- mConnection.DeliverCMDMessageToSystem("AP85",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("AP85", cmd);//通知下面线程状态变化\r
break;\r
case BP33:\r
//设置工作模式\r
- handleBP33(mConnection,mRuntime,cmd);\r
- mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化\r
+ handleBP33(mConnection, mRuntime, cmd);\r
+ mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化\r
\r
break;\r
case BP34:\r
//设置工作模式\r
- handleBP34(mConnection,mRuntime,cmd);\r
- mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化\r
+ handleBP34(mConnection, mRuntime, cmd);\r
+ mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化\r
break;\r
case BP16:\r
//立即定位指令(长链接有效)\r
- handleBP16(mConnection,mRuntime,cmd);\r
- mConnection.DeliverCMDMessageToSystem("StartLocate",cmd);//通知下面线程状态变化\r
+ handleBP16(mConnection, mRuntime, cmd);\r
+ mConnection.DeliverCMDMessageToSystem("StartLocate", cmd);//通知下面线程状态变化\r
break;\r
\r
// case BP05: //L02服务器不适用\r
\r
case BP12:\r
//收到设置SOS号码\r
- handleBP12(mConnection,cmd,mRuntime);\r
+ handleBP12(mConnection, cmd, mRuntime);\r
ICLogger.i("收到服务器设置SOS号码命令BP12");\r
break;\r
case BP14:\r
//收到设置白名单号码\r
- handleBP14(mConnection,cmd,mRuntime);\r
+ handleBP14(mConnection, cmd, mRuntime);\r
ICLogger.i("收到服务器设置白名单号码命令BP14");\r
break;\r
case BP15:\r
- handleBP15(cmd,mConnection,mRuntime);\r
+ handleBP15(cmd, mConnection, mRuntime);\r
ICLogger.i("收到服务器设置定位命令BP15");\r
break;\r
case BP17:\r
//收到恢复出厂设置\r
- handleBP17(mConnection,cmd);\r
+ handleBP17(mConnection, cmd);\r
ICLogger.i("收到服务器恢复出厂设置命令BP17");\r
- mConnection.DeliverCMDMessageToSystem("FactoryReset",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("FactoryReset", cmd);//通知下面线程状态变化\r
break;\r
\r
case BP18:\r
//收到重启\r
- handleBP18(mConnection,cmd);\r
+ handleBP18(mConnection, cmd);\r
ICLogger.i("收到服务器重启命令BP18");\r
- mConnection.DeliverCMDMessageToSystem("Reboot",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("Reboot", cmd);//通知下面线程状态变化\r
break;\r
\r
case BP31:\r
//收到关机\r
- handleBP31(mConnection,cmd);\r
+ handleBP31(mConnection, cmd);\r
ICLogger.i("收到服务器关机命令BP31");\r
- mConnection.DeliverCMDMessageToSystem("poweroff",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("poweroff", cmd);//通知下面线程状态变化\r
break;\r
case BP40:\r
//服务器推送文本\r
- handleBP40(mConnection,mRuntime,cmd);\r
+ handleBP40(mConnection, mRuntime, cmd);\r
ICLogger.i("收到服务器推送文本消息");\r
- mConnection.DeliverCMDMessageToSystem("showTxt",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("showTxt", cmd);//通知下面线程状态变化\r
break;\r
\r
case BPXL:\r
- handleBPXL(cmd,mConnection);\r
+ handleBPXL(cmd, mConnection);\r
ICLogger.i("收到服务器心率检测命令");\r
- if(mRuntime.check_stat_do_ppg_test())\r
- HeartRateManager.triggerPPGtest();\r
+ if (mRuntime.check_stat_do_ppg_test())\r
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);\r
break;\r
case BPXY:\r
- handleBPXY(cmd,mConnection);\r
+ handleBPXY(cmd, mConnection);\r
ICLogger.i("收到服务器血压检测命令");\r
- if(mRuntime.check_stat_do_ppg_test())\r
- HeartRateManager.triggerPPGtest();\r
+ if (mRuntime.check_stat_do_ppg_test())\r
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);\r
break;\r
case BPJZ:\r
- handleBPJZ(cmd,mConnection,mRuntime);\r
+ handleBPJZ(cmd, mConnection, mRuntime);\r
ICLogger.i("收到服务器血压校准命令");\r
break;\r
case BPHT:\r
ICLogger.i("服务器收到上传的心率血压");\r
- mConnection.DeliverCMDMessageToSystem("APHT",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("APHT", cmd);//通知下面线程状态变化\r
break;\r
case BP84:\r
- handleBP84(cmd,mConnection);\r
+ handleBP84(cmd, mConnection);\r
ICLogger.i("收到服务器白名单命令");\r
break;\r
\r
case BP86:\r
//绑定解绑消息\r
- handleBP86(cmd,mConnection,mRuntime);\r
- mConnection.DeliverCMDMessageToSystem("AP86",cmd);//通知下面线程状态变化\r
+ handleBP86(cmd, mConnection, mRuntime);\r
+ mConnection.DeliverCMDMessageToSystem("AP86", cmd);//通知下面线程状态变化\r
\r
break;\r
\r
case BP88:\r
//收到查找设备消息\r
- handleBP88(cmd,mConnection);\r
- mConnection.DeliverCMDMessageToSystem("findDev",cmd);//通知下面线程状态变化\r
+ handleBP88(cmd, mConnection);\r
+ mConnection.DeliverCMDMessageToSystem("findDev", cmd);//通知下面线程状态变化\r
break;\r
case BP89:\r
//心率/血压阀值\r
- handleBP89(cmd,mConnection);\r
- mConnection.DeliverCMDMessageToSystem("AP89",cmd);//通知下面线程状态变化\r
+ handleBP89(cmd, mConnection);\r
+ mConnection.DeliverCMDMessageToSystem("AP89", cmd);//通知下面线程状态变化\r
break;\r
\r
case BPTE: //设置测试体温\r
- handleBPTE(cmd,mConnection,mRuntime);\r
- mConnection.DeliverCMDMessageToSystem("APTE",cmd);//通知下面线程状态变化\r
+ handleBPTE(cmd, mConnection, mRuntime);\r
+ mConnection.DeliverCMDMessageToSystem("APTE", cmd);//通知下面线程状态变化\r
break;\r
\r
case BPTP:\r
handleBPTP();\r
- mConnection.DeliverCMDMessageToSystem("APTP",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("APTP", cmd);//通知下面线程状态变化\r
break;\r
case BPHP:\r
handleBPHP();\r
- mConnection.DeliverCMDMessageToSystem("APHP",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("APHP", cmd);//通知下面线程状态变化\r
break;\r
case BPX1://设置 心率血压血氧修正值\r
- handleBPX1(cmd,mConnection,mRuntime);\r
+ handleBPX1(cmd, mConnection, mRuntime);\r
ICLogger.i("收到服务器设置 心率血压血氧修正值BPX1");\r
- mConnection.DeliverCMDMessageToSystem("APX1",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("APX1", cmd);//通知下面线程状态变化\r
break;\r
\r
case BPS4: //提醒设置(时间段) 主要为久坐设置提醒时长。\r
- handleBPS4(cmd,mConnection,mRuntime);\r
+ handleBPS4(cmd, mConnection, mRuntime);\r
ICLogger.i("收到 提醒设置(时间段)");\r
- mConnection.DeliverCMDMessageToSystem("APS4",cmd);//通知下面线程状态变化\r
+ mConnection.DeliverCMDMessageToSystem("APS4", cmd);//通知下面线程状态变化\r
break;\r
}\r
\r
public boolean handleCmd(CMD_TYPE type, String cmd, byte[] bytes) {\r
\r
//只有需要传递二级制数据的才需要这个函数,目前只有BP28需要\r
- boolean ret=true;\r
- ICLogger.i("handleCmd "+type.name() + " "+cmd+" bytelen="+bytes.length );\r
- if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " +new String(bytes));\r
+ boolean ret = true;\r
+ ICLogger.i("handleCmd " + type.name() + " " + cmd + " bytelen=" + bytes.length);\r
+ if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + new String(bytes));\r
switch (type) {\r
case BP28:\r
- handleBP28(mConnection,cmd, mRuntime,bytes);\r
+ handleBP28(mConnection, cmd, mRuntime, bytes);\r
ICLogger.i("收到服务器语音BP28");\r
mConnection.DeliverCMDMessageToSystem("BP28", "");//通知下面线程状态变化\r
break;\r
import android.content.ComponentName;
//import android.content.IClipboard;
import android.content.Intent;
-import android.net.Uri;
-import android.os.Environment;
//import com.android.internal.telephony.uicc.RuimFileHandler;
import com.enqualcomm.support.Config;
import com.enqualcomm.support.CoreService;
-import com.enqualcomm.support.bean.Alarm;
import com.enqualcomm.support.bean.Contact;
-import com.enqualcomm.support.bean.Content;
import com.enqualcomm.support.bean.HealthInfo;
-import com.enqualcomm.support.bean.ICLocation;
import com.enqualcomm.support.bean.Runtime;
import com.enqualcomm.support.bean.Silent;
import com.enqualcomm.support.bean.StringMessage;
-import com.enqualcomm.support.bean.VoiceContent;
-import com.enqualcomm.support.bean.voicePacket;
import com.enqualcomm.support.service.HeartRateManager;
import com.enqualcomm.support.utils.Connection;
-import com.enqualcomm.support.utils.DBHelper;
import com.enqualcomm.support.utils.ICLogger;
import com.enqualcomm.support.utils.MD5;
import com.enqualcomm.support.utils.TemperatureUtil;
import com.enqualcomm.support.utils.Util;
import com.enqualcomm.support.utils.regexUtil;
-import java.io.File;
import java.util.ArrayList;
-import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
-import chestnut.utils.PhoneUtils;
-
-import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;
+import static com.enqualcomm.support.Constants.FROM_SERVER;
import static com.enqualcomm.support.LocationClient.LOCATION_MODE;
-import static com.enqualcomm.support.bean.Contact.GROUP_ALL;
import static java.lang.Math.abs;
public class protocol_fzd {
private static final String TAG = "ICSrv." + protocol_fzd.class.getSimpleName();
private static final String PrivKEY = "XMQcHi0lGIdru6xzW7lygBwBT8N0c09P";
private static final String CMDHEADER = "[";
- private static final String CMDCOMPANY="IC";
+ private static final String CMDCOMPANY = "IC";
private static final String CMDEND = "]";
private static final String CMDHEADERSPLIT = "*";
private static final String CMDSPLIT = ",";
- public static final String defaultServerIP="api.xcloudtech.com";
- public static final int defaultServerPort=9000;
+ public static final String defaultServerIP = "api.xcloudtech.com";
+ public static final int defaultServerPort = 9000;
public enum CMD_TYPE {
/*终端发起*/
cmdMap.put(CMD_TYPE.PRACTICE, "PRACTICE");
}
- private Connection mConnection=null;
- private Runtime mRuntime=null;
+ private Connection mConnection = null;
+ private Runtime mRuntime = null;
public protocol_fzd(Connection connect, Runtime runtime) {
- mConnection=connect;
- mRuntime=runtime;
+ mConnection = connect;
+ mRuntime = runtime;
}
/**/
- public static StringMessage genStringMessage(String cmdName, String msg){
- StringMessage sm=new StringMessage(new String[]{cmdName,msg});
+ public static StringMessage genStringMessage(String cmdName, String msg) {
+ StringMessage sm = new StringMessage(new String[]{cmdName, msg});
sm.refresh(msg);
- sm.setDate(TimeUtil.getSystemDateYYMMDD(),TimeUtil.getSystemTimeHHmmss());
+ sm.setDate(TimeUtil.getSystemDateYYMMDD(), TimeUtil.getSystemTimeHHmmss());
return sm;
}
否则返回 空字符串
*/
public static String isCmdStr(String msg) {
- String cmd_msgbuf=msg;
- int cmdindex =cmd_msgbuf.indexOf(CMDCOMPANY+CMDHEADERSPLIT);
- if (cmdindex>0) { //如果开头不是CMDHEADER但是包含CMDHEADER则删除前面的数据
- String cmd=cmd_msgbuf.substring(cmdindex);
- cmd_msgbuf=cmd;
+ String cmd_msgbuf = msg;
+ int cmdindex = cmd_msgbuf.indexOf(CMDCOMPANY + CMDHEADERSPLIT);
+ if (cmdindex > 0) { //如果开头不是CMDHEADER但是包含CMDHEADER则删除前面的数据
+ String cmd = cmd_msgbuf.substring(cmdindex);
+ cmd_msgbuf = cmd;
}
- cmdindex=cmd_msgbuf.indexOf(CMDEND);
- if(cmdindex>0){
- String cmd=cmd_msgbuf.substring(0,cmdindex);
- cmd_msgbuf=cmd;
+ cmdindex = cmd_msgbuf.indexOf(CMDEND);
+ if (cmdindex > 0) {
+ String cmd = cmd_msgbuf.substring(0, cmdindex);
+ cmd_msgbuf = cmd;
}
- cmdindex=cmd_msgbuf.indexOf(CMDSPLIT);
- if(cmdindex>0){
- String cmd=cmd_msgbuf.substring(0,cmdindex);
- cmd_msgbuf=cmd;
+ cmdindex = cmd_msgbuf.indexOf(CMDSPLIT);
+ if (cmdindex > 0) {
+ String cmd = cmd_msgbuf.substring(0, cmdindex);
+ cmd_msgbuf = cmd;
}
if (regexUtil.isFZDCMD(cmd_msgbuf)) {
}
}
return "";
- }else
+ } else
return "";
}
+
/*
返回true 表示 cmd 全部解析成功
返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用
每个字符串如果发现 #,却又没有Header,“IW”则会被丢弃
*/
public boolean parserCmd(byte[] bytes) {
- String cmd_msgbuf=new String(bytes);
- log("bytes.size "+bytes.length);
+ String cmd_msgbuf = new String(bytes);
+ log("bytes.size " + bytes.length);
cmdbuf.append(cmd_msgbuf);
- log("cmdbuf.size "+cmdbuf.length() +" "+cmdbuf.toString());
- int cmdindex =cmd_msgbuf.indexOf(CMDCOMPANY+CMDHEADERSPLIT);
- if (cmdindex>0) { //如果开头不是CMDHEADER但是包含CMDHEADER则删除前面的数据
- String cmd=cmd_msgbuf.substring(cmdindex);
- cmd_msgbuf=cmd;
+ log("cmdbuf.size " + cmdbuf.length() + " " + cmdbuf.toString());
+ int cmdindex = cmd_msgbuf.indexOf(CMDCOMPANY + CMDHEADERSPLIT);
+ if (cmdindex > 0) { //如果开头不是CMDHEADER但是包含CMDHEADER则删除前面的数据
+ String cmd = cmd_msgbuf.substring(cmdindex);
+ cmd_msgbuf = cmd;
}
- cmdindex=cmd_msgbuf.indexOf(CMDEND);
- if(cmdindex>0){
- String cmd=cmd_msgbuf.substring(0,cmdindex);
- cmd_msgbuf=cmd;
+ cmdindex = cmd_msgbuf.indexOf(CMDEND);
+ if (cmdindex > 0) {
+ String cmd = cmd_msgbuf.substring(0, cmdindex);
+ cmd_msgbuf = cmd;
}
- cmdindex=cmd_msgbuf.indexOf(CMDSPLIT);
- if(cmdindex>0){
- String cmd=cmd_msgbuf.substring(0,cmdindex);
- cmd_msgbuf=cmd;
+ cmdindex = cmd_msgbuf.indexOf(CMDSPLIT);
+ if (cmdindex > 0) {
+ String cmd = cmd_msgbuf.substring(0, cmdindex);
+ cmd_msgbuf = cmd;
}
- if (cmdbuf.toString().split(CMDCOMPANY+CMDHEADERSPLIT).length>1)
- {
+ if (cmdbuf.toString().split(CMDCOMPANY + CMDHEADERSPLIT).length > 1) {
ICLogger.i("More than 1 cmd in buffer ! just log it");
}
- for (CMD_TYPE key : cmdMap.keySet()) {
- // ICLogger.i("key "+cmdMap.get(key)+" cmdbuf "+cmd_msgbuf);
- if (regexUtil.isFZDCMD(cmdMap.get(key),cmd_msgbuf)) { //如果是FZD命令,则进行处理,否则保留数据动
- String data=cmdbuf.toString().replace(CMDHEADER,"").replace(cmd_msgbuf,"").replace(CMDEND,"");
+ for (CMD_TYPE key : cmdMap.keySet()) {
+ // ICLogger.i("key "+cmdMap.get(key)+" cmdbuf "+cmd_msgbuf);
+ if (regexUtil.isFZDCMD(cmdMap.get(key), cmd_msgbuf)) { //如果是FZD命令,则进行处理,否则保留数据动
+ String data = cmdbuf.toString().replace(CMDHEADER, "").replace(cmd_msgbuf, "").replace(CMDEND, "");
// ICLogger.i("found cmd keyid=" + key + " ,keyname=" + cmdMap.get(key) + " , " + cmdbuf.toString() + " "+cmd_msgbuf + " data "+data );
// if (key == CMD_TYPE.TK) {
// //如果是BP28则 后面的数据是音频,需要保留
// handleCmd(key, cmdlist[i], bytes);
// }
// } else {
- if (data.startsWith(CMDSPLIT)) data=data.substring(1);
- handleCmd(key, cmd_msgbuf,data);
- cmdbuf.delete(0,cmdbuf.length());//处理后清空
+ if (data.startsWith(CMDSPLIT)) data = data.substring(1);
+ handleCmd(key, cmd_msgbuf, data);
+ cmdbuf.delete(0, cmdbuf.length());//处理后清空
// }
- }
}
+ }
return true;
}
- private static String getHexLen(int len){
- StringBuilder sb=new StringBuilder();
+ private static String getHexLen(int len) {
+ StringBuilder sb = new StringBuilder();
int v = len & 0xFFFF;
String hv = Integer.toHexString(v);
- if (hv.length() ==1 ) {
+ if (hv.length() == 1) {
sb.append(0).append(0).append(0);
- }else if (hv.length()==2){
+ } else if (hv.length() == 2) {
sb.append(0).append(0);
- }else if (hv.length()==3){
+ } else if (hv.length() == 3) {
sb.append(0);
}
sb.append(hv);
return sb.toString();
}
- private static String genHeader(int len,String cmd){
- if (CoreService.getInstance()==null)
+ private static String genHeader(int len, String cmd) {
+
+ if (CoreService.getInstance() == null)
return "";
- String imei =CoreService.getInstance().getRuntime().IMEI();
+ String imei = CoreService.getInstance().getRuntime().IMEI();
return new StringBuilder().append(CMDCOMPANY).append(CMDHEADERSPLIT)
.append(imei).append(CMDHEADERSPLIT)
.append(getHexLen(len)).append(CMDHEADERSPLIT).append(cmd).toString();
}
- private static String keyheader(String cmd,int len){
- String header=genHeader(len,cmd);
- String key= MD5.getCMDStringMD5(header+PrivKEY);
+ private static String keyheader(String cmd, int len) {
+ String header = genHeader(len, cmd);
+ String key = MD5.getCMDStringMD5(header + PrivKEY);
return key;
}
- public static StringMessage genFZDCMD( String CMD){
- StringBuilder sb=new StringBuilder();
- int len=CMD.length();
- String header=genHeader(len,CMD);
- String keyheader=keyheader(CMD,len);
+ public static StringMessage genFZDCMD(String CMD) {
+ StringBuilder sb = new StringBuilder();
+ int len = CMD.length();
+ String header = genHeader(len, CMD);
+ String keyheader = keyheader(CMD, len);
sb.append(CMDHEADER).append(keyheader).append(header).append(CMDEND);
- return genStringMessage(CMD,sb.toString());
+ return genStringMessage(CMD, sb.toString());
}
- public static StringMessage genFZDCMD( String CMD,String data){
- StringBuilder sb=new StringBuilder();
- String data_buf=CMD+CMDSPLIT+data;
- int data_buf_len=data_buf.length();
- String header=genHeader(data_buf_len,CMD);
- String keyheader=keyheader(CMD,data_buf_len);//计算header md5值
+
+ public static StringMessage genFZDCMD(String CMD, String data) {
+ StringBuilder sb = new StringBuilder();
+ String data_buf = CMD + CMDSPLIT + data;
+ int data_buf_len = data_buf.length();
+ String header = genHeader(data_buf_len, CMD);
+ String keyheader = keyheader(CMD, data_buf_len);//计算header md5值
sb.append(CMDHEADER).append(keyheader).append(header).append(CMDSPLIT).append(data).append(CMDEND);
- return genStringMessage(CMD,sb.toString());
+ return genStringMessage(CMD, sb.toString());
}
+
/*登录*/
public static StringMessage LK() {
/*IC*YYYYYYYYYYYYYYY*LEN*LK*/
/**
* 绑定
- * */
- public static StringMessage PING(){
+ */
+ public static StringMessage PING() {
// IC*YYYYYYYYYYYYYYY*LEN*PING
return genFZDCMD(cmdMap.get(CMD_TYPE.PING));
}
- public static void handlePing(Runtime runtime,String data){
+ public static void handlePing(Runtime runtime, String data) {
// [IC*YYYYYYYYYYYYYYY*LEN*PING,是否绑定(0 表示未绑定,1 表示绑定)]
// 实例:[IC*334588000000156*0006*PING,0]或[IC*334588000000156*0006*PING,1]
try {
ICLogger.i("设备已绑定!");
runtime.BindingStatus = true;
}
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
}
- public static StringMessage KA(Runtime runtime){
+ public static StringMessage KA(Runtime runtime) {
//[IC*YYYYYYYYYYYYYYY*LEN*KA,日期,步数,翻滚次数,电量百分数] 实例:[IC*334588000000156*0014*KA,120414,50,100,100]
- StringBuilder sb=new StringBuilder();
- String cmd=cmdMap.get(CMD_TYPE.KA);
+ StringBuilder sb = new StringBuilder();
+ String cmd = cmdMap.get(CMD_TYPE.KA);
sb.append(TimeUtil.getSystemDateYYMMDD()).append(CMDSPLIT)
- .append(runtime.getTotalStepCount()).append(CMDSPLIT)
- .append(runtime.getRolltimes()).append(CMDSPLIT)
- .append(runtime.getBattery());
- return genFZDCMD(cmd,sb.toString());
+ .append(runtime.getTotalStepCount()).append(CMDSPLIT)
+ .append(runtime.getRolltimes()).append(CMDSPLIT)
+ .append(runtime.getBattery());
+ return genFZDCMD(cmd, sb.toString());
}
- public void handleKA(Runtime runtime,String data){
+ public void handleKA(Runtime runtime, String data) {
}
- public static StringMessage CENTER(Runtime runtime){
+
+ public static StringMessage CENTER(Runtime runtime) {
return genFZDCMD(cmdMap.get(CMD_TYPE.CENTER));
}
- public void handleCENTER(Connection connection,Runtime runtime,String cmd,String data){
- connection.send(CENTER(runtime));
+ public void handleCENTER(Connection connection, Runtime runtime, String cmd, String data) {
+ connection.send(CENTER(runtime));
}
-
-
- public static StringMessage SILENCETIME2(Runtime runtime){
+ public static StringMessage SILENCETIME2(Runtime runtime) {
return genFZDCMD(cmdMap.get(CMD_TYPE.SILENCETIME2));
}
- public void handleSILENCETIME2(Connection connection,Runtime runtime,String cmd,String data){
+ public void handleSILENCETIME2(Connection connection, Runtime runtime, String cmd, String data) {
/**
* 上课禁用时间段设置 2
*size 60 [IC*860314001000466*0022*SILENCETIME2,10:03-16:00-1-0111110]
* 关于自定义星期几的规则:最左边是周日,最右边是周六,即 0111110 的顺序是:周日,周一,周二,周三,周四,周五,周六(1 为打开,0 为关闭),所以上面的意思是周一至周五打开上课禁用。
*/
connection.send(SILENCETIME2(runtime));
- String[] silent_items=data.split(",");
- ArrayList<Silent> slist=new ArrayList<>();
- if (silent_items.length>0){
- for(String si:silent_items){
- String[] sl=si.split("-");
- if(sl.length==4)
- {
- String start,end,status;
- start="ST"+sl[0];
- end="ST"+sl[1];
- status=sl[2].equals("1")?"ON":"OFF";
- char[] week=sl[3].toCharArray();
- StringBuilder week_sb=new StringBuilder();
- for (int i=0;i<week.length;i++){
- if(week[i]=='1'){
- week_sb.append(i+1);
- }
- }
- Silent silent=new Silent(start,end, week_sb.toString(),status);
- slist.add(silent);
- ICLogger.i("set silence "+start +" " + end + " "+ week_sb.toString()+ " "+status);
- }else{
- ICLogger.i("免打扰时间格式错误,skip");
- }
+ String[] silent_items = data.split(",");
+ ArrayList<Silent> slist = new ArrayList<>();
+ if (silent_items.length > 0) {
+ for (String si : silent_items) {
+ String[] sl = si.split("-");
+ if (sl.length == 4) {
+ String start, end, status;
+ start = "ST" + sl[0];
+ end = "ST" + sl[1];
+ status = sl[2].equals("1") ? "ON" : "OFF";
+ char[] week = sl[3].toCharArray();
+ StringBuilder week_sb = new StringBuilder();
+ for (int i = 0; i < week.length; i++) {
+ if (week[i] == '1') {
+ week_sb.append(i + 1);
+ }
+ }
+ Silent silent = new Silent(start, end, week_sb.toString(), status);
+ slist.add(silent);
+ ICLogger.i("set silence " + start + " " + end + " " + week_sb.toString() + " " + status);
+ } else {
+ ICLogger.i("免打扰时间格式错误,skip");
+ }
}
}
runtime.getDbHelper().saveSilent(slist);
}
+
public static StringMessage LGZONE(Runtime runtime) {
- return genFZDCMD(cmdMap.get(CMD_TYPE.LGZONE));
+ return genFZDCMD(cmdMap.get(CMD_TYPE.LGZONE));
}
- public void handleLGZONE(Runtime runtime, String data){
+
+ public void handleLGZONE(Runtime runtime, String data) {
/***
* 平台回复:[XT*YYYYYYYYYYYYYYY*LEN*LGZONE,时区,时间,日期]
* 实例: [XT*1234567890*001D*LGZONE,+8,08:00:00,2016-01-12]
*/
- String[] list=data.split(CMDSPLIT);
- if (list.length==3){
- String timeZone=list[0].trim();
- String date=list[2].trim();
- String time=list[1].trim();
- Date datetime= TimeUtil.parseDatetiime(date,time);
+ String[] list = data.split(CMDSPLIT);
+ if (list.length == 3) {
+ String timeZone = list[0].trim();
+ String date = list[2].trim();
+ String time = list[1].trim();
+ Date datetime = TimeUtil.parseDatetiime(date, time);
int timezone;
- try
- {
- timezone=Integer.parseInt(timeZone.replace("+","").trim());
- }catch (Exception e){
- ICLogger.e("timezone",e);
- timezone=8;
+ try {
+ timezone = Integer.parseInt(timeZone.replace("+", "").trim());
+ } catch (Exception e) {
+ ICLogger.e("timezone", e);
+ timezone = 8;
}
- if (datetime!=null){
- ICLogger.i("==="+timezone+" "+TimeUtil.getDefaultTimeZone());
+ if (datetime != null) {
+ ICLogger.i("===" + timezone + " " + TimeUtil.getDefaultTimeZone());
TimeUtil.setTimeZone(timezone);
- ICLogger.i("==="+TimeUtil.getDefaultTimeZone());
- TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone,false);
- ICLogger.i("==="+TimeUtil.getDefaultTimeZone());
+ ICLogger.i("===" + TimeUtil.getDefaultTimeZone());
+ TimeUtil.setSysDateTime(runtime.getContextProxy().context, datetime, timezone, false);
+ ICLogger.i("===" + TimeUtil.getDefaultTimeZone());
}
// Set Datetime 20200505112734
// Set TimeZone 8
- }else{
+ } else {
ICLogger.i("LGZONE Format Error!");
}
*/
- StringBuilder sb=new StringBuilder();
- String cmd=cmdMap.get(CMD_TYPE.UD);
+ StringBuilder sb = new StringBuilder();
+ String cmd = cmdMap.get(CMD_TYPE.UD);
sb.append(TimeUtil.getSystemDateYYMMDD()).append(CMDSPLIT)
.append(TimeUtil.getSystemTimeHHmmss()).append(CMDSPLIT)
.append(runtime.getFZDGPSData()).append(CMDSPLIT)
- .append(String.format("%03d",abs(runtime.getSignalStrength()))).append(CMDSPLIT)
+ .append(String.format("%03d", abs(runtime.getSignalStrength()))).append(CMDSPLIT)
.append(runtime.getBattery()).append(CMDSPLIT)
.append(runtime.getTotalStepCount()).append(CMDSPLIT)
.append(runtime.getRolltimes()).append(CMDSPLIT)
.append(runtime.getFZDLBSMultiStationData()).append(CMDSPLIT)
.append(runtime.getFZDWifiData());
- return genFZDCMD(cmd,sb.toString());
+ return genFZDCMD(cmd, sb.toString());
}
// 4: 表示WIFI组数,
// 1|D8-24-BD-79-FA-1F|59: ssid|mac地址|信号强度,信号强度转正数:150 – abs(信号强度)
- int apsum=0;
- String wifiinfo=ds.getWifiInfo();
+ int apsum = 0;
+ String wifiinfo = ds.getWifiInfo();
if (!wifiinfo.isEmpty()) {
String[] list = wifiinfo.split("&");
apsum = list.length;
}
- ICLogger.i("Wifi ap sum "+apsum);
+ ICLogger.i("Wifi ap sum " + apsum);
return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.LK)).append(CMDSPLIT)
.append(ds.getLanguage()).append(CMDSPLIT)
.append(0).append(CMDSPLIT) //为0时不回复地址
}
//处理 定位 BP01
- public void handleUD2(String cmd){
+ public void handleUD2(String cmd) {
log("BP02定位接收成功");
}
- public static StringMessage AL(Runtime runtime){
+ public static StringMessage AL(Runtime runtime) {
/***
* [IC*334588000000156*00CD*AL,180916,064153,A,22.570512,N,113.8623267,E,0.00,154.8,0.0,11,10 0,100,0,0,00100018,7,0,460,1,9529,21809,155,9529,21242,132,9529,21405,131,9529,63554,131,9
* 529,63555,130,9529,63556,118,9529,21869,116,0,12.4]
* 说明:终端产生警情后发送报警信息到平台,若终端没有收到回复,则定时上报直到收到报警确认为止.
*/
- StringBuilder sb=new StringBuilder();
- String cmd=cmdMap.get(CMD_TYPE.AL);
+ StringBuilder sb = new StringBuilder();
+ String cmd = cmdMap.get(CMD_TYPE.AL);
sb.append(TimeUtil.getSystemDateYYMMDD()).append(CMDSPLIT)
.append(TimeUtil.getSystemTimeHHmmss()).append(CMDSPLIT)
.append(runtime.getFZDGPSData()).append(CMDSPLIT)
- .append(String.format("%03d",abs(runtime.getSignalStrength()))).append(CMDSPLIT)
+ .append(String.format("%03d", abs(runtime.getSignalStrength()))).append(CMDSPLIT)
.append(runtime.getBattery()).append(CMDSPLIT)
.append(runtime.getTotalStepCount()).append(CMDSPLIT)
.append(runtime.getRolltimes()).append(CMDSPLIT)
.append(runtime.getFZDLBSMultiStationData()).append(CMDSPLIT)
.append(runtime.getFZDWifiData());
- return genFZDCMD(cmd,sb.toString());
+ return genFZDCMD(cmd, sb.toString());
}
- public static StringMessage UPLOAD(){
+ public static StringMessage UPLOAD() {
- return genFZDCMD(cmdMap.get(CMD_TYPE.UPLOAD));
+ return genFZDCMD(cmdMap.get(CMD_TYPE.UPLOAD));
}
- public void handleUPLOAD(Connection connection,Runtime runtime,String cmd,String data){
- connection.send(UPLOAD());
+ public void handleUPLOAD(Connection connection, Runtime runtime, String cmd, String data) {
+ connection.send(UPLOAD());
try {
int timesecond = Integer.parseInt(data);
int mod = runtime.getLocationInstance().getWorkingMod();
runtime.getLocationInstance().setWorkingMod(mod);
// CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod());
//此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
}
- public static StringMessage heart(int hrt){
- return genFZDCMD(cmdMap.get(CMD_TYPE.heart),String.valueOf(hrt));
+ public static StringMessage heart(int hrt) {
+ return genFZDCMD(cmdMap.get(CMD_TYPE.heart), String.valueOf(hrt));
}
- public static StringMessage oxygen(int ox){
- return genFZDCMD(cmdMap.get(CMD_TYPE.oxygen),String.valueOf(ox));
+
+ public static StringMessage oxygen(int ox) {
+ return genFZDCMD(cmdMap.get(CMD_TYPE.oxygen), String.valueOf(ox));
}
- public static StringMessage blood(int pbl,int pbh){
- String data=pbh+CMDSPLIT+pbl;
- return genFZDCMD(cmdMap.get(CMD_TYPE.blood),data);
+ public static StringMessage blood(int pbl, int pbh) {
+ String data = pbh + CMDSPLIT + pbl;
+ return genFZDCMD(cmdMap.get(CMD_TYPE.blood), data);
}
- public static StringMessage temp(double temp){
- return genFZDCMD(cmdMap.get(CMD_TYPE.temp),String.format("%.1f",temp));
+ public static StringMessage temp(double temp) {
+ return genFZDCMD(cmdMap.get(CMD_TYPE.temp), String.format("%.1f", temp));
}
- public static StringMessage POWEROFF(){
+
+ public static StringMessage POWEROFF() {
return genFZDCMD(cmdMap.get(CMD_TYPE.POWEROFF));
}
+
public void handlePOWEROFF(Connection connection) {
connection.send(POWEROFF());
}
- public static StringMessage CR(){
+
+ public static StringMessage CR() {
return genFZDCMD(cmdMap.get(CMD_TYPE.CR));
}
+
public void handleCR(Connection connection) {
connection.send(CR());
}
- public static StringMessage bldstart(){
+
+ public static StringMessage bldstart() {
return genFZDCMD(cmdMap.get(CMD_TYPE.bldstart));
}
+
public void handleBldstart(Connection connection) {
connection.send(bldstart());
}
- public static StringMessage wdstart(){
+
+ public static StringMessage wdstart() {
return genFZDCMD(cmdMap.get(CMD_TYPE.wdstart));
}
- public void handleWdstart(Connection connection,Runtime runtime ,String data) {
+
+ public void handleWdstart(Connection connection, Runtime runtime, String data) {
connection.send(wdstart());
try {
Config.setTemperatureTestCycle(runtime, freq);
CoreService.getInstance().setTempAlarm();
- if(runtime.check_stat_do_temp_test()) TemperatureUtil.doTempTestInThread();
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ if (runtime.check_stat_do_temp_test())
+ TemperatureUtil.getInstance().doTempTestInThread(FROM_SERVER);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
//
// double wrist_temp,body_temp;
// String temperatureMsg=temp(body_temp);
// connection.send(genStringMessage("temp",temperatureMsg));
}
- public static StringMessage hrtstart(){
+
+ public static StringMessage hrtstart() {
return genFZDCMD(cmdMap.get(CMD_TYPE.hrtstart));
}
+
public void handleHrtstart(Connection connection) {
connection.send(hrtstart());
}
- public static StringMessage FIND(){
+
+ public static StringMessage FIND() {
return genFZDCMD(cmdMap.get(CMD_TYPE.FIND));
}
+
public void handleFIND(Connection connection) {
connection.send(FIND());
}
- public static StringMessage SOS(){
+
+ public static StringMessage SOS() {
return genFZDCMD(cmdMap.get(CMD_TYPE.SOS));
}
- public void handleSOS(Connection connection,Runtime runtime,String cmd,String data) {
+ public void handleSOS(Connection connection, Runtime runtime, String cmd, String data) {
connection.send(SOS());
- if (data!=null && data.length()>0) {
+ if (data != null && data.length() > 0) {
String list[] = data.split(CMDSPLIT);
- if (list.length==1){
- ArrayList<Contact> contactArray=new ArrayList<Contact>();
- if (regexUtil.isMobileNumber( list[0]) || regexUtil.isPhoneNumber(list[0]))
- {
- contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",list[0]));
- ICLogger.i("find SOS1 number "+list[0]);
- }
- }else if (list.length==2){
-
- ArrayList<Contact> contactArray=new ArrayList<Contact>();
- if (regexUtil.isMobileNumber( list[0]) || regexUtil.isPhoneNumber(list[0]))
- {
- contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",list[0]));
- ICLogger.i("find SOS1 number "+list[0]);
+ if (list.length == 1) {
+ ArrayList<Contact> contactArray = new ArrayList<Contact>();
+ if (regexUtil.isMobileNumber(list[0]) || regexUtil.isPhoneNumber(list[0])) {
+ contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", list[0]));
+ ICLogger.i("find SOS1 number " + list[0]);
+ }
+ } else if (list.length == 2) {
+
+ ArrayList<Contact> contactArray = new ArrayList<Contact>();
+ if (regexUtil.isMobileNumber(list[0]) || regexUtil.isPhoneNumber(list[0])) {
+ contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", list[0]));
+ ICLogger.i("find SOS1 number " + list[0]);
}
- if (regexUtil.isMobileNumber( list[1]) || regexUtil.isPhoneNumber(list[1]))
- {
- contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos2",list[1]));
- ICLogger.i("find SOS2 number "+list[1]);
+ if (regexUtil.isMobileNumber(list[1]) || regexUtil.isPhoneNumber(list[1])) {
+ contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", list[1]));
+ ICLogger.i("find SOS2 number " + list[1]);
}
- runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true);
+ runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true);
}
}
}
- public static StringMessage PHL(){
+
+ public static StringMessage PHL() {
return genFZDCMD(cmdMap.get(CMD_TYPE.PHL));
}
- public void handlePHL(Connection connection,Runtime runtime,String cmd,String data){
+ public void handlePHL(Connection connection, Runtime runtime, String cmd, String data) {
/***
* [IC*334588000000156*len*PHL,号码,名字,号码,名字,号码,名字,号码,名字,号码,名字] len:发送长度 16 进制表示 占用 2 个字节
* 号码:ascii 字符 名字:Unicode 编码
* 终端回复:[IC*334588000000156*0003*PHL]
*/
- String list[]=data.split(CMDSPLIT);
- int listlen=list.length;
- boolean ispared= (( listlen >=0) && (listlen%2 == 0));
- if (ispared){
- ArrayList<Contact> contactArray=new ArrayList<Contact>();
- for(int i=0; i<listlen;i+=2){
- String phonem=list[i];
- String name = Util.decodeUnicode2Utf8(list[i+1]);
- ICLogger.i(i/2 +" 姓名 "+name+", 电话 "+phonem);
- contactArray.add(new Contact(Contact.CATEGORY_CALL,name,phonem));
- }
+ String list[] = data.split(CMDSPLIT);
+ int listlen = list.length;
+ boolean ispared = ((listlen >= 0) && (listlen % 2 == 0));
+ if (ispared) {
+ ArrayList<Contact> contactArray = new ArrayList<Contact>();
+ for (int i = 0; i < listlen; i += 2) {
+ String phonem = list[i];
+ String name = Util.decodeUnicode2Utf8(list[i + 1]);
+ ICLogger.i(i / 2 + " 姓名 " + name + ", 电话 " + phonem);
+ contactArray.add(new Contact(Contact.CATEGORY_CALL, name, phonem));
+ }
// contactArray.add(new Contact(Contact.CATEGORY_GROUP,"All","666"));
// contactArray.add(new Contact(Contact.CATEGORY_PARTNER,"PARTNER","666"));
// contactArray.add(new Contact(Contact.CATEGORY_CARE,"CARE","666"));
// contactArray.add(new Contact(Contact.CATEGORY_VOLTE,"VOLTE","666"));
- runtime.getDbHelper().saveContacts(contactArray,false,false,true,false,false,false);
- }else{
- ICLogger.i("没有电话本!执行清除操作!");
- }
- connection.send(PHL());
+ runtime.getDbHelper().saveContacts(contactArray, false, false, true, false, false, false);
+ } else {
+ ICLogger.i("没有电话本!执行清除操作!");
+ }
+ connection.send(PHL());
}
public void sendBroadcast(String cmd, Runtime dev) {
dev.getContextProxy().context.startActivity(intent);
}
- public static StringMessage PRACTICE(HealthInfo healthInfo){
- if (healthInfo!=null && healthInfo.getInfoCount()>0)
- return genFZDCMD(cmdMap.get(CMD_TYPE.PRACTICE),String.valueOf(healthInfo.getBufferDataStr()));
+ public static StringMessage PRACTICE(HealthInfo healthInfo) {
+ if (healthInfo != null && healthInfo.getInfoCount() > 0)
+ return genFZDCMD(cmdMap.get(CMD_TYPE.PRACTICE), String.valueOf(healthInfo.getBufferDataStr()));
else
return null;
}
- public boolean handleCmd(CMD_TYPE type, String cmd , String data) {
+ public boolean handleCmd(CMD_TYPE type, String cmd, String data) {
//普通非二进制命令用此函数处理
- boolean ret=true;
- ICLogger.i("handleCmd "+type.name() + " strLen="+data.length());
- if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", " recv " + cmd +" "+ data);
- switch (type){
+ boolean ret = true;
+ ICLogger.i("handleCmd " + type.name() + " strLen=" + data.length());
+ if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + cmd + " " + data);
+ switch (type) {
case LK: //登录包
ICLogger.i("服务器收到登录包LK");
- mConnection.DeliverCMDMessageToSystem("login",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("login", cmd);//通知下面线程状态变化
break;
case KA:
ICLogger.i("服务器收到心跳包KA");
- mConnection.DeliverCMDMessageToSystem("heartbeat",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("heartbeat", cmd);//通知下面线程状态变化
break;
case AL:
- mConnection.DeliverCMDMessageToSystem("AL",cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("AL", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
break;
case PRACTICE:
- mConnection.DeliverCMDMessageToSystem("PRACTICE",cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("PRACTICE", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
break;
case PING:
- handlePing(mRuntime,data);
+ handlePing(mRuntime, data);
ICLogger.i("服务器返回Ping绑定信息");
break;
case CR:
//立即定位指令(长链接有效)
handleCR(mConnection);
- mConnection.DeliverCMDMessageToSystem("StartLocate",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("StartLocate", cmd);//通知下面线程状态变化
break;
// case BP07:
// break;
case UPLOAD:
//设置工作模式
- handleUPLOAD(mConnection,mRuntime,cmd,data);
- mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化
+ handleUPLOAD(mConnection, mRuntime, cmd, data);
+ mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化
//
// break;
// case BP34:
//
case SOS:
//收到设置SOS号码
- handleSOS(mConnection,mRuntime,cmd,data);
+ handleSOS(mConnection, mRuntime, cmd, data);
ICLogger.i("收到服务器设置SOS号码命令SOS");
break;
case PHL:
//收到设置白名单号码
ICLogger.i("收到服务器设置白名单号码命令PHL");
- handlePHL(mConnection,mRuntime,cmd,data);
+ handlePHL(mConnection, mRuntime, cmd, data);
break;
// case BP15:
// handleBP15(cmd,mConnection,mRuntime);
//收到关机
handlePOWEROFF(mConnection);
ICLogger.i("收到服务器关机命令BP31");
- mConnection.DeliverCMDMessageToSystem("poweroff",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("poweroff", cmd);//通知下面线程状态变化
break;
// case BP40:
// //服务器推送文本
case hrtstart:
handleHrtstart(mConnection);
ICLogger.i("收到服务器心率检测命令");
- if(mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest();
+ if (mRuntime.check_stat_do_ppg_test())
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
break;
case bldstart:
handleBldstart(mConnection);
ICLogger.i("收到服务器血压检测命令");
- if(mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest();
+ if (mRuntime.check_stat_do_ppg_test())
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
break;
case wdstart:
- handleWdstart(mConnection,mRuntime,data);
+ handleWdstart(mConnection, mRuntime, data);
ICLogger.i("收到服务器体温测试及设置命令");
break;
case blood:
ICLogger.i("服务器收到上传的血压");
- mConnection.DeliverCMDMessageToSystem("blood",cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("blood", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
break;
case oxygen:
ICLogger.i("服务器收到上传的血氧");
- mConnection.DeliverCMDMessageToSystem("oxygen",cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("oxygen", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
break;
case temp:
ICLogger.i("服务器收到上传的体温");
- mConnection.DeliverCMDMessageToSystem("temp",cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("temp", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
break;
case heart:
ICLogger.i("服务器收到上传的心率heart");
- mConnection.DeliverCMDMessageToSystem("heart",cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("heart", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
break;
case LGZONE:
- ICLogger.i("收到服务器时间 LGZONE "+data);
- handleLGZONE(mRuntime,data);
+ ICLogger.i("收到服务器时间 LGZONE " + data);
+ handleLGZONE(mRuntime, data);
break;
case CENTER:
- handleCENTER(mConnection,mRuntime,cmd,data);
+ handleCENTER(mConnection, mRuntime, cmd, data);
break;
case SILENCETIME2:
- handleSILENCETIME2(mConnection,mRuntime,cmd,data);
+ handleSILENCETIME2(mConnection, mRuntime, cmd, data);
break;
case FIND:
//收到查找设备消息
handleFIND(mConnection);
- mConnection.DeliverCMDMessageToSystem("findDev",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("findDev", cmd);//通知下面线程状态变化
break;
// case BP89:
// //心率/血压阀值
//只有需要传递二级制数据的才需要这个函数,目前只有BP28需要
- boolean ret=true;
- ICLogger.i("handleCmd "+type.name() + " "+cmd+" bytelen="+bytes.length );
- if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " +new String(bytes));
+ boolean ret = true;
+ ICLogger.i("handleCmd " + type.name() + " " + cmd + " bytelen=" + bytes.length);
+ if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + new String(bytes));
switch (type) {
case LK:
- // handleBP28(mConnection,cmd, mRuntime,bytes);
+ // handleBP28(mConnection,cmd, mRuntime,bytes);
ICLogger.i("收到服务器语音BP28");
mConnection.DeliverCMDMessageToSystem("BP28", "");//通知下面线程状态变化
break;
import static android.content.Intent.FLAG_INCLUDE_STOPPED_PACKAGES;
import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;
import static com.enqualcomm.support.Constants.DIALOG_ACTION;
+import static com.enqualcomm.support.Constants.FROM_SERVER;
import static com.enqualcomm.support.LocationClient.LOCATION_MODE;
import static com.enqualcomm.support.bean.Contact.GROUP_ALL;
import static java.lang.Math.abs;
String[] cmdlist = cmd_msgbuf.split(CMDEND);
int listlen = cmdlist.length;
log("listlen " + listlen);
- /*
- 如果解析出来的cmdlist不是空,且数据不是完整cmd则保留 最后一条数据到last_inCompletecmd
+ /**
+ * 如果解析出来的cmdlist不是空,且数据不是完整cmd则保留 最后一条数据到last_inCompletecmd
*/
if (cmdlist.length > 0 && iscmdComplete == false) {
listlen -= 1;
if (cmdlist.length == 4) {
- log("work mode " + cmdlist[3]);
+ log("com.ic.work mode " + cmdlist[3]);
try {
int mod = Integer.parseInt(cmdlist[3]);
int Cycle = 900;
if (cmdlist.length == 6) {
- log("work mode " + cmdlist[3]);
+ log("com.ic.work mode " + cmdlist[3]);
try {
int mod = Integer.parseInt(cmdlist[3]);
int Cycle = Integer.parseInt(cmdlist[4]);
}
public void handleBPTE(String cmd, Connection connection, Runtime runtime) {
-
//示例:
//IWBPTE,353456789012345,080835,60#
//说明:
ICLogger.i("收到服务器指令:测量体温 " + freq + "分钟一次。");
Config.setTemperatureTestCycle(runtime, freq * 60);
CoreService.getInstance().setTempAlarm();
-
-
- if (runtime.check_stat_do_temp_test()) TemperatureUtil.doTempTestInThread();
+ if (runtime.check_stat_do_temp_test())
+ TemperatureUtil.getInstance().doTempTestInThread(FROM_SERVER);
} catch (Exception e) {
ICLogger.e(e.getMessage(), e);
}
case BPXL:
handleBPXL(cmd, mConnection);
ICLogger.i("收到服务器心率检测命令");
- if (mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest();
+ if (mRuntime.check_stat_do_ppg_test())
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
break;
case BPXY:
handleBPXY(cmd, mConnection);
ICLogger.i("收到服务器血压检测命令");
- if (mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest();
+ if (mRuntime.check_stat_do_ppg_test())
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
break;
case BPJZ:
handleBPJZ(cmd, mConnection, mRuntime);
package com.ic.protocols;
import android.content.ComponentName;
-import android.content.Context;
import android.content.Intent;
import android.net.Uri;
-import android.os.Build;
import android.os.Environment;
-import android.support.annotation.RequiresApi;
-import android.text.TextUtils;
import com.enqualcomm.support.Config;
import com.enqualcomm.support.CoreService;
-import com.enqualcomm.support.R;
import com.enqualcomm.support.bean.Alarm;
import com.enqualcomm.support.bean.Contact;
import com.enqualcomm.support.bean.Content;
import java.util.HashMap;
import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;
+import static com.enqualcomm.support.Constants.FROM_SERVER;
import static com.enqualcomm.support.LocationClient.LOCATION_MODE;
import static com.enqualcomm.support.bean.Contact.GROUP_ALL;
import static java.lang.Math.abs;
private static final String CMDHEADER = "IW";
private static final String CMDEND = "#";
private static final String CMDSPLIT = ",";
- public static final String defaultServerIP="watch.jiai.pro";
- public static final int defaultServerPort=8090;
+ public static final String defaultServerIP = "watch.jiai.pro";
+ public static final int defaultServerPort = 8090;
public enum CMD_TYPE {
/*终端发起*/
cmdMap.put(CMD_TYPE.BPLA, "BPLA");
}
- private Connection mConnection=null;
- private Runtime mRuntime=null;
+ private Connection mConnection = null;
+ private Runtime mRuntime = null;
- public protocol_jiai(Connection connect,Runtime runtime) {
- mConnection=connect;
- mRuntime=runtime;
+ public protocol_jiai(Connection connect, Runtime runtime) {
+ mConnection = connect;
+ mRuntime = runtime;
}
return "";
}
- }else{
+ } else {
return "";
}
return "";
}
+
private void log(String msg) {
ICLogger.log(TAG, msg);
}
}
-
/**/
- public static StringMessage genStringMessage(String cmdName, String msg){
- StringMessage sm=new StringMessage(new String[]{cmdName,msg});
+ public static StringMessage genStringMessage(String cmdName, String msg) {
+ StringMessage sm = new StringMessage(new String[]{cmdName, msg});
sm.refresh(msg);
- sm.setDate(TimeUtil.getSystemDateYYMMDD(),TimeUtil.getSystemTimeHHmmss());
+ sm.setDate(TimeUtil.getSystemDateYYMMDD(), TimeUtil.getSystemTimeHHmmss());
return sm;
}
+
/*
返回true 表示 cmd 全部解析成功
返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用
boolean iscmdComplete = false;
boolean ret = true;
String last_inCompletecmd = "";
- String cmd_msgbuf=new String(bytes);
- log("bytes.size "+bytes.length);
+ String cmd_msgbuf = new String(bytes);
+ log("bytes.size " + bytes.length);
// cmdbuf.append(cmd_msgbuf);
cmdbuf.append(cmd_msgbuf);
- log("cmdbuf.size "+cmdbuf.length() +" "+cmdbuf.toString());
+ log("cmdbuf.size " + cmdbuf.length() + " " + cmdbuf.toString());
/*
如果不是 #结尾,就认为 接收数据不全,置位。
*/
}
String[] cmdlist = cmd_msgbuf.split(CMDEND);
int listlen = cmdlist.length;
- log("listlen "+listlen);
+ log("listlen " + listlen);
/*
如果解析出来的cmdlist不是空,且数据不是完整cmd则保留 最后一条数据到last_inCompletecmd
*/
if (key == CMD_TYPE.BP28) {
//如果是BP28则 后面的数据是音频,需要保留
byte[] amrBuf;
- int amrLen = getBP28Amrlen(cmdlist[i] );
+ int amrLen = getBP28Amrlen(cmdlist[i]);
if (bytes.length > amrLen) {
handleCmd(key, cmdlist[i], bytes);
}
cmdbuf = new StringBuffer().append(last_inCompletecmd);
return ret;
}
+
public int getBP28Amrlen(String cmd) {
String Name;
int packetLen;
- String[] msg=cmd.split(CMDSPLIT);
- if (msg.length>=6){
+ String[] msg = cmd.split(CMDSPLIT);
+ if (msg.length >= 6) {
try {
Name = msg[1];
log(stringBuffer.toString());
return packetLen;
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
- }else{
- log("getBP28AmrLen","format Error");
+ } else {
+ log("getBP28AmrLen", "format Error");
}
return -1;
}
+
/*登录*/
public static StringMessage AP00(Runtime ds) {
//示例数据:IWAP00867155030001063#
- return genStringMessage(cmdMap.get(CMD_TYPE.AP00),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString());
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP00), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString());
}
//处理 登录 BP00
- public void handleBP00(Runtime runtime,String cmd){
- String[] msg=cmd.split(CMDSPLIT);
+ public void handleBP00(Runtime runtime, String cmd) {
+ String[] msg = cmd.split(CMDSPLIT);
// get Msg :IWBP00,20191229171933,8# (size)24
// 12-30 01:19:33.861 6492-6492/com.enqualcomm.support I/ICSrv.protocolAPIHelper: found cmd keyid=BP00 ,keyname=BP00 , IWBP00,20191229171933,8
- if (msg.length>=3) {
+ if (msg.length >= 3) {
log("handleBP00", "Set Datetime " + msg[1]);
log("handleBP00", "Set TimeZone " + msg[2]);
}
// Set Datetime 20200505112734
// Set TimeZone 8
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
- }else{
- log("handleBP00","format Error");
+ } else {
+ log("handleBP00", "format Error");
}
}
public static StringMessage AP03(Runtime ds) {
//示例数据:IWAP03,06000908000102,5555,30# IWAP03,000000null00000,0,0#
- return genStringMessage(cmdMap.get(CMD_TYPE.AP03),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP03), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d", abs(ds.getSignalStrength())))
.append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")
.append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)
.append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString());
}
+
//处理 心跳 BP03
- public void handleBP03(String cmd){
+ public void handleBP03(String cmd) {
log("BP03心跳接收成功");
}
- public static StringMessage AP10(Runtime ds){
+ public static StringMessage AP10(Runtime ds) {
/**
* IWAP10080524A2232.9806N11404.9355E000.1 061830 323.87 060 009 080 0 05 02,
* zh-cn:设备语言
* 00:第一个0:是否需要回复地址信息,0:不回复,1回复.
*/
- return genStringMessage(cmdMap.get(CMD_TYPE.AP10),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())
- .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP10), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())
+ .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d", abs(ds.getSignalStrength())))
.append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")
.append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)
.append(ds.getLBSData()).append(CMDSPLIT)
// 460,0,9520,3671,
// Home|74-DE-2B-44-88-8C|97& Home1|74-DE-2B-44-88-8C|97&Home2|74-DE-2B-44-88-8C|97& Home3|74-DE-2B-44-88-8C|97#
// IWAP01191230A2232.9807N11404.9355E000.1161320000.0006000910000000,460,00,9520,3671,#
- return genStringMessage( cmdMap.get(CMD_TYPE.AP01),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())
- .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP01), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())
+ .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d", abs(ds.getSignalStrength())))
.append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")
.append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)
.append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());
}
//处理 定位 BP01
- public void handleBP01(String cmd){
+ public void handleBP01(String cmd) {
log("BP01定位接收成功");
}
-
/*LBS+WiFi混合定位*/
public static StringMessage AP02(Runtime ds) {
//示例数据:IWAP02,
// 4: 表示WIFI组数,
// 1|D8-24-BD-79-FA-1F|59: ssid|mac地址|信号强度,信号强度转正数:150 – abs(信号强度)
- int apsum=0;
- String wifiinfo=ds.getWifiInfo();
+ int apsum = 0;
+ String wifiinfo = ds.getWifiInfo();
if (!wifiinfo.isEmpty()) {
String[] list = wifiinfo.split("&");
apsum = list.length;
}
- ICLogger.i("Wifi ap sum "+apsum);
- return genStringMessage(cmdMap.get(CMD_TYPE.AP02),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)
+ ICLogger.i("Wifi ap sum " + apsum);
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP02), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT)
.append(ds.getLanguage()).append(CMDSPLIT)
.append(0).append(CMDSPLIT) //为0时不回复地址
.append(ds.getLBSMultiStationData()).append(CMDSPLIT) //基站信息数据
}
//处理 定位 BP01
- public void handleBP02(String cmd){
+ public void handleBP02(String cmd) {
log("BP02定位接收成功");
}
-
- public static StringMessage APXL(String id){
+ public static StringMessage APXL(String id) {
//设备响应: IWAPXL,080835#
//080835:指令流水号
- return genStringMessage("APXL",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))
+ return genStringMessage("APXL", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))
.append(CMDSPLIT).append(id)
.append(CMDEND).toString());
}
/**
* 测量心率
+ *
* @param cmd
* @param connection
*/
- public void handleBPXL(String cmd, Connection connection){
+ public void handleBPXL(String cmd, Connection connection) {
//IWBPXL,353456789012345,080835#
//说明:
//IW:标识符
//080835 :指令流水号
//设备响应: IWAPXL,080835#
//080835:指令流水号
- String[] list=cmd.split(CMDSPLIT);
- if (list.length==3){
- String index=list[2];
- String imei=list[1];
- ICLogger.i("Handle BPXL IMEI "+imei+",index "+index);
+ String[] list = cmd.split(CMDSPLIT);
+ if (list.length == 3) {
+ String index = list[2];
+ String imei = list[1];
+ ICLogger.i("Handle BPXL IMEI " + imei + ",index " + index);
connection.send(APXL(index));
- }else{
+ } else {
ICLogger.i("BPXL format error!");
}
}
- public static StringMessage APXY(String id){
+ public static StringMessage APXY(String id) {
//设备响应: IWAPXY,080835#
//080835:指令流水号
- return genStringMessage("APXY",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))
+ return genStringMessage("APXY", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))
.append(CMDSPLIT).append(id)
.append(CMDEND).toString());
}
/**
* 测量血压
+ *
* @param cmd
* @param connection
*/
- public void handleBPXY(String cmd,Connection connection){
+ public void handleBPXY(String cmd, Connection connection) {
//IWBPXY,353456789012345,080835#
//说明:
//IW:标识符
//080835 :指令流水号
//设备响应: IWAPXY,080835#
//080835:指令流水号
- String[] list=cmd.split(CMDSPLIT);
- if (list.length==3){
- String index=list[2];
- String imei=list[1];
- ICLogger.i("Handle BPXY IMEI "+imei+",index "+index);
+ String[] list = cmd.split(CMDSPLIT);
+ if (list.length == 3) {
+ String index = list[2];
+ String imei = list[1];
+ ICLogger.i("Handle BPXY IMEI " + imei + ",index " + index);
connection.send(APXY(index));
- }else{
+ } else {
ICLogger.i("BPXY format error!");
}
}
-
- public static StringMessage APJZ(String id,String BPH,String BPL,String Age,String Sex){
+ public static StringMessage APJZ(String id, String BPH, String BPL, String Age, String Sex) {
//设备响应: IWAPJZ,792997,120,85,42,1#
//792997:指令流水号
// 高压120,低压85,年龄42,1 男性
- return genStringMessage("APJZ",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))
+ return genStringMessage("APJZ", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))
.append(CMDSPLIT).append(id)
.append(CMDSPLIT).append(BPH)
.append(CMDSPLIT).append(BPL)
}
/**
- *
* @param cmd
* @param connection
* @param runtime
*/
- public void handleBPJZ(String cmd,Connection connection,Runtime runtime){
+ public void handleBPJZ(String cmd, Connection connection, Runtime runtime) {
//cmdbuf.size 42 IWBPJZ,867155030001063,199600,120,85,45,1# 高压120,低压85,年龄45,男性
// cmdbuf.size 42 IWBPJZ,867155030001063,909957,120,85,42,0# 高压120,低压85,年龄42,女性
//IWBPJZ,353456789012345,080835,110,75#
//080835 :指令流水号
//设备响应: IWAPJZ,792997,120,85,42,1#
//792997:指令流水号
- String[] list=cmd.split(CMDSPLIT);
- if (list.length==7){
- String index=list[2];
- String imei=list[1];
- String strBPH=list[3];
- String strBPL=list[4];
- String strAge=list[5];
- String strSex=list[6];
-
- connection.send(APJZ(index,strBPH,strBPL,strAge,strSex));
+ String[] list = cmd.split(CMDSPLIT);
+ if (list.length == 7) {
+ String index = list[2];
+ String imei = list[1];
+ String strBPH = list[3];
+ String strBPL = list[4];
+ String strAge = list[5];
+ String strSex = list[6];
+
+ connection.send(APJZ(index, strBPH, strBPL, strAge, strSex));
try {
runtime.getHRS().setXY_Ref(Integer.parseInt(strBPH), Integer.parseInt(strBPL), Integer.parseInt(strAge), Integer.parseInt(strSex));
ICLogger.i("Handle BPJZ IMEI " + imei + ",index " + index + ", BPH " + strBPH + ", BPL " + strBPL + ", Age " + strAge + ", Sex " + (strSex.equals("1") ? "男" : "女"));
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
- }else{
+ } else {
ICLogger.i("BPXY format error!");
}
}
-
//重启
- public static StringMessage AP18(String index){
- return genStringMessage("AP18",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))
+ public static StringMessage AP18(String index) {
+ return genStringMessage("AP18", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18))
.append(CMDSPLIT).append(index)
.append(CMDEND).toString());
}
- public void handleBP18(Connection connection,String cmd) {
+ public void handleBP18(Connection connection, String cmd) {
// IWBP18,867155030001063,161723
- String[] cmdlist=cmd.split(CMDSPLIT);
- if (cmdlist.length==3) {
+ String[] cmdlist = cmd.split(CMDSPLIT);
+ if (cmdlist.length == 3) {
connection.send(AP18(cmdlist[2]));
}
//恢复出厂设置
- public static StringMessage AP17(String index){
- return genStringMessage("AP17",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))
+ public static StringMessage AP17(String index) {
+ return genStringMessage("AP17", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))
.append(CMDSPLIT).append(index)
.append(CMDEND).toString());
}
- public void handleBP17(Connection connection,String cmd) {
+
+ public void handleBP17(Connection connection, String cmd) {
// IWBP17,867155030001063,161723
- String[] cmdlist=cmd.split(CMDSPLIT);
- if (cmdlist.length==3) {
+ String[] cmdlist = cmd.split(CMDSPLIT);
+ if (cmdlist.length == 3) {
connection.send(AP17(cmdlist[2]));
//关机
- public static StringMessage AP31(String index){
- return genStringMessage("AP31",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))
+ public static StringMessage AP31(String index) {
+ return genStringMessage("AP31", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))
.append(CMDSPLIT).append(index)
.append(CMDEND).toString());
}
- public void handleBP31(Connection connection,String cmd) {
+
+ public void handleBP31(Connection connection, String cmd) {
// IWBP31,867155030001063,161723
- String[] cmdlist=cmd.split(CMDSPLIT);
- if (cmdlist.length==3) {
+ String[] cmdlist = cmd.split(CMDSPLIT);
+ if (cmdlist.length == 3) {
connection.send(AP31(cmdlist[2]));
}
//设置SOS号码
- public static StringMessage AP12(String index,String phNum1,String phNum2,String phNum3){
- return genStringMessage("AP12",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))
+ public static StringMessage AP12(String index, String phNum1, String phNum2, String phNum3) {
+ return genStringMessage("AP12", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12))
.append(CMDSPLIT).append(index)
.append(CMDSPLIT).append(phNum1)
.append(CMDSPLIT).append(phNum2)
}
//设置SOS号码
- public void handleBP12(Connection connection,String cmd,Runtime runtime){
+ public void handleBP12(Connection connection, String cmd, Runtime runtime) {
// IWBP12,353456789012345,080835,135XXXXXXXX,135XXXXXXXX,135XXXXXXXX#
- String[] cmdlist=cmd.split(CMDSPLIT);
- if (cmdlist.length>=3){
- String index=cmdlist[2];
- String phNum1=cmdlist.length==3?"":cmdlist[3];
- String phNum2=cmdlist.length>3?(cmdlist.length==4?"":cmdlist[4]):"";
- String phNum3=(cmdlist.length>4)?(cmdlist.length==5? "":cmdlist[5]):"";
- ICLogger.i(new StringBuffer().append("get Emegency Numbs "+phNum1+","+phNum2+","+phNum3).toString());
- connection.send(AP12(index,phNum1,phNum2,phNum3));
-
- ArrayList<Contact> contactArray=new ArrayList<Contact>();
- if (!phNum1.isEmpty()) contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",phNum1));
- if (!phNum2.isEmpty()) contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos2",phNum2));
- if (!phNum3.isEmpty()) contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos3",phNum3));
-
- runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true);
-
- }else{
+ String[] cmdlist = cmd.split(CMDSPLIT);
+ if (cmdlist.length >= 3) {
+ String index = cmdlist[2];
+ String phNum1 = cmdlist.length == 3 ? "" : cmdlist[3];
+ String phNum2 = cmdlist.length > 3 ? (cmdlist.length == 4 ? "" : cmdlist[4]) : "";
+ String phNum3 = (cmdlist.length > 4) ? (cmdlist.length == 5 ? "" : cmdlist[5]) : "";
+ ICLogger.i(new StringBuffer().append("get Emegency Numbs " + phNum1 + "," + phNum2 + "," + phNum3).toString());
+ connection.send(AP12(index, phNum1, phNum2, phNum3));
+
+ ArrayList<Contact> contactArray = new ArrayList<Contact>();
+ if (!phNum1.isEmpty())
+ contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", phNum1));
+ if (!phNum2.isEmpty())
+ contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", phNum2));
+ if (!phNum3.isEmpty())
+ contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum3));
+
+ runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true);
+
+ } else {
ICLogger.i(" BP12 format error!");
}
}
- public static StringMessage AP14(String index,String[] phnumbs){
- return genStringMessage("AP14",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
+ public static StringMessage AP14(String index, String[] phnumbs) {
+ return genStringMessage("AP14", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14))
.append(CMDSPLIT).append(index)
.append(CMDSPLIT).append(phnumbs[0])
.append(CMDSPLIT).append(phnumbs[1])
.append(CMDSPLIT).append(phnumbs[9])
.append(CMDEND).toString());
}
+
//设置通讯录,白名单(10个)
- public void handleBP14(Connection connection,String cmd , Runtime runtime){
+ public void handleBP14(Connection connection, String cmd, Runtime runtime) {
// IWBP14,867155030001063,357444,9b44529b|13554820016,,,,,,,,,
/**
* IWBP14,353456789012345,080835,
* D3590D54|135xxxxxxxxxx,
* D3590D54|135xxxxxxxxxx#
*/
- String[] cmdlist=cmd.split(CMDSPLIT);
- String[] phnums=new String[]{"","","","","","","","","",""};
- StringBuffer sb=new StringBuffer().append("recv phone Numbs ");
- if (cmdlist.length>=3){
- switch (cmdlist.length){
+ String[] cmdlist = cmd.split(CMDSPLIT);
+ String[] phnums = new String[]{"", "", "", "", "", "", "", "", "", ""};
+ StringBuffer sb = new StringBuffer().append("recv phone Numbs ");
+ if (cmdlist.length >= 3) {
+ switch (cmdlist.length) {
case 13:
- phnums[9]=cmdlist[12];
+ phnums[9] = cmdlist[12];
sb.append(phnums[9]).append(",");
case 12:
- phnums[8]=cmdlist[11];
+ phnums[8] = cmdlist[11];
sb.append(phnums[8]).append(",");
case 11:
- phnums[7]=cmdlist[10];
+ phnums[7] = cmdlist[10];
sb.append(phnums[7]).append(",");
case 10:
- phnums[6]=cmdlist[9];
+ phnums[6] = cmdlist[9];
sb.append(phnums[6]).append(",");
case 9:
- phnums[5]=cmdlist[8];
+ phnums[5] = cmdlist[8];
sb.append(phnums[5]).append(",");
case 8:
- phnums[4]=cmdlist[7];
+ phnums[4] = cmdlist[7];
sb.append(phnums[4]).append(",");
case 7:
- phnums[3]=cmdlist[6];
+ phnums[3] = cmdlist[6];
sb.append(phnums[3]).append(",");
case 6:
- phnums[2]=cmdlist[5];
+ phnums[2] = cmdlist[5];
sb.append(phnums[2]).append(",");
case 5:
- phnums[1]=cmdlist[4];
+ phnums[1] = cmdlist[4];
sb.append(phnums[1]).append(",");
case 4:
- phnums[0]=cmdlist[3];
+ phnums[0] = cmdlist[3];
sb.append(phnums[0]).append(",");
}
- String index=cmdlist[2];
+ String index = cmdlist[2];
ICLogger.i(sb.toString());
- connection.send(AP14(index,phnums));
- ArrayList<Contact> contactArray=new ArrayList<Contact>();
- for (int i=0; i< phnums.length;i++){
- String[] tmp= phnums[i].split("\\|");
- if (tmp.length==2){
- String name= Util.decodeUnicode2Utf8(tmp[0]);
- String phonem=tmp[1];
- ICLogger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length+" , name="+name+",-"+phonem);
- contactArray.add(new Contact(Contact.CATEGORY_CALL,name,phonem));
- }else{
- ICLogger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length);
+ connection.send(AP14(index, phnums));
+ ArrayList<Contact> contactArray = new ArrayList<Contact>();
+ for (int i = 0; i < phnums.length; i++) {
+ String[] tmp = phnums[i].split("\\|");
+ if (tmp.length == 2) {
+ String name = Util.decodeUnicode2Utf8(tmp[0]);
+ String phonem = tmp[1];
+ ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length + " , name=" + name + ",-" + phonem);
+ contactArray.add(new Contact(Contact.CATEGORY_CALL, name, phonem));
+ } else {
+ ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length);
}
}
// contactArray.add(new Contact(Contact.CATEGORY_CARE,"CARE","666"));
// contactArray.add(new Contact(Contact.CATEGORY_VOLTE,"VOLTE","666"));
- runtime.getDbHelper().saveContacts(contactArray,false,false,true,false,false,false);
+ runtime.getDbHelper().saveContacts(contactArray, false, false, true, false, false, false);
- }else{
+ } else {
ICLogger.i(" BP14 format error!");
}
}
-
- public static StringMessage AP85(Runtime ds,String cmddata){
+ public static StringMessage AP85(Runtime ds, String cmddata) {
//示例数据:IWAP49,68##
- return genStringMessage("AP85",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))
+ return genStringMessage("AP85", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))
.append(CMDSPLIT).append(cmddata)
.append(CMDEND).toString());
}
+
//设置闹钟
- public void handleBP85(String cmd , Connection connection,Runtime runtime){
+ public void handleBP85(String cmd, Connection connection, Runtime runtime) {
// IWBP85,867155030001063,155312,1,1,0235,12,1,1
// IWBP85,867155030002145,945166,1,0,
// IWBP85,867155030001064,265960,1,1,1130,,1,1
//3 表示久坐提醒
//多组闹钟之间用”@”符号分隔
- String imei="",cmdindex="0"/*指令流水号*/;
- int all_alarmswitch=0 /*总开关 1为开,0 为关*/,
- alarmswitch=0 /*1为开,0 为关*/,
- alarmcount=0 /*表示闹钟个数*/;
- String alarmtime="";//0900表示早上09:00
- int alarmtype=1; //1表示吃药提醒 , 2 表示喝水提醒 ,3 表示久坐提醒
- String repeat="";// 135表示周一周三周五,使用24小时制
- String[] datalist= cmd.split("@");
- ArrayList<Alarm> alarmlist=new ArrayList<>();
+ String imei = "", cmdindex = "0"/*指令流水号*/;
+ int all_alarmswitch = 0 /*总开关 1为开,0 为关*/,
+ alarmswitch = 0 /*1为开,0 为关*/,
+ alarmcount = 0 /*表示闹钟个数*/;
+ 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){
+ if (datalist.length > 0) {
- for (int i =0 ; i< datalist.length;i++){
- String [] cmdarglist=datalist[i].split(",");
+ for (int i = 0; i < datalist.length; i++) {
+ String[] cmdarglist = datalist[i].split(",");
- if (i == 0){
- if (cmdarglist.length == 9){
+ if (i == 0) {
+ if (cmdarglist.length == 9) {
try {
imei = cmdarglist[1];
cmdindex = cmdarglist[2];
.toString()
);
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);
+ } 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]);
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
- }else{
+ } else {
log("data len is too small!");
}
- }else{
- if (cmdarglist.length == 4){
+ } else {
+ if (cmdarglist.length == 4) {
try {
alarmtime = cmdarglist[0];
repeat = cmdarglist[1];
);
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);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
- }else{
+ } else {
log("data len is too small!");
}
}
//IWBP85,867155030002145,410385,1,0,#
- String replacement=new StringBuilder("IWBP85,").append(imei).append(",").toString();
- String replycmd = cmd.replace(replacement,"");
- ICLogger.i("gen reply "+replacement+" "+replycmd);
- connection.send(AP85(runtime,replycmd));
+ String replacement = new StringBuilder("IWBP85,").append(imei).append(",").toString();
+ String replycmd = cmd.replace(replacement, "");
+ ICLogger.i("gen reply " + replacement + " " + replycmd);
+ connection.send(AP85(runtime, replycmd));
}
// }
-
-
- public static byte[] AP07(String packetTime,int count,int index,int datalen,byte[] amrdata){
+ public static byte[] AP07(String packetTime, int count, int index, int datalen, byte[] amrdata) {
//IWAP07,20140818064408,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#
//说明:
//IW:标识符
//如果设备回复确认数据包接收失败状态,则重复发送上一个数据包
- String sb=new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP07))
+ String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP07))
.append(CMDSPLIT).append(packetTime)
.append(CMDSPLIT).append(count)
.append(CMDSPLIT).append(index)
.append(CMDSPLIT).append(datalen)
.append(CMDSPLIT).toString();
- byte[] sentbuf=new byte[sb.length()+datalen+1];
- System.arraycopy(sb.getBytes(),0,sentbuf,0,sb.length());
- System.arraycopy(amrdata,0,sentbuf,sb.length(),datalen);
- sentbuf[sb.length()+datalen]='#';
+ byte[] sentbuf = new byte[sb.length() + datalen + 1];
+ System.arraycopy(sb.getBytes(), 0, sentbuf, 0, sb.length());
+ System.arraycopy(amrdata, 0, sentbuf, sb.length(), datalen);
+ sentbuf[sb.length() + datalen] = '#';
return sentbuf;
}
- public void handleBP07(String cmd , Connection connection ){
+ public void handleBP07(String cmd, Connection connection) {
//平台响应: IWBP07,20140818064408,6,1,1#
//20140818064408:设备语音时间,yyyyMMddHHmmss 格式的年月日时分秒
//6:语音包分包总数
//1:当前设备收到的是第几个包
//1:表示服务器接受数据成功,0表示服务器接受数据失败
- String[] cmdlist=cmd.split(CMDSPLIT);
- if (cmdlist.length==5){
+ String[] cmdlist = cmd.split(CMDSPLIT);
+ if (cmdlist.length == 5) {
try {
String time = cmdlist[1];
int packetCount = Integer.parseInt(cmdlist[2]);
}
//发送消息,再次检查要发送的语音包,确认其发送完毕
connection.DeliverCMDMessageToSystem("SentVoicePacket", "SentVoicePacket");
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
- }else{
+ } else {
ICLogger.i(" BP07 Format error!");
}
}
-
- public static StringMessage AP33(String cmdindex,int workMode){
+ public static StringMessage AP33(String cmdindex, int workMode) {
//IWAP33,080835,1#
//080835:指令流水号
//1:设置信息,供服务器同步
- return genStringMessage("AP33",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))
+ return genStringMessage("AP33", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))
.append(CMDSPLIT).append(cmdindex)
.append(CMDSPLIT).append(workMode)
.append(CMDEND).toString());
}
//设置工作模式
- public void handleBP33(Connection connection,Runtime runtime,String cmd){
+ public void handleBP33(Connection connection, Runtime runtime, String cmd) {
// IWBP33,867155030001063,560555,1
// IW:标识符
// 080835:指令流水号
// 1:设备工作模式,1:正常模式,2:省电模式,3:紧急模式
- String[] cmdlist=cmd.split(",");
- if (cmdlist.length == 4){
+ String[] cmdlist = cmd.split(",");
+ if (cmdlist.length == 4) {
try {
- log("work mode " + cmdlist[3]);
+ log("com.ic.work mode " + cmdlist[3]);
int mod = Integer.parseInt(cmdlist[3]);
int Cycle = 900;
switch (mod) {
runtime.getLocationInstance().setWorkingMod(mod);
// CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod());
//此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
}
}
- public static StringMessage AP34(String cmdindex,int workMode){
+ public static StringMessage AP34(String cmdindex, int workMode) {
//IWAP34,588854,1#
//080835:指令流水号
//8:模式
- return genStringMessage("AP34",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))
+ return genStringMessage("AP34", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34))
.append(CMDSPLIT).append(cmdindex)
.append(CMDSPLIT).append(workMode)
.append(CMDEND).toString());
}
//设置自定义工作模式
- public void handleBP34(Connection connection,Runtime runtime,String cmd){
+ public void handleBP34(Connection connection, Runtime runtime, String cmd) {
// IWBP34,867155030001063,588854,8,900,1#
// IW:标识符
// 080835:指令流水号
// 1:设备工作模式,1:正常模式,2:省电模式,3:紧急模式
- String[] cmdlist=cmd.split(",");
- if (cmdlist.length == 6){
+ String[] cmdlist = cmd.split(",");
+ if (cmdlist.length == 6) {
- log("work mode "+cmdlist[3]);
+ log("com.ic.work mode " + cmdlist[3]);
try {
int mod = Integer.parseInt(cmdlist[3]);
int Cycle = Integer.parseInt(cmdlist[4]);
runtime.getLocationInstance().setWorkingMod(mod);
// CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod());
//此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
}
/**
* 心率上传,返回协议字串
+ *
* @param ds
* @return
*/
- public static StringMessage AP49(Runtime ds){
+ public static StringMessage AP49(Runtime ds) {
//示例数据:IWAP49,68##
- return genStringMessage(cmdMap.get(CMD_TYPE.AP49),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP49), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))
.append(CMDSPLIT).append(ds.getHRS().getPPG())
.append(CMDEND).toString());
}
-/***
- * 9温度数据上传(上行协议号:AP50,响应:BP50)
- * 示例:
- * IWAP50,36.7,90#
- * 说明:
- * IW:标识符
- * AP50 : 命令字符
- * 36.7:温度
- * 90:电量
- * 平台响应: IWBP50#
- * 说明: 本消息适用所有终端
- */
-public static StringMessage AP50(Runtime ds){
- //示例数据:IWAP50,36.7,90#
- return genStringMessage(cmdMap.get(CMD_TYPE.AP50),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP50))
- .append(CMDSPLIT).append(ds.tempInfo.currentBodyTemp)
- .append(CMDSPLIT).append("100")
- .append(CMDEND).toString());
+ /***
+ * 9温度数据上传(上行协议号:AP50,响应:BP50)
+ * 示例:
+ * IWAP50,36.7,90#
+ * 说明:
+ * IW:标识符
+ * AP50 : 命令字符
+ * 36.7:温度
+ * 90:电量
+ * 平台响应: IWBP50#
+ * 说明: 本消息适用所有终端
+ */
+ public static StringMessage AP50(Runtime ds) {
+ //示例数据:IWAP50,36.7,90#
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP50), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP50))
+ .append(CMDSPLIT).append(ds.tempInfo.currentBodyTemp)
+ .append(CMDSPLIT).append("100")
+ .append(CMDEND).toString());
-}
+ }
/**
* 返回上传心率血压的协议字串
+ *
* @param ds
* @return
*/
- public static StringMessage APHT(Runtime ds){
+ public static StringMessage APHT(Runtime ds) {
//IWAPHT,60,130,85#
//说明:
//IW:标识符
//85 : 血压低压 [舒张压]
//平台响应: IWBPHT#
//表示平台已接收,可不作响应
- return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))
+ return genStringMessage(cmdMap.get(CMD_TYPE.APHT), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))
.append(CMDSPLIT).append(ds.getHRS().getPPG())
.append(CMDSPLIT).append(ds.getHRS().getBPH())
.append(CMDSPLIT).append(ds.getHRS().getBPL())
.append(CMDEND).toString());
}
- public static StringMessage APHT(int ppg,int bph,int bpl){
+
+ public static StringMessage APHT(int ppg, int bph, int bpl) {
//IWAPHT,60,130,85#
//说明:
//IW:标识符
//85 : 血压低压 [舒张压]
//平台响应: IWBPHT#
//表示平台已接收,可不作响应
- return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))
+ return genStringMessage(cmdMap.get(CMD_TYPE.APHT), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))
.append(CMDSPLIT).append(ppg)
.append(CMDSPLIT).append(bph)
.append(CMDSPLIT).append(bpl)
.append(CMDEND).toString());
}
- public static StringMessage APHP(Runtime ds){
+
+ public static StringMessage APHP(Runtime ds) {
//IWAPHP,60,130,85,95,90, , , , , , , , #
//IW:标识符
//APHT : 命令字符
//95:血氧
//90:血糖
// 本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空
- return genStringMessage(cmdMap.get(protocol_ic.CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_ic.CMD_TYPE.APHP))
+ return genStringMessage(cmdMap.get(protocol_ic.CMD_TYPE.APHP), new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_ic.CMD_TYPE.APHP))
.append(CMDSPLIT).append(ds.getHRS().getPPG())
.append(CMDSPLIT).append(ds.getHRS().getBPH())
.append(CMDSPLIT).append(ds.getHRS().getBPL())
.append(CMDSPLIT)
.append(CMDEND).toString());
}
- public static StringMessage APHP(int ppg,int bph, int bpl, int spo2){
+
+ public static StringMessage APHP(int ppg, int bph, int bpl, int spo2) {
//IWAPHP,60,130,85,95,90, , , , , , , , #
//IW:标识符
//APHT : 命令字符
//95:血氧
//90:血糖
// 本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空
- return genStringMessage(cmdMap.get(protocol_ic.CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_ic.CMD_TYPE.APHP))
+ return genStringMessage(cmdMap.get(protocol_ic.CMD_TYPE.APHP), new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_ic.CMD_TYPE.APHP))
.append(CMDSPLIT).append(ppg)
.append(CMDSPLIT).append(bph)
.append(CMDSPLIT).append(bpl)
}
- public void handleBPHP(){
+ public void handleBPHP() {
ICLogger.i("服务器收到APHP 心率血压血氧 !");
}
//立即定位反馈
- public static StringMessage AP16(String cmdindex){
+ public static StringMessage AP16(String cmdindex) {
//IWAP16,080835#
//080835:指令流水号
- return genStringMessage("AP16",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))
+ return genStringMessage("AP16", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))
.append(CMDSPLIT).append(cmdindex)
.append(CMDEND).toString());
}
+
// 立即定位指令(长链接有效)
- public void handleBP16(Connection connection,Runtime runtime,String cmd){
+ public void handleBP16(Connection connection, Runtime runtime, String cmd) {
//示例数据:IWBP16,867155030001063,335386
// IWBP16,353456789012345,080835#
// 说明:
// 353456789012345:IMEI号,设备唯一ID
// 080835 :指令流水号
String[] cmdlist = cmd.split(",");
- if(cmdlist.length==3){
- log("imei "+cmdlist[1]+", cmdindex "+cmdlist[2]);
+ if (cmdlist.length == 3) {
+ log("imei " + cmdlist[1] + ", cmdindex " + cmdlist[2]);
connection.send(AP16(cmdlist[2]));
- }else{
+ } else {
log("error BP16 format");
}
}
/*通过基站获取时间和坐标*/
- public static StringMessage APTM(Runtime ds){
+ public static StringMessage APTM(Runtime ds) {
//示例数据:IWAPTM,460,0,9750,3613#
//说明:
//IW:标识符
//9750: LAC
//3613: CID
- return genStringMessage(cmdMap.get(CMD_TYPE.APTM),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))
+ return genStringMessage(cmdMap.get(CMD_TYPE.APTM), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))
.append(CMDSPLIT).append(ds.getLocationInstance().getMCC())
.append(CMDSPLIT).append(ds.getLocationInstance().getMNC())
.append(CMDSPLIT).append(ds.getLocationInstance().getLAC())
}
- public void handleBPTM(String cmd){
+ public void handleBPTM(String cmd) {
//平台响应: IWBPTM,20160225090909,22.123456,113.654321#
//返回时间,格式为:yyyyMMddHHmmss ,为UTC0 时间
//经纬度保留六位小数,若没取到则返回 0
- String[] list=cmd.split(CMDSPLIT);
+ String[] list = cmd.split(CMDSPLIT);
- if(list.length==4){
+ if (list.length == 4) {
- String time=list[1];
- String lat=list[2];
- String lon=list[3];
- ICLogger.i("BPTM , time="+time+", lat="+lat+", lon="+lon);
- }else{
+ String time = list[1];
+ String lat = list[2];
+ String lon = list[3];
+ ICLogger.i("BPTM , time=" + time + ", lat=" + lat + ", lon=" + lon);
+ } else {
ICLogger.i("BPTM format error");
}
}
- public static StringMessage AP15(String index){
+ public static StringMessage AP15(String index) {
//IWAP15, 080835#
//080835:指令流水号
- return genStringMessage("AP15",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))
+ return genStringMessage("AP15", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))
.append(CMDSPLIT).append(index)
.append(CMDEND).toString());
}
//设置定位周期
- public void handleBP15(String cmd ,Connection connection,Runtime runtime){
+ public void handleBP15(String cmd, Connection connection, Runtime runtime) {
// IWBP15, 353456789012345, 080835, 30#
// 353456789012345:IMEI号,设备唯一ID
// 080835 :指令流水号
// 30: 表示频率为30分钟
- String[] list=cmd.split(CMDSPLIT);
+ String[] list = cmd.split(CMDSPLIT);
- if(list.length==4){
+ if (list.length == 4) {
try {
String index = list[2];
String time = list[3];
runtime.getLocationInstance().setLocation_cycle(Config.getLocationCycle(runtime.getContextProxy().context));
//set AlarmCycle and trigger Location
CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod());
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
- }else{
+ } else {
ICLogger.i("BP15 format error");
}
}
-
-
-
-
/*语音下行反馈*/
public static StringMessage AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {
//示例数据:IWAP28,D3590D54,xxxx,6,1,1#
- return genStringMessage("AP28",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))
+ return genStringMessage("AP28", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))
.append(CMDSPLIT).append(name)
.append(CMDSPLIT).append(msg)
.append(CMDSPLIT).append(packagecount)
}
//处理 BP28 语音消息
- public void handleBP28(Connection connection,String cmd,Runtime runtime,byte[] bytes) {
+ public void handleBP28(Connection connection, String cmd, Runtime runtime, byte[] bytes) {
//log("handleBP28 msg"+cmd);
/**
* IWBP28, D3590D54,XXXX,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#
int packetLen;
byte[] packetData;
- String[] msg= cmd.split(CMDSPLIT);
- if (msg.length>=6){
+ String[] msg = cmd.split(CMDSPLIT);
+ if (msg.length >= 6) {
try {
Name = msg[1];
appendIndex = msg[2];
connection.DeliverCMDMessageToSystem("NewVoice", amrFilepath);//通知下面线程状态变化
}
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
- }else{
- log("handleBP28","format Error");
+ } else {
+ log("handleBP28", "format Error");
// connection.send(genStringMessage("AP28",AP28(Name,appendIndex,packetCount,currentId,0)));
}
}
//白名单开关(下行协议号:BP84,响应:AP84)
- public static StringMessage AP84(String index,int success){
+ public static StringMessage AP84(String index, int success) {
//设备响应: IWAP80,080835,1#
//080835:指令流水号
//1:表示设备执行成功,0 表示设备执行失败
- return genStringMessage("AP84",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))
+ return genStringMessage("AP84", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))
.append(CMDSPLIT).append(index)
.append(CMDSPLIT).append(success)
.append(CMDEND).toString());
}
- public void handleBP84(String cmd,Connection connection){
+ public void handleBP84(String cmd, Connection connection) {
//示例:
//IWBP84,353456789012345,080835,1#
//说明:
//353456789012345:IMEI号,设备唯一ID
//080835 :指令流水号
//1: 表示白名单开,0 表示白名单关
- String[] list=cmd.split(CMDSPLIT);
+ String[] list = cmd.split(CMDSPLIT);
- if (list.length==4){
- String index=list[2];
- String whitelist_switch=list[3];
- connection.send(AP84(index,1));
+ if (list.length == 4) {
+ String index = list[2];
+ String whitelist_switch = list[3];
+ connection.send(AP84(index, 1));
- if (whitelist_switch.equals("1")){
- Util.setSystemProperties("persist.sys.whitelist.enable","true");
- }else{
- Util.setSystemProperties("persist.sys.whitelist.enable","false");
+ if (whitelist_switch.equals("1")) {
+ Util.setSystemProperties("persist.sys.whitelist.enable", "true");
+ } else {
+ Util.setSystemProperties("persist.sys.whitelist.enable", "false");
}
- ICLogger.i("收到服务器指令:白名单"+(whitelist_switch.equals("1")?"开":"关"));
+ ICLogger.i("收到服务器指令:白名单" + (whitelist_switch.equals("1") ? "开" : "关"));
- }else{
+ } else {
ICLogger.i("BP84 format error!");
}
}
//17.设置心率/血压测量周期(下行协议号:BP86,响应:AP86)
- public static StringMessage AP86(String index){
+ public static StringMessage AP86(String index) {
//设备响应: IWAP86, 080835#
//080835:指令流水号
- return genStringMessage("AP86",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))
+ return genStringMessage("AP86", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86))
.append(CMDSPLIT).append(index)
.append(CMDEND).toString());
}
- public void handleBP86(String cmd,Connection connection,Runtime runtime){
+ public void handleBP86(String cmd, Connection connection, Runtime runtime) {
//示例:
//IWBP86, 353456789012345, 080835,1,720#
//1: 表示心率周期;2 :表示血压周期
//720: 表示720分钟
- String[] list=cmd.split(CMDSPLIT);
+ String[] list = cmd.split(CMDSPLIT);
- if (list.length==5){
+ if (list.length == 5) {
try {
String index = list[2];
String type = list[3];
Intent intent = new Intent();
intent.putExtra("PPGTestCycle", Integer.parseInt(cycle));
runtime.getContextProxy().sendBrodcast(ACTION_HEATR_RATE_START, intent);
- }catch (Exception e){
- ICLogger.e(e.getMessage(),e);
+ } catch (Exception e) {
+ ICLogger.e(e.getMessage(), e);
}
- }else{
+ } else {
ICLogger.i("BP86 format error!");
}
}
//18.18.设置心率/血压阀值(下行协议号:BP89,响应:AP89)
- public static StringMessage AP89(String index){
+ public static StringMessage AP89(String index) {
//设备响应: IWAP89, 080835#
//080835:指令流水号
- return genStringMessage("AP89",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))
+ return genStringMessage("AP89", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89))
.append(CMDSPLIT).append(index)
.append(CMDEND).toString());
}
- public void handleBP89(String cmd,Connection connection){
+ public void handleBP89(String cmd, Connection connection) {
//示例:
//IWBP89, 353456789012345, 080835,50,90,80,90,110,140#
//90: 低压阀值,低压高于该阀值上传血压,如果未设置,则留空
//110: 高压阀值,高压低于该阀值上传血压,如果未设置,则留空
//140: 高压阀值,高压高于该阀值上传血压,如果未设置,则留空
- String[] list=cmd.split(CMDSPLIT);
- if (list.length==9){
- String index=list[2];
- String PPGH=list[3];
- String PPGL=list[4];
- String BPH_H=list[5];
- String BPH_L=list[6];
- String BPL_H=list[7];
- String BPL_L=list[8];
+ String[] list = cmd.split(CMDSPLIT);
+ if (list.length == 9) {
+ String index = list[2];
+ String PPGH = list[3];
+ String PPGL = list[4];
+ String BPH_H = list[5];
+ String BPH_L = list[6];
+ String BPL_H = list[7];
+ String BPL_L = list[8];
connection.send(AP89(index));
- ICLogger.i("收到服务器指令:心率/血压阀值 "+PPGH+","+PPGL+","+BPH_H+","+BPH_L+","+BPL_H+","+BPL_L);
- }else{
+ ICLogger.i("收到服务器指令:心率/血压阀值 " + PPGH + "," + PPGL + "," + BPH_H + "," + BPH_L + "," + BPL_H + "," + BPL_L);
+ } else {
ICLogger.i("BP89 format error!");
}
}
- public static StringMessage AP93(String index){
+ public static StringMessage AP93(String index) {
/***
* 20.发送文字到手环(下行协议号:BP93,响应:AP93)
* 示例:
* 080835: 设备响应的时候带上响应流水号
* 说明: 本消息适用所有终端
*/
- return genStringMessage("AP93",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP93))
+ return genStringMessage("AP93", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP93))
.append(CMDSPLIT).append(index)
.append(CMDEND).toString());
}
- public void handleBP93(Connection connection,Runtime runtime , String cmd){
+ public void handleBP93(Connection connection, Runtime runtime, String cmd) {
/***
* 20.发送文字到手环(下行协议号:BP93,响应:AP93)
* 示例:
* 080835: 设备响应的时候带上响应流水号
* 说明: 本消息适用所有终端
*/
- String[] cmdlist=cmd.split(",");
- if (cmdlist.length == 7){
- String cmdindex=cmdlist[2];
- String msg_index_no=cmdlist[3];
- String txtmsg=cmdlist[4];
- String play_time=cmdlist[5];
- String vib_time=cmdlist[6];
- ICLogger.i("收到服务器文本 "+txtmsg+" 序号 "+msg_index_no+" , 播放 "+play_time+" 次,震动 "+vib_time+" 次!");
- StringBuilder sb=new StringBuilder();
- runtime.PushtxtMsg_srv_index=msg_index_no;//给回复AP94用
+ String[] cmdlist = cmd.split(",");
+ if (cmdlist.length == 7) {
+ String cmdindex = cmdlist[2];
+ String msg_index_no = cmdlist[3];
+ String txtmsg = cmdlist[4];
+ String play_time = cmdlist[5];
+ String vib_time = cmdlist[6];
+ ICLogger.i("收到服务器文本 " + txtmsg + " 序号 " + msg_index_no + " , 播放 " + play_time + " 次,震动 " + vib_time + " 次!");
+ StringBuilder sb = new StringBuilder();
+ runtime.PushtxtMsg_srv_index = msg_index_no;//给回复AP94用
sb.append(cmdindex).append(CMDSPLIT).append(TimeUtil.getSystemTimeyyyyMMddHHmmss()).append(CMDSPLIT).append(txtmsg);
- txtmsg=Util.decodeUnicode2Utf8(txtmsg);
- StringMessage msg=AP93(cmdindex);
+ txtmsg = Util.decodeUnicode2Utf8(txtmsg);
+ StringMessage msg = AP93(cmdindex);
//设定当前工作模式及循环频率
connection.send(msg);
- runtime.PushtxtMsg_srv_index=msg_index_no;//给回复AP94用
- ICLogger.i("received Txt Msg "+txtmsg);
- if(!Config.noPushTxtReadReply) {
+ runtime.PushtxtMsg_srv_index = msg_index_no;//给回复AP94用
+ ICLogger.i("received Txt Msg " + txtmsg);
+ if (!Config.noPushTxtReadReply) {
Config.setLastUnReadMessage(runtime.getContextProxy().context, sb.toString()); //保存未读文档
- runtime.getContextProxy().sendMsgBroadcast(txtmsg,3); //msgType 3需要回复,0不需要回复
- }else{
- runtime.getContextProxy().sendMsgBroadcast(txtmsg,0); //msgType 3需要回复,0不需要回复
+ runtime.getContextProxy().sendMsgBroadcast(txtmsg, 3); //msgType 3需要回复,0不需要回复
+ } else {
+ runtime.getContextProxy().sendMsgBroadcast(txtmsg, 0); //msgType 3需要回复,0不需要回复
}
runtime.getContextProxy().saveMstToSMSDB(txtmsg);
- }else{
+ } else {
ICLogger.i("BP40 format error!");
}
}
- public static StringMessage AP94( ){
+ public static StringMessage AP94() {
/***
* 15确认已读文字(上行协议号:AP94,响应:BP94)
* 示例:
*/
//在UI逻辑中,只要有处理就都是已经阅读。所以不存在取消阅读的说法。
- return genStringMessage(cmdMap.get(CMD_TYPE.AP94),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP94))
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP94), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP94))
.append(CMDSPLIT).append(Runtime.PushtxtMsg_srv_index)
.append(CMDSPLIT).append("1")
.append(CMDEND).toString());
}
- public void handleBP94(){
+ public void handleBP94() {
}
- public static StringMessage APWT(){
+ public static StringMessage APWT() {
- return genStringMessage("APWT",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APWT)).append(CMDEND).toString());
+ return genStringMessage("APWT", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APWT)).append(CMDEND).toString());
}
- public void handleBPWT(Connection connection,Runtime runtime , String cmd) {
+ public void handleBPWT(Connection connection, Runtime runtime, String cmd) {
/**
* 14同步天气(上行协议号:APWT,响应:BPWT)
* 示例:
* 如果未取到天气,则相关栏位留空,注意城市也有可能为空
* 说明: 本消息适用所有终端
*/
- String tmp,City,forecastTime,day1,day2,day3;
- int temp_h_day1,temp_h_day2,temp_h_day3;
- int temp_l_day1,temp_l_day2,temp_l_day3;
- int temp_type_day1,temp_type_day2,temp_type_day3;
- String temp_str_day1,temp_str_day2,temp_str_day3;
+ String tmp, City, forecastTime, day1, day2, day3;
+ int temp_h_day1, temp_h_day2, temp_h_day3;
+ int temp_l_day1, temp_l_day2, temp_l_day3;
+ int temp_type_day1, temp_type_day2, temp_type_day3;
+ String temp_str_day1, temp_str_day2, temp_str_day3;
- temp_h_day1=temp_h_day2=temp_h_day3=0;
- temp_l_day1=temp_l_day2=temp_l_day3=0;
- temp_type_day1=temp_type_day2=temp_type_day3=1;
+ temp_h_day1 = temp_h_day2 = temp_h_day3 = 0;
+ temp_l_day1 = temp_l_day2 = temp_l_day3 = 0;
+ temp_type_day1 = temp_type_day2 = temp_type_day3 = 1;
- String list[]=cmd.split(CMDSPLIT);
+ String list[] = cmd.split(CMDSPLIT);
- if (list.length==18){
+ if (list.length == 18) {
try {
City = Util.decodeUnicode2Utf8(list[1]);
forecastTime = list[2];
day1 = list[3];
tmp = list[4];
- if (Util.isNumeric(tmp.trim().replace("-",""))) {
+ if (Util.isNumeric(tmp.trim().replace("-", ""))) {
temp_h_day1 = Integer.parseInt(tmp);
}
tmp = list[5];
- if (Util.isNumeric(tmp.trim().replace("-",""))) {
+ if (Util.isNumeric(tmp.trim().replace("-", ""))) {
temp_l_day1 = Integer.parseInt(tmp);
}
tmp = list[6];
- if (Util.isNumeric(tmp.trim().replace("-",""))) {
+ if (Util.isNumeric(tmp.trim().replace("-", ""))) {
temp_type_day1 = Integer.parseInt(tmp);
}
- temp_str_day1=Util.decodeUnicode2Utf8(list[7]);
- day2=list[8];
+ temp_str_day1 = Util.decodeUnicode2Utf8(list[7]);
+ day2 = list[8];
tmp = list[9];
- if (Util.isNumeric(tmp.trim().replace("-",""))) {
+ if (Util.isNumeric(tmp.trim().replace("-", ""))) {
temp_h_day2 = Integer.parseInt(tmp);
}
tmp = list[10];
- if (Util.isNumeric(tmp.trim().replace("-",""))) {
+ if (Util.isNumeric(tmp.trim().replace("-", ""))) {
temp_l_day2 = Integer.parseInt(tmp);
}
tmp = list[11];
- if (Util.isNumeric(tmp.trim().replace("-",""))) {
+ if (Util.isNumeric(tmp.trim().replace("-", ""))) {
temp_type_day2 = Integer.parseInt(tmp);
}
- temp_str_day2=Util.decodeUnicode2Utf8(list[12]);
- day3=list[13];
+ temp_str_day2 = Util.decodeUnicode2Utf8(list[12]);
+ day3 = list[13];
tmp = list[14];
- if (Util.isNumeric(tmp.trim().replace("-",""))) {
+ if (Util.isNumeric(tmp.trim().replace("-", ""))) {
temp_h_day3 = Integer.parseInt(tmp);
}
tmp = list[15];
- if (Util.isNumeric(tmp.trim().replace("-",""))) {
+ if (Util.isNumeric(tmp.trim().replace("-", ""))) {
temp_l_day3 = Integer.parseInt(tmp);
}
tmp = list[16];
- if (Util.isNumeric(tmp.trim().replace("-",""))) {
+ if (Util.isNumeric(tmp.trim().replace("-", ""))) {
temp_type_day3 = Integer.parseInt(tmp);
}
- temp_str_day3=Util.decodeUnicode2Utf8(list[17]);
+ temp_str_day3 = Util.decodeUnicode2Utf8(list[17]);
- ICLogger.i("天气预报城市 "+City+", 预报时间 "+forecastTime+",\n第一天 "+day1+", 最高温度 "+temp_h_day1+",最低温度 "+temp_l_day1+",天气类型 "+temp_type_day1+" "+temp_str_day1
- +", \n第二天 "+day2+", 最高温度 "+temp_h_day2+",最低温度 "+temp_l_day2+",天气类型 "+temp_type_day2+" "+temp_str_day2
- +", \n第三天 "+day3+", 最高温度 "+temp_h_day3+",最低温度 "+temp_l_day3+",天气类型 "+temp_type_day3+" "+temp_str_day3 );
- }catch (Exception e){
+ ICLogger.i("天气预报城市 " + City + ", 预报时间 " + forecastTime + ",\n第一天 " + day1 + ", 最高温度 " + temp_h_day1 + ",最低温度 " + temp_l_day1 + ",天气类型 " + temp_type_day1 + " " + temp_str_day1
+ + ", \n第二天 " + day2 + ", 最高温度 " + temp_h_day2 + ",最低温度 " + temp_l_day2 + ",天气类型 " + temp_type_day2 + " " + temp_str_day2
+ + ", \n第三天 " + day3 + ", 最高温度 " + temp_h_day3 + ",最低温度 " + temp_l_day3 + ",天气类型 " + temp_type_day3 + " " + temp_str_day3);
+ } catch (Exception e) {
e.printStackTrace();
- ICLogger.i("BPWT format error!"+e.getMessage());
+ ICLogger.i("BPWT format error!" + e.getMessage());
}
- }else{
+ } else {
ICLogger.i("BPWT format error!");
}
}
- public static StringMessage APLA(String index){
+ public static StringMessage APLA(String index) {
- return genStringMessage("APLA",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APLA))
+ return genStringMessage("APLA", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APLA))
.append(CMDSPLIT).append(index)
.append(CMDEND).toString());
}
- public void handleBPLA(Connection connection, Runtime runtime , String cmd){
+ public void handleBPLA(Connection connection, Runtime runtime, String cmd) {
/***
*IWBPLA,353456789012345,577569,1#
* 说明:
* 080835:指令流水号
*/
- ICLogger.i("received BPLA "+cmd);
- String[] cmdlist=cmd.split(",");
- if (cmdlist.length == 4){
- String cmdindex=cmdlist[2];
- String msg_index_no=cmdlist[3];
- StringMessage msg=APLA(cmdindex);
+ ICLogger.i("received BPLA " + cmd);
+ String[] cmdlist = cmd.split(",");
+ if (cmdlist.length == 4) {
+ String cmdindex = cmdlist[2];
+ String msg_index_no = cmdlist[3];
+ StringMessage msg = APLA(cmdindex);
connection.send(msg);
- LanguageUtils.changeLanguageByIndex(runtime.getContextProxy().context,msg_index_no);
+ LanguageUtils.changeLanguageByIndex(runtime.getContextProxy().context, msg_index_no);
- }else{
+ } else {
ICLogger.i("BPLA format error!");
}
public boolean handleCmd(CMD_TYPE type, String cmd) {
//普通非二进制命令用此函数处理
- boolean ret=true;
- ICLogger.i("handleCmd "+type.name() + " strLen="+cmd.length());
- if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", " recv " + cmd);
- switch (type){
+ boolean ret = true;
+ ICLogger.i("handleCmd " + type.name() + " strLen=" + cmd.length());
+ if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + cmd);
+ switch (type) {
case BP00: //登录包
- handleBP00(mRuntime,cmd);
+ handleBP00(mRuntime, cmd);
ICLogger.i("服务器收到登录包AP00");
- mConnection.DeliverCMDMessageToSystem("login",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("login", cmd);//通知下面线程状态变化
break;
case BP01: //gps定位包
handleBP01(cmd);
ICLogger.i("服务器收到定位AP01");
- mConnection.DeliverCMDMessageToSystem("AP01",cmd);//通知下面线程服务器收到指令
+ mConnection.DeliverCMDMessageToSystem("AP01", cmd);//通知下面线程服务器收到指令
break;
case BP02:// wifi定位包
handleBP02(cmd);
ICLogger.i("服务器收到定位AP02");
- mConnection.DeliverCMDMessageToSystem("AP02",cmd);//通知下面线程服务器收到指令
+ mConnection.DeliverCMDMessageToSystem("AP02", cmd);//通知下面线程服务器收到指令
break;
case BP03: //心跳包
handleBP03(cmd);
ICLogger.i("服务器收到心跳包AP03");
- mConnection.DeliverCMDMessageToSystem("heartbeat",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("heartbeat", cmd);//通知下面线程状态变化
break;
case BP07:
//收到发送的语音包
- handleBP07(cmd,mConnection);
+ handleBP07(cmd, mConnection);
break;
case BP10:
//报警包
- mConnection.DeliverCMDMessageToSystem("AP10",cmd);//通知下面线程服务器收到指令
+ mConnection.DeliverCMDMessageToSystem("AP10", cmd);//通知下面线程服务器收到指令
break;
case BPTM:
//校时命令
handleBPTM(cmd);
ICLogger.i("服务器收到校时命令APTM");
- mConnection.DeliverCMDMessageToSystem("APTM",cmd);//通知下面线程服务器收到指令
+ mConnection.DeliverCMDMessageToSystem("APTM", cmd);//通知下面线程服务器收到指令
break;
case BP85://设置闹钟
- handleBP85(cmd,mConnection,mRuntime);
+ handleBP85(cmd, mConnection, mRuntime);
ICLogger.i("收到服务器设置闹钟命令BP85");
- mConnection.DeliverCMDMessageToSystem("AP85",cmd);//通知下面线程服务器收到指令
+ mConnection.DeliverCMDMessageToSystem("AP85", cmd);//通知下面线程服务器收到指令
break;
case BP33:
//设置工作模式
- handleBP33(mConnection,mRuntime,cmd);
- mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化
+ handleBP33(mConnection, mRuntime, cmd);
+ mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化
break;
case BP34:
//设置工作模式
- handleBP34(mConnection,mRuntime,cmd);
- mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化
+ handleBP34(mConnection, mRuntime, cmd);
+ mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化
break;
case BP16:
//立即定位指令(长链接有效)
- handleBP16(mConnection,mRuntime,cmd);
- mConnection.DeliverCMDMessageToSystem("StartLocate",cmd);//通知下面线程状态变化
+ handleBP16(mConnection, mRuntime, cmd);
+ mConnection.DeliverCMDMessageToSystem("StartLocate", cmd);//通知下面线程状态变化
break;
// case BP05: //L02服务器不适用
case BP12:
//收到设置SOS号码
- handleBP12(mConnection,cmd,mRuntime);
+ handleBP12(mConnection, cmd, mRuntime);
ICLogger.i("收到服务器设置SOS号码命令BP12");
break;
case BP14:
//收到设置白名单号码
- handleBP14(mConnection,cmd,mRuntime);
+ handleBP14(mConnection, cmd, mRuntime);
ICLogger.i("收到服务器设置白名单号码命令BP14");
break;
case BP15:
- handleBP15(cmd,mConnection,mRuntime);
+ handleBP15(cmd, mConnection, mRuntime);
ICLogger.i("收到服务器设置定位命令BP15");
break;
case BP17:
//收到恢复出厂设置
- handleBP17(mConnection,cmd);
+ handleBP17(mConnection, cmd);
ICLogger.i("收到服务器恢复出厂设置命令BP17");
- mConnection.DeliverCMDMessageToSystem("FactoryReset",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("FactoryReset", cmd);//通知下面线程状态变化
break;
case BP18:
//收到重启
- handleBP18(mConnection,cmd);
+ handleBP18(mConnection, cmd);
ICLogger.i("收到服务器重启命令BP18");
- mConnection.DeliverCMDMessageToSystem("Reboot",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("Reboot", cmd);//通知下面线程状态变化
break;
case BP31:
//收到关机
- handleBP31(mConnection,cmd);
+ handleBP31(mConnection, cmd);
ICLogger.i("收到服务器关机命令BP31");
- mConnection.DeliverCMDMessageToSystem("poweroff",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("poweroff", cmd);//通知下面线程状态变化
break;
case BPXL:
- handleBPXL(cmd,mConnection);
+ handleBPXL(cmd, mConnection);
ICLogger.i("收到服务器心率检测命令");
- if(mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest();
+ if (mRuntime.check_stat_do_ppg_test())
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
break;
case BPXY:
- handleBPXY(cmd,mConnection);
+ handleBPXY(cmd, mConnection);
ICLogger.i("收到服务器血压检测命令");
- if(mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest();
+ if (mRuntime.check_stat_do_ppg_test())
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
break;
case BPJZ:
- handleBPJZ(cmd,mConnection,mRuntime);
+ handleBPJZ(cmd, mConnection, mRuntime);
ICLogger.i("收到服务器血压校准命令");
break;
case BPHT:
ICLogger.i("服务器收到上传的心率血压APHT");
- mConnection.DeliverCMDMessageToSystem("APHT",cmd);//通知下面线程服务器收到指令
+ mConnection.DeliverCMDMessageToSystem("APHT", cmd);//通知下面线程服务器收到指令
break;
case BPHP:
ICLogger.i("服务器收到上传的心率血压血氧APHP");
- mConnection.DeliverCMDMessageToSystem("APHP",cmd);//通知下面线程服务器收到指令
+ mConnection.DeliverCMDMessageToSystem("APHP", cmd);//通知下面线程服务器收到指令
break;
case BP50:
ICLogger.i("服务器收到体温AP50");
- mConnection.DeliverCMDMessageToSystem("AP50",cmd);//通知下面线程服务器收到指令
+ mConnection.DeliverCMDMessageToSystem("AP50", cmd);//通知下面线程服务器收到指令
break;
case BP84:
- handleBP84(cmd,mConnection);
+ handleBP84(cmd, mConnection);
ICLogger.i("收到服务器白名单命令");
break;
case BP86:
//心率血压周期设置
- handleBP86(cmd,mConnection,mRuntime);
+ handleBP86(cmd, mConnection, mRuntime);
break;
case BP89:
//心率/血压阀值
- handleBP89(cmd,mConnection);
+ handleBP89(cmd, mConnection);
break;
case BP94:
handleBP94();
- mConnection.DeliverCMDMessageToSystem("AP94",cmd);//通知下面线程状态变化
+ mConnection.DeliverCMDMessageToSystem("AP94", cmd);//通知下面线程状态变化
break;
case BP93:
//服务器下发文版
- handleBP93(mConnection,mRuntime,cmd);
+ handleBP93(mConnection, mRuntime, cmd);
break;
case BPWT:
//心率/血压阀值
- handleBPWT(mConnection,mRuntime,cmd);
+ handleBPWT(mConnection, mRuntime, cmd);
break;
case BPLA:
//changeLaunguag
- handleBPLA(mConnection,mRuntime,cmd);
+ handleBPLA(mConnection, mRuntime, cmd);
break;
}
//只有需要传递二级制数据的才需要这个函数,目前只有BP28需要
- boolean ret=true;
- ICLogger.i("handleCmd "+type.name() + " "+cmd+" bytelen="+bytes.length );
- if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " +new String(bytes));
+ boolean ret = true;
+ ICLogger.i("handleCmd " + type.name() + " " + cmd + " bytelen=" + bytes.length);
+ if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + new String(bytes));
switch (type) {
case BP28:
- handleBP28(mConnection,cmd, mRuntime,bytes);
+ handleBP28(mConnection, cmd, mRuntime, bytes);
ICLogger.i("收到服务器语音BP28");
mConnection.DeliverCMDMessageToSystem("BP28", "");//通知下面线程状态变化
break;
import java.util.HashMap;
import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;
+import static com.enqualcomm.support.Constants.FROM_SERVER;
import static com.enqualcomm.support.LocationClient.LOCATION_MODE;
import static java.lang.Math.abs;
public void handleWdstart(Connection connection, Runtime runtime, String data) {
-/***
- * 设置体温上传频率(wdstart)
- * 平台向“WBG100/v1/ID_手表IMEI/wdstart”的主题发布 [LEN, x]
- * x 为上传间隔时间,单位秒,连续上传时最小时间不小于300 秒,最大不超过65535.
- * x 为1 则代表终端心率单次上传,上传完后自动关闭。
- * x 为0 则代表终端心率上传关闭。
- * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为wdstart
- *
- * 终端发布(平台订阅):
- * 终端收到数据,向“WBG100/v1/ID_手表IMEI/ wdstart”的主题发布回应
- * [LEN,区域id]
- */
+ /***
+ * 设置体温上传频率(wdstart)
+ * 平台向“WBG100/v1/ID_手表IMEI/wdstart”的主题发布 [LEN, x]
+ * x 为上传间隔时间,单位秒,连续上传时最小时间不小于300 秒,最大不超过65535.
+ * x 为1 则代表终端心率单次上传,上传完后自动关闭。
+ * x 为0 则代表终端心率上传关闭。
+ * 终端订阅“WBG100/v1/ID_手表IMEI/+”的主题列表,判断子主题是否为wdstart
+ *
+ * 终端发布(平台订阅):
+ * 终端收到数据,向“WBG100/v1/ID_手表IMEI/ wdstart”的主题发布回应
+ * [LEN,区域id]
+ */
connection.send(wdstart(runtime));
String[] list = data.split(CMDSPLIT);
if (list.length == 2) {
Config.setTemperatureTestCycle(runtime, cycle_int);
CoreService.getInstance().setTempAlarm();
- if (runtime.check_stat_do_temp_test()) TemperatureUtil.doTempTestInThread();
+ if (runtime.check_stat_do_temp_test())
+ TemperatureUtil.getInstance().doTempTestInThread(FROM_SERVER);
} catch (Exception e) {
ICLogger.e(e.getMessage(), e);
}
case hrtstart:
handleHrtstart(mConnection, mRuntime, data);
ICLogger.i("收到服务器心率检测命令");
- if (mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest();
+ if (mRuntime.check_stat_do_ppg_test())
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
break;
case wdstart:
break;
case blood:
ICLogger.i("服务器收到上传的血压");
- mConnection.DeliverCMDMessageToSystem("blood", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ //通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("blood", cmd);
break;
case oxygen:
ICLogger.i("服务器收到上传的血氧");
- mConnection.DeliverCMDMessageToSystem("oxygen", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ //通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("oxygen", cmd);
break;
case temp:
ICLogger.i("服务器收到上传的体温");
- mConnection.DeliverCMDMessageToSystem("temp", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ //通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("temp", cmd);
break;
case heart:
ICLogger.i("服务器收到上传的心率heart");
- mConnection.DeliverCMDMessageToSystem("heart", cmd);//通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ //通知下面线程状态变化,用Deliver发送的话必须发,表示服务器响应了
+ mConnection.DeliverCMDMessageToSystem("heart", cmd);
break;
// case BP84:
// handleBP84(cmd,mConnection);
--- /dev/null
+package com.ic.work.domain;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class HeartRate implements Parcelable {
+ //From,有时候是用户测试,主动通知服务器的
+ private int from;
+ //血压高值
+ private int bloodHeight;
+ //血压低值
+ private int bloodLow;
+ //心跳
+ private int heartRate;
+ //血氧值
+ private int oxygen;
+
+ public HeartRate(int bloodHeight, int bloodLow, int heartRate, int oxygen) {
+ this.bloodHeight = bloodHeight;
+ this.bloodLow = bloodLow;
+ this.heartRate = heartRate;
+ this.oxygen = oxygen;
+ }
+
+ public int getFrom() {
+ return from;
+ }
+
+ public void setFrom(int from) {
+ this.from = from;
+ }
+
+ public int getBloodHeight() {
+ return bloodHeight;
+ }
+
+ public void setBloodHeight(int bloodHeight) {
+ this.bloodHeight = bloodHeight;
+ }
+
+ public int getBloodLow() {
+ return bloodLow;
+ }
+
+ public void setBloodLow(int bloodLow) {
+ this.bloodLow = bloodLow;
+ }
+
+ public int getHeartRate() {
+ return heartRate;
+ }
+
+ public void setHeartRate(int heartRate) {
+ this.heartRate = heartRate;
+ }
+
+ public int getOxygen() {
+ return oxygen;
+ }
+
+ public void setOxygen(int oxygen) {
+ this.oxygen = oxygen;
+ }
+
+ public static Creator<HeartRate> getCREATOR() {
+ return CREATOR;
+ }
+
+ protected HeartRate(Parcel in) {
+ from = in.readInt();
+ bloodHeight = in.readInt();
+ bloodLow = in.readInt();
+ heartRate = in.readInt();
+ oxygen = in.readInt();
+ }
+
+ public static final Creator<HeartRate> CREATOR = new Creator<HeartRate>() {
+ @Override
+ public HeartRate createFromParcel(Parcel in) {
+ return new HeartRate(in);
+ }
+
+ @Override
+ public HeartRate[] newArray(int size) {
+ return new HeartRate[size];
+ }
+ };
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(from);
+ dest.writeInt(bloodHeight);
+ dest.writeInt(bloodLow);
+ dest.writeInt(heartRate);
+ dest.writeInt(oxygen);
+ }
+
+ @Override
+ public String toString() {
+ return "HeartRate{" +
+ "from=" + from +
+ ", bloodHeight=" + bloodHeight +
+ ", bloodLow=" + bloodLow +
+ ", heartRate=" + heartRate +
+ ", oxygen=" + oxygen +
+ '}';
+ }
+}
--- /dev/null
+package com.ic.work.domain;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * bean类:体温,腕温,环境温度
+ */
+public class Temperature implements Parcelable {
+ private double bodyTemp;
+ private double wristTemp;
+ private double envTemp;
+
+
+ public Temperature(double bodyTemp, double wristTemp, double envTemp) {
+ this.bodyTemp = bodyTemp;
+ this.wristTemp = wristTemp;
+ this.envTemp = envTemp;
+ }
+
+ protected Temperature(Parcel in) {
+ bodyTemp = in.readFloat();
+ wristTemp = in.readFloat();
+ envTemp = in.readFloat();
+ }
+
+ public static final Creator<Temperature> CREATOR = new Creator<Temperature>() {
+ @Override
+ public Temperature createFromParcel(Parcel in) {
+ return new Temperature(in);
+ }
+
+ @Override
+ public Temperature[] newArray(int size) {
+ return new Temperature[size];
+ }
+ };
+
+ public double getBodyTemp() {
+ return bodyTemp;
+ }
+
+ public void setBodyTemp(float bodyTemp) {
+ this.bodyTemp = bodyTemp;
+ }
+
+ public double getWristTemp() {
+ return wristTemp;
+ }
+
+ public void setWristTemp(float wristTemp) {
+ this.wristTemp = wristTemp;
+ }
+
+ public double getEnvTemp() {
+ return envTemp;
+ }
+
+ public void setEnvTemp(float envTemp) {
+ this.envTemp = envTemp;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeDouble(bodyTemp);
+ dest.writeDouble(wristTemp);
+ dest.writeDouble(envTemp);
+ }
+
+ @Override
+ public String toString() {
+ return "Temperature{" +
+ "bodyTemp=" + bodyTemp +
+ ", wristTemp=" + wristTemp +
+ ", envTemp=" + envTemp +
+ '}';
+ }
+}
### Acknowledgements
-Based on the work by [Andreas Göransson](https://github.com/agoransson) and [David Cuartielles](https://github.com/dcuartielles) in the book ["Professional Android Open Accessory programming with Arduino"](https://github.com/aoabook) and later [mqtt4processing](https://github.com/agoransson/mqtt4processing) and [mqtt4android](https://github.com/agoransson/mqtt4android).
+Based on the com.ic.work by [Andreas Göransson](https://github.com/agoransson) and [David Cuartielles](https://github.com/dcuartielles) in the book ["Professional Android Open Accessory programming with Arduino"](https://github.com/aoabook) and later [mqtt4processing](https://github.com/agoransson/mqtt4processing) and [mqtt4android](https://github.com/agoransson/mqtt4android).
# For customization when using a Version Control System, please read the
# header note.
#Tue Dec 29 14:56:41 CST 2020
-sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk
+sdk.dir=D\:\\Android\\Sdk
instanceKlass com/google/wireless/android/sdk/stats/LintActionOrBuilder\r
instanceKlass com/google/wireless/android/sdk/stats/OomDialogEventOrBuilder\r
instanceKlass com/google/wireless/android/sdk/stats/JniInspectionEventOrBuilder\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$1\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$1\r
instanceKlass com/google/wireless/android/sdk/stats/CMakeEditingEventOrBuilder\r
instanceKlass com/google/wireless/android/sdk/stats/DataBindingEventOrBuilder\r
instanceKlass com/google/wireless/android/sdk/stats/UserSentimentOrBuilder\r
instanceKlass com/android/tools/r8/DiagnosticsHandler\r
instanceKlass com/android/builder/multidex/D8MainDexList\r
instanceKlass com/android/build/gradle/internal/tasks/D8MainDexListTaskKt\r
-instanceKlass org/gradle/internal/work/DefaultAsyncWorkTracker$2\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultAsyncWorkTracker$2\r
instanceKlass com/google/common/collect/ImmutableSet$SerializedForm\r
instanceKlass com/android/build/gradle/internal/tasks/D8MainDexListTask$MainDexListRunnable$Params\r
instanceKlass com/android/build/gradle/internal/tasks/D8MainDexListTask$MainDexListRunnable\r
instanceKlass org/gradle/workers/internal/AbstractWorker$Work\r
instanceKlass org/gradle/workers/internal/AbstractWorker\r
instanceKlass org/gradle/workers/internal/DefaultWorkerExecutor$3\r
-instanceKlass org/gradle/internal/work/DefaultConditionalExecutionQueue$ExecutionRunner$1\r
-instanceKlass org/gradle/internal/work/DefaultAsyncWorkTracker$1\r
-instanceKlass org/gradle/internal/work/DefaultConditionalExecutionQueue$ExecutionRunner\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultConditionalExecutionQueue$ExecutionRunner$1\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultAsyncWorkTracker$1\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultConditionalExecutionQueue$ExecutionRunner\r
instanceKlass org/gradle/workers/internal/DefaultWorkerExecutor$LazyChildWorkerLeaseLock\r
instanceKlass org/gradle/workers/internal/DefaultWorkerExecutor$1\r
-instanceKlass org/gradle/internal/work/AbstractConditionalExecution\r
+instanceKlass org/gradle/internal/com.ic.work/AbstractConditionalExecution\r
instanceKlass org/gradle/process/internal/DefaultExecActionFactory$ImmutableJavaForkOptions\r
instanceKlass org/gradle/workers/internal/DaemonForkOptionsBuilder\r
instanceKlass org/gradle/workers/internal/DefaultWorkerExecutor$2\r
instanceKlass com/android/build/gradle/internal/api/artifact/BuildableArtifactUtil\r
instanceKlass com/android/build/gradle/internal/tasks/IncrementalTask$taskAction$$inlined$recordTaskAction$1\r
instanceKlass org/gradle/internal/execution/history/changes/NonIncrementalInputChanges$$Lambda$360\r
-instanceKlass org/gradle/work/FileChange\r
+instanceKlass org/gradle/com.ic.work/FileChange\r
instanceKlass org/gradle/internal/execution/history/changes/NonIncrementalInputChanges\r
instanceKlass com/android/build/gradle/tasks/ProcessApplicationManifest$$Lambda$359\r
instanceKlass com/android/build/gradle/tasks/ProcessApplicationManifest$$Lambda$358\r
instanceKlass com/android/build/gradle/tasks/ProcessLibraryManifest$CreationAction$$Lambda$240\r
instanceKlass com/android/build/gradle/tasks/ProcessLibraryManifest$CreationAction$$Lambda$239\r
instanceKlass com/android/build/gradle/internal/tasks/Workers$WorkerExecutorAdapter\r
-instanceKlass org/gradle/internal/work/DefaultConditionalExecutionQueue\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultConditionalExecutionQueue\r
instanceKlass org/gradle/workers/internal/DaemonForkOptions\r
-instanceKlass org/gradle/internal/work/AsyncWorkCompletion\r
-instanceKlass org/gradle/internal/work/ConditionalExecution\r
+instanceKlass org/gradle/internal/com.ic.work/AsyncWorkCompletion\r
+instanceKlass org/gradle/internal/com.ic.work/ConditionalExecution\r
instanceKlass org/gradle/workers/internal/ActionExecutionSpec\r
instanceKlass org/gradle/workers/WorkerConfiguration\r
instanceKlass org/gradle/workers/internal/DefaultWorkerExecutor\r
instanceKlass org/gradle/workers/internal/NoIsolationWorkerFactory\r
-instanceKlass org/gradle/internal/work/DefaultConditionalExecutionQueueFactory\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultConditionalExecutionQueueFactory\r
instanceKlass org/gradle/process/internal/worker/child/DefaultWorkerDirectoryProvider\r
-instanceKlass org/gradle/internal/work/DefaultAsyncWorkTracker\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultAsyncWorkTracker\r
instanceKlass org/gradle/api/internal/classloading/NoOpGroovySystemLoader\r
instanceKlass org/gradle/api/internal/classloading/GroovySystemLoader\r
instanceKlass org/gradle/api/internal/classloading/GroovySystemLoaderFactory\r
instanceKlass com/android/build/gradle/internal/publishing/AndroidArtifacts\r
instanceKlass com/android/build/gradle/internal/VariantManager$$Lambda$100\r
instanceKlass org/gradle/api/internal/artifacts/transform/TransformationStep$1\r
-instanceKlass org/gradle/work/InputChanges\r
+instanceKlass org/gradle/com.ic.work/InputChanges\r
instanceKlass org/gradle/internal/instantiation/DependencyInjectingInstantiator$1\r
instanceKlass org/gradle/api/internal/tasks/properties/FileParameterUtils\r
instanceKlass org/gradle/api/internal/tasks/properties/ValidationAction\r
instanceKlass org/gradle/api/internal/project/taskfactory/TaskFactory$1\r
instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainer$1\r
instanceKlass org/codehaus/groovy/runtime/ScriptBytecodeAdapter\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$5$1\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$5\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$5$1\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$5\r
instanceKlass org/gradle/api/internal/project/DefaultProjectStateRegistry$ProjectStateImpl$1\r
instanceKlass org/gradle/configuration/internal/DefaultListenerBuildOperationDecorator$BuildOperationEmittingInvocationHandler\r
instanceKlass org/gradle/configuration/internal/DefaultListenerBuildOperationDecorator$1\r
instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$2$1$1\r
instanceKlass org/gradle/api/internal/DefaultMutationGuard$2\r
instanceKlass org/gradle/api/internal/project/BuildOperationCrossProjectConfigurator$CrossConfigureProjectBuildOperation\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$2\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$2\r
instanceKlass org/gradle/api/internal/project/BuildOperationCrossProjectConfigurator$2\r
instanceKlass org/gradle/api/internal/project/BuildOperationCrossProjectConfigurator$BlockConfigureBuildOperation\r
instanceKlass org/gradle/initialization/NotifyingBuildLoader$3$1\r
instanceKlass com/google/common/base/Equivalence$Wrapper\r
instanceKlass org/gradle/internal/reflect/Methods\r
instanceKlass org/gradle/internal/reflect/PropertyExtractor\r
-instanceKlass org/gradle/work/Incremental\r
+instanceKlass org/gradle/com.ic.work/Incremental\r
instanceKlass org/gradle/api/tasks/PathSensitive\r
instanceKlass org/gradle/api/tasks/SkipWhenEmpty\r
instanceKlass org/gradle/api/tasks/Optional\r
instanceKlass com/google/common/collect/AbstractMapBasedMultimap$KeySet$1\r
instanceKlass com/google/common/collect/CompactHashMap$Itr\r
instanceKlass org/gradle/internal/Pair\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$ProjectLockRegistry$1\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$ProjectLockRegistry$1\r
instanceKlass org/gradle/api/internal/project/DefaultProjectStateRegistry$ProjectStateImpl\r
instanceKlass org/gradle/api/internal/artifacts/DefaultProjectComponentIdentifier\r
instanceKlass org/gradle/initialization/AbstractProjectSpec\r
instanceKlass org/gradle/internal/Actions\r
instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$2$1\r
instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService$AcquireLocks\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$3\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$3\r
instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService$2\r
instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService$DefaultResourceLockState\r
instanceKlass org/gradle/internal/resources/ResourceLockState\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$4\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$4\r
instanceKlass com/google/common/collect/Iterables\r
instanceKlass org/gradle/internal/invocation/GradleBuildController$3\r
instanceKlass org/gradle/internal/resources/AbstractTrackedResourceLock\r
-instanceKlass org/gradle/internal/work/WorkerLeaseRegistry$WorkerLeaseCompletion\r
+instanceKlass org/gradle/internal/com.ic.work/WorkerLeaseRegistry$WorkerLeaseCompletion\r
instanceKlass org/gradle/internal/resources/AbstractResourceLockRegistry$3\r
instanceKlass org/gradle/internal/resources/AbstractResourceLockRegistry$2\r
instanceKlass org/gradle/internal/resources/AbstractResourceLockRegistry$1\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$WorkerLeaseLockRegistry$1\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$WorkerLeaseLockRegistry$1\r
instanceKlass org/gradle/internal/invocation/GradleBuildController$1\r
instanceKlass org/gradle/util/GradleVersion\r
instanceKlass com/google/common/base/Preconditions\r
instanceKlass org/gradle/api/internal/initialization/DefaultScriptHandlerFactory\r
instanceKlass org/gradle/workers/internal/DefaultWorkResult\r
instanceKlass org/gradle/api/tasks/WorkResult\r
-instanceKlass org/gradle/internal/work/ConditionalExecutionQueue\r
+instanceKlass org/gradle/internal/com.ic.work/ConditionalExecutionQueue\r
instanceKlass org/gradle/groovy/scripts/ScriptRunner\r
instanceKlass org/gradle/groovy/scripts/internal/DefaultScriptRunnerFactory\r
instanceKlass org/gradle/groovy/scripts/internal/BuildScopeInMemoryCachingScriptClassCompiler\r
instanceKlass org/gradle/internal/resources/AbstractResourceLockRegistry$ResourceLockProducer\r
instanceKlass org/gradle/internal/resources/AbstractResourceLockRegistry\r
instanceKlass org/gradle/internal/resources/ResourceLockRegistry\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$ProjectLockStatisticsImpl\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$ProjectLockStatisticsImpl\r
instanceKlass org/gradle/internal/resources/ProjectLockStatistics\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$Root\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$LeaseHolder\r
-instanceKlass org/gradle/internal/work/WorkerLeaseRegistry$WorkerLease\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$Root\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService$LeaseHolder\r
+instanceKlass org/gradle/internal/com.ic.work/WorkerLeaseRegistry$WorkerLease\r
instanceKlass org/gradle/internal/resources/ResourceLock\r
-instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultWorkerLeaseService\r
instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService\r
-instanceKlass org/gradle/internal/work/StopShieldingWorkerLeaseService\r
+instanceKlass org/gradle/internal/com.ic.work/StopShieldingWorkerLeaseService\r
instanceKlass org/gradle/composite/internal/DefaultBuildableCompositeBuildContext\r
instanceKlass com/google/common/collect/ListMultimap\r
instanceKlass org/gradle/plugins/ide/internal/IdeArtifactStore\r
instanceKlass org/gradle/workers/internal/IsolatedClassloaderWorkerFactory\r
instanceKlass org/gradle/workers/internal/WorkerDaemonFactory\r
instanceKlass org/gradle/workers/internal/WorkerFactory\r
-instanceKlass org/gradle/internal/work/ConditionalExecutionQueueFactory\r
+instanceKlass org/gradle/internal/com.ic.work/ConditionalExecutionQueueFactory\r
instanceKlass org/gradle/process/internal/worker/child/WorkerDirectoryProvider\r
instanceKlass org/gradle/workers/internal/WorkersServices$BuildSessionScopeServices\r
instanceKlass org/gradle/internal/service/scopes/BuildSessionScopeServices$1\r
instanceKlass org/gradle/internal/filewatch/PendingChangesManager\r
instanceKlass org/gradle/internal/fingerprint/FileCollectionFingerprinterRegistry\r
instanceKlass org/gradle/internal/fingerprint/classpath/CompileClasspathFingerprinter\r
-instanceKlass org/gradle/internal/work/AsyncWorkTracker\r
+instanceKlass org/gradle/internal/com.ic.work/AsyncWorkTracker\r
instanceKlass org/gradle/api/internal/project/CrossProjectConfigurator\r
instanceKlass org/gradle/internal/operations/logging/LoggingBuildOperationProgressBroadcaster\r
instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$3\r
instanceKlass org/gradle/internal/operations/BuildOperationQueueFactory\r
instanceKlass org/gradle/configuration/internal/UserCodeApplicationContext\r
instanceKlass org/gradle/initialization/GradleLauncherFactory\r
-instanceKlass org/gradle/internal/work/WorkerLeaseService\r
+instanceKlass org/gradle/internal/com.ic.work/WorkerLeaseService\r
instanceKlass org/gradle/internal/resources/ProjectLeaseRegistry\r
-instanceKlass org/gradle/internal/work/WorkerLeaseRegistry\r
+instanceKlass org/gradle/internal/com.ic.work/WorkerLeaseRegistry\r
instanceKlass org/gradle/internal/operations/BuildOperationExecutor\r
instanceKlass org/gradle/internal/service/scopes/CrossBuildSessionScopeServices\r
instanceKlass org/gradle/internal/service/scopes/DefaultGradleUserHomeScopeServiceRegistry$Services\r
instanceKlass org/gradle/internal/typeconversion/TypeConversionException\r
instanceKlass com/google/common/util/concurrent/UncheckedExecutionException\r
instanceKlass com/google/common/cache/CacheLoader$InvalidCacheLoadException\r
-instanceKlass org/gradle/internal/work/NoAvailableWorkerLeaseException\r
+instanceKlass org/gradle/internal/com.ic.work/NoAvailableWorkerLeaseException\r
instanceKlass org/gradle/launcher/daemon/server/BadlyFormedRequestException\r
instanceKlass org/gradle/internal/remote/internal/MessageIOException\r
instanceKlass org/gradle/cache/InsufficientLockModeException\r
instanceKlass java/nio/file/AccessMode\r
instanceKlass com/google/common/collect/Iterators$EmptyModifiableIterator\r
instanceKlass com/google/common/collect/MultimapBuilder$LinkedListSupplier\r
-instanceKlass org/gradle/work/ChangeType\r
+instanceKlass org/gradle/com.ic.work/ChangeType\r
instanceKlass org/gradle/internal/change/ChangeTypeInternal\r
instanceKlass com/android/ide/common/xml/XmlFormatStyle\r
instanceKlass com/android/ide/common/xml/XmlAttributeSortOrder\r
instanceKlass groovy/lang/MetaClassImpl$InvokeMethodResult\r
instanceKlass com/google/wireless/android/sdk/stats/GradleBuildProject$GradlePlugin\r
instanceKlass com/android/ide/common/resources/FileValidity$FileStatus\r
-instanceKlass org/gradle/internal/work/DefaultConditionalExecutionQueue$QueueState\r
+instanceKlass org/gradle/internal/com.ic.work/DefaultConditionalExecutionQueue$QueueState\r
instanceKlass org/gradle/workers/IsolationMode\r
instanceKlass org/gradle/external/javadoc/JavadocOutputLevel\r
instanceKlass org/gradle/api/tasks/bundling/ZipEntryCompression\r