From: kfl_614 Date: Fri, 4 Dec 2020 07:33:31 +0000 (+0800) Subject: add voice stream log. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=9d457b568392b13fa5ddecbc9504db86aaad7bcb;p=protocol_srv.git add voice stream log. --- diff --git a/app/src/main/java/com/enqualcomm/support/Constants.java b/app/src/main/java/com/enqualcomm/support/Constants.java index 72efe0f9..69cc2ed6 100644 --- a/app/src/main/java/com/enqualcomm/support/Constants.java +++ b/app/src/main/java/com/enqualcomm/support/Constants.java @@ -4,375 +4,374 @@ import android.net.Uri; 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_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 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 KeyReplyData="reply"; - - 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.enqualcomm.support.ACTION_WEATHER_ALARM"; - - 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 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"; + String ACTION_LED = "com.enqualcomm.support.ACTION_LED"; -/** - * PreferenceManager.getDefaultSharedPreferences(context) , package name "com.enqualcomm.support" - */ + 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 用于 设置久坐时长分钟为单位 - */ + String ACTION_PLAYTIME = "com.ic.action.playtime"; + + String ACTION_BROADCAST_PPG = "com.enqualcomm.support.ACTION_BROADCAST_PPG"; + String ACTION_ADDTEST_CONTACTS = "com.enqualcomm.imessage.ACTION_ADDTEST_CONTACTS"; + + String ACTION_ALARM_ADD_DATAPOINTS = "com.enqualcomm.support.ADD_DATAPOINTS"; + + String ACTION_ALARM_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE"; + + String ACTION_ANTIOFF_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE"; + + String ACTION_AT_CALLBACK = "com.eqc.intent.action.callback.at"; + + String ACTION_BATTERY_LOW_MSG = "com.enqualcomm.support.lowbatteryMsg"; + + String ACTION_CALL_CMCM_SERVICE_INTERFACE = "com.cmcm.interface"; + + String ACTION_CALL_RING = "com.enqualcomm.support.phone.ring"; + + String ACTION_CARE_ALARM = "com.enqualcomm.support.ACTION_CARE_ALARM"; + + String ACTION_CLOSE_UNREAD_MSG = "com.enqualcomm.support.CloseUnreadMsg"; + + String ACTION_CM_POWERSAVE_MODE = "cmcm.call.eiot.into.powersave"; + + String ACTION_EQC_ALARM = "com.enqualcomm.support.ACTION_EQC_ALARM"; + + String ACTION_LOCATION_ALARM = "com.enqualcomm.support.ACTION_LOCATION_ALARM"; + + String ACTION_EXIT_MONITOR_MODE = "com.enqualcomm.support.MONITOR_EXIT"; + + String ACTION_HEART_RATE_RESULT = "com.eqc.heartrate.action.RESULT"; + + String ACTION_HEATR_RATE_START = "com.eqc.heartrate.action.SILENT_START"; + String ACTION_CHECK_ANTIOFF_EVENT = "com.ic.action.CHECK_ANTIOFF_EVENT"; + + String ACTION_IMESSAGE = "action.message"; + + String ACTION_ISCONNECTED = "com.ic.protocol.ACTION_IS_SERVER_CONNECTED"; + + String ACTION_ISSILENCE = "com.enqualcomm.icare.ACTION_ISSILENCE"; + + String ACTION_ISSILENCE2IMESSAGE = "com.enqualcomm.support.ACTION_ISSILENCE2IMESSAGE"; + + String ACTION_MISSED_CALL_GET = "com.enqualcomm.support.ACTION_MISSED_CALL_GET"; + + String ACTION_NOTICE_ALARM = "com.enqualcomm.support.ACTION_NOTICE_ALARM"; + + String ACTION_NOTICE_ALARM_CHANGE = "com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE"; + + String ACTION_PASS_DATA_TO_CM_SERVICES = "com.enqualcomm.support.PASS_DATA"; + + String ACTION_REMOTE_CAMERA = "com.enqualcomm.support.ACTION_REMOTE_CAMERA"; + + String ACTION_REMOTE_CAMERA_OSS = "com.enqualcomm.support.ACTION_REMOTE_CAMERA_OSS"; + + String ACTION_RESTORE_SYSTEM = "android.intent.action.MASTER_CLEAR"; + + String ACTION_SCANPAIRMESSAGE = "com.enqualcomm.imessage.scanPairMessage"; + + String ACTION_SEDN_VIDOE_CALL_REQ = "com.enqualcomm.imessage.sendVideoCall"; + + String ACTION_SEND_SOS_MSG = "com.enqualcomm.support.action_send_sos"; + + String ACTION_SEND_EMEGENCY_LOCATION_START = "action.emegency.location.start"; + String ACTION_SEND_EMEGENCY_LOCATION_STOP = "action.emegency.location.stop"; + String ACTION_LOCAL_SOS_ACTION = "com.enqualcomm.support.local_sos"; + + String ACTION_SEND_SOS_VIDEO_FILE = "com.enqualcomm.support.action_send_sos_video_file"; + + String ACTION_SEND_VIDEO_FILES = "com.enqualcomm.support.ACTION_SEND_VIDEO_FILES"; + + String ACTION_SHUTDOWN_MOREINFO = "android.intent.action.ACTION_SHUTDOWN_MOREINFO"; + + String ACTION_SOS_VIDEO_CHAT = "com.enqualcomm.imessage.ACTION_SOS_VIDEO_CHAT"; + + String ACTION_START_DOWNLOAD = "com.enqualcomm.imessage.START_DOWNLOAD_ACTION"; + + String ACTION_STHEART_RATE_ALARM_CHANGE = "com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE"; + + String ACTION_SYNC = "SYNC"; + + String ACTION_UNBOUND_TERMINAL = "com.enqualcomm.support.ACTION_UNBOUND_TERMINAL"; + + String ACTION_UPDATE_ICON = "com.enqualcomm.support.ACTION_UPDATE_ICON"; + + String ACTION_UPDATE_SECRET_KEY = "com.enqualcomm.support.UPDATE_SECRET_KEY"; + + String ACTION_VIDEO_END_CALL = "com.enqualcomm.support.ACTION_VIDEO_END_CALL"; + + String ACTION_VIDEO_LOGIN = "com.enqualcomm.imessage.ACTION_VIDEO_LOGIN"; + + String ACTION_VIDEO_LOGOUT = "com.enqualcomm.imessage.ACTION_VIDEO_LOGOUT"; + + String ACTION_VIDEO_RECEIVE_LOGIN = "com.enqualcomm.imessage.ACTION_VIDEO_RECEIVE_LOGIN"; + + String ACTION_WAKEUP_ALARM = "com.eqc.deliverWakeupAlarm.action"; + + String ACTION_YUN_ALARM_CHANGE = "com.eqc.deskclock.YUN_ALARM_CHANGE"; + + int ALARM_UPDATE_NOTICE = 206; + + int CALL_RECORD_CHANGED = 103; + + String CMD_ID_CM = "cmdId"; + + Uri CONTACT_URI = Uri.parse("content://com.enqualcomm.support/contact"); + + Uri CM_SERVICE_SETTING = Uri.parse("content://com.cmcm.service/cmsetting"); + + String DIALOG_ACTION = "com.enqualcomm.support.DIALOG"; + + int ENTER_SILENT_MODE = 212; + + int EXIT_SILENT_MODE = 213; + + String FLAG = "flag"; + + String ANTI_ALARM = "com.enqualcomm.support.ANTI_ALARM"; + String TEMP_ALARM = "com.enqualcomm.support.TEMP_ALARM"; + String HEART_ALARM = "com.enqualcomm.support.HEART_ALARM"; + + int IDLE_MODE_CHANGED = 102; + + int INIT_SERVER_OK = 216; + + int IN_SILENCE = 600; + + boolean IS_OVERSEAS = false; + + int JUFENG_SDK_INIT = 215; + + String KEY_CATEGORY = "category"; + + String KEY_COMPANY = "KEY_COMPANY"; + + String KEY_CONTACT_ID = "contact_id"; + + String KEY_DELETE_FILE_TIME = "KEY_DELETE_FILE_TIME"; + + String KEY_DEVICE_ID = "key_device_id"; + + String KEY_DEVICE_KEY = "key_device_key"; + + String KEY_FILEPATH = "filepath"; + + String KEY_FILETYPE = "filetype"; + + String KEY_ID = "id"; - 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"; + String KEY_ISCONNECTED = "isConnected"; + String KEY_ISSILENCE = "KEY_ISSILENCE"; - /*** - * 内部定时器用action alarm - */ - public static String ACTION_SIT_ALARM = "com.ic.action.sit_alarm_local"; + String KEY_IS_RESUME = "key_is_resume"; + + String KEY_JUST_TALK = "KEY_JUST_TALK"; + + String KEY_NAME = "name"; + + String KEY_NET_WORK_TYPE = "NET_WORK_TYPE"; + + String KEY_NUMBER = "number"; + + String KEY_PAIR_CID = "PAIR_CID"; + + String KEY_REMOTE_NUMBER = "key_remote_number"; + + String KEY_SAVE_STEP_COUNT = "key_save_step_count"; + + String KEY_SOS_FILE_BODY = "key_sos_file_body"; + + String KEY_SOS_FILE_FILE_TYPE = "key_sos_file_file_type"; + + String KEY_STATUS = "key_status"; + + String KEY_STEP_COUNT = "KEY_STEP_COUNT"; + + String KEY_UNBOUND_FLAG = "KEY_UNBOUND_FLAG"; + + String KEY_VIDEO_PATH = "KEY_VIDEO_PATH"; + + int LOCATION_DATA = 217; + + int MONITOR_GOIN = 202; + + int MONITOR_GOOUT = 203; + + int MSG_WHAT_RELOAD_VOICE = 1000; + + int MSG_WHAT_SEND_OSSFILE = 1006; + + int MSG_WHAT_SEND_PAIR = 1003; + + int MSG_WHAT_SEND_PICTURE = 1002; + + int MSG_WHAT_SEND_VOICE = 1001; + + int MSG_WHAT_SILENCE_STATUS = 1005; + + int MSG_WHAT_VIDEO_CHAT = 1004; + + int MSG_WHAT_PPG = 1007; + String key_ppg = "ppg"; + String key_bph = "bph"; + String key_bpl = "bpl"; + String key_spo2 = "sp02"; + + + int NEW_MEDIA_PUSH = 100; + + String ACTION_SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; + String OTHER_ALARM_END = "com.enqualcomm.support.OTHER_ALARM_END"; + + String OTHER_ALARM_START = "com.enqualcomm.support.OTHER_ALARM_START"; + + String OTHER_HEARTRATE_ALARM_END = "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_END"; + + String OTHER_HEARTRATE_ALARM_START = "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START"; + + int OUT_SILENCE = 700; + + int PASS_DATA_DIRECTLY = 500; + + int PLAY_RECORD_UPDATE = 207; + + int REBOOT_SYSTEM = 208; + + int RESET_SYSTEM = 210; + + String RESTORE_EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE"; + + String RESTORE_REASON = "android.intent.extra.REASON"; + + + String ACTION_START_FOTA_UPDATE = "com.ic.action.startfotaUpdate"; + String ACTION_SMSCMD = "com.enqualcomm.support.SMSCMD"; + String ACTION_SMSCMD_Reply = "com.ic.action.fotaUpdateReply"; + String KeyReplyData = "reply"; + + int RESULT_ERROR = 500; + + int RESULT_OK = 200; + + String RESUME_ACTION = "com.enqualcomm.imessage.RESUME_ACTION"; + + String SERVICE_CLS_NAME = "com.enqualcomm.support.CoreService"; + + String SERVICE_PKG_NAME = "com.enqualcomm.support"; + + int SHUTDOWN_SYSTM = 209; + + String SLEEP_ALARM = "com.enqualcomm.support.SLEEP_ALARM"; + + String SOS_ACTION = "com.enqualcomm.imessage.SOS_ACTION"; + + int SOS_GOIN = 204; + + int SOS_GOOUT = 205; + + String STEP_COUNT_ALARM_ACTION = "com.enqualcomm.support.ACTION_STEP_COUNT_ALARM"; + + String STRING_CMD_JSON_DATA = "cmdJsonData"; + + String STWORKMODE_ALARM = "com.enqualcomm.support.ACTION_STWORKMODE_ALARM"; + + String VALUE_SETTIING_VERSION = "value_setting_ver"; + + int VIDEO_MESSAGE = 300; + + String WAKE_ALARM = "com.enqualcomm.support.WAKE_ALARM"; + + String WEATHER_ALARM = "com.enqualcomm.support.ACTION_WEATHER_ALARM"; + + int WIFI_SET_RESULT = 217; + + int WORKMODE_CHANGED = 211; + + String contact = "contact"; + + String wechat_contact = "content"; + + + String ACTION_CHECK_SERVER_RESPONSE = "com.enqualcomm.support.ACTION_CHECK_SERVER_RESPONSE"; + String ACTION_RETRY_SERVER_CONNECT = "com.enqualcomm.support.ACTION_RETRY_SERVER_CONNECT"; + String ACTION_CHECK_LOCATION_RESULT = "com.enqualcomm.support.ACTION_CHECK_LOCATION_RESULT"; + + + String ACTION_MESSAGE_SENT = "com.ic.action.message_sent"; + String ACTION_MESSAGE_RECEIVED = "com.ic.action.message_received"; + String KEY_MESSAGE_TYPE = "msgType"; // 分为 voice ,pic ,和 text + String KEY_MESSAGE_URL = "msgUrl"; // 消息为 voice和 pic 此纪录为 路径, text消息则直接是消息内容。 utf-8 格式String + String KEY_MESSAGE_FROM = "msgFrom"; // 消息来源(发送者名称),预留,暂时不用。 + + + String ACTION_TEMP_RESULT = "com.ic.action.temp_result"; + String KEY_TEMP_BODY = "body"; // double 体温 + String KEY_TEMP_WRIST = "wrist"; // double 腕温 + + String ACTION_ANTI_OFF = "com.ic.ACTION_STRIP"; + String KEY_ANTI_EVENT = "eventID"; //integer eventID =1 脱落, eventID =0 佩戴 + String KEY_ANTI_TXT = "eventTxt"; //String AnitMessage + + String ACTION_BATTERYLOW = "com.ic.ACTION_BATTERYLOW"; + String KEY_BATTERY_EVENT = "eventID"; //integer eventID =1 battery low, eventID =0 解除 + + 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" + */ - /** - * 发送给app做显示用 - */ - public static String ACTION_KEEPSIT_ALARM = "com.ic.action.keep_sit_alarm"; + /*** + * 心率血压血氧校准值 + * 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"; } diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index f8039a45..1645acac 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -58,6 +58,7 @@ import com.enqualcomm.support.utils.SimSignalUtil; import com.enqualcomm.support.utils.Util; import java.lang.ref.WeakReference; + import chestnut.ui.Toastc; import rx.Observable; import rx.functions.Action1; @@ -98,20 +99,20 @@ public class CoreService extends Service { private Toastc toast = null; - private static CoreService mProtocolServer=null; - private static LBSHelper lbshelper=null; + private static CoreService mProtocolServer = null; + private static LBSHelper lbshelper = null; public static final String ACTION_ALARM = "com.enqualcomm.support.ACTION_ALARM"; - private static final int GRAY_SERVICE_ID =android.os.Process.myPid(); + private static final int GRAY_SERVICE_ID = android.os.Process.myPid(); - private static final String MY_WAKE_LOCKTAG =CoreService.class.getSimpleName(); + private static final String MY_WAKE_LOCKTAG = CoreService.class.getSimpleName(); public static int alarmCycle = 1; public static final int interval = 60000; - public static boolean needLocateInAfterHeartBeat=false; + public static boolean needLocateInAfterHeartBeat = false; private static int is_allowed_in_sleep_mode = 1; private static boolean is_in_sleep_mode = false; @@ -120,9 +121,10 @@ public class CoreService extends Service { // SPRD: add outdoorMode public static final int RINGER_MODE_OUTDOOR = 3; - private static ICSmsManager smsManager=null; - public String getServerAlive(){ - return DeviceInfoUtil.getDeviceInfo(runtime); + private static ICSmsManager smsManager = null; + + public String getServerAlive() { + return DeviceInfoUtil.getDeviceInfo(runtime); } private BroadcastReceiver AtCallbackBroadcastReceiver = new BroadcastReceiver() { @@ -144,7 +146,7 @@ public class CoreService extends Service { stringBuilder1.append(Integer.valueOf(str, 16)); stringBuilder1.append(",CELLID="); stringBuilder1.append(Integer.valueOf(str1, 16)); - if (Config.LOG_TOFILE) ICLogger.logToFile( "LBS", stringBuilder1.toString()); + if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", stringBuilder1.toString()); } } } @@ -156,10 +158,10 @@ public class CoreService extends Service { StringBuilder stringBuilder2 = new StringBuilder(); stringBuilder2.append("broadcastReceiver alarmCycle action=="); stringBuilder2.append(param1Intent.getAction()); - if (Config.LOG_TOFILE) ICLogger.logToFile( "alarmCycle", stringBuilder2.toString()); + if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", stringBuilder2.toString()); StringBuilder stringBuilder1 = new StringBuilder(); stringBuilder1.append("时间变化"); - stringBuilder1.append(param1Intent.getAction()+stringBuilder2.toString()); + stringBuilder1.append(param1Intent.getAction() + stringBuilder2.toString()); ICLogger.i(stringBuilder1.toString()); //只有需要确定绝对时间点启动的Alarm需要重置,相对时间点的Alarm不需要重置。防止永远不能正常登陆。 @@ -168,8 +170,8 @@ public class CoreService extends Service { // setHeartAlarm(); // setHeartRateDetectAlarm(runtime.getPpgTestCycle()); setWeatherAlarm(); - runtime.getContextProxy().sendBroadcast("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE",runtime); //更新Alarm - // setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); + runtime.getContextProxy().sendBroadcast("com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE", runtime); //更新Alarm + // setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); if (cmcm_call_eiot_into_powersave_mode() == 0) AlarmWakeUp.isNeedWakeUpAlarm(runtime); } @@ -182,7 +184,7 @@ public class CoreService extends Service { stringBuilder2.append(param1Intent.getAction()); ICLogger.i(stringBuilder2.toString()); - if (ACTION_SEND_EMEGENCY_LOCATION_START.equals(param1Intent.getAction())){ + if (ACTION_SEND_EMEGENCY_LOCATION_START.equals(param1Intent.getAction())) { runtime.getLocationInstance().setWorkingMod(EMERGNECY_MOD); runtime.setPpgTestCycle(1); setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); @@ -191,73 +193,77 @@ public class CoreService extends Service { setEmegencyLocationSTOPAlarm(5); - }else if (ACTION_LOCAL_SOS_ACTION.endsWith(param1Intent.getAction())){ + } else if (ACTION_LOCAL_SOS_ACTION.endsWith(param1Intent.getAction())) { VibrateUtil.getInstance(runtime.getContextProxy().context).VibrateOn(true); // if( param1Intent.getIntExtra("type", 1) == 1) { - boolean needHRSTestOnSOS = Util.getSystemProperties("persist.sys.needHRSOnSOS","false").equals("true"); - if(needHRSTestOnSOS) { + boolean needHRSTestOnSOS = Util.getSystemProperties("persist.sys.needHRSOnSOS", "false").equals("true"); + if (needHRSTestOnSOS) { setHeartRateDetectAlarm(runtime.getPpgTestCycle()); HeartRateManager.triggerPPGtest(); } - runtime.setAlarmType(Runtime.AlarmType.ALARM_SOS); - //trigger AP10 报警定位 + runtime.setAlarmType(Runtime.AlarmType.ALARM_SOS); + //trigger AP10 报警定位 // CoreService.this.locationClient.triggerSOSLocationProcess(); - connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.getWarningMSG(runtime))); + connection.send(protocolAPIHelper.genStringMessage("AP10", protocolAPIHelper.getWarningMSG(runtime))); - //开启紧急定位模式,GPS 优先1分钟一次定位,持续5分钟 - runtime.getLocationInstance().setWorkingMod(EMERGNECY_MOD); - setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); + //开启紧急定位模式,GPS 优先1分钟一次定位,持续5分钟 + runtime.getLocationInstance().setWorkingMod(EMERGNECY_MOD); + setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); - //SOS模式,心率测试1分钟一次,持续5分钟 - if(needHRSTestOnSOS) { - runtime.setPpgTestCycle(1); - setHeartRateDetectAlarm(runtime.getPpgTestCycle()); - } - //设置5分钟后结束紧急定位模式 - setEmegencyLocationSTOPAlarm(5); + //SOS模式,心率测试1分钟一次,持续5分钟 + if (needHRSTestOnSOS) { + runtime.setPpgTestCycle(1); + setHeartRateDetectAlarm(runtime.getPpgTestCycle()); + } + //设置5分钟后结束紧急定位模式 + setEmegencyLocationSTOPAlarm(5); - if(Config.SOSNoNeedDial==false) { - //50ms后开始拨打电话 - Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { - public void call(Long param1Long) { - trigger_SOS_Call(); - } - }); + if (Config.SOSNoNeedDial == false) { + //50ms后开始拨打电话 + Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + trigger_SOS_Call(); + } + }); - } } + } } }; - private void trigger_SOS_Call(){ + private void trigger_SOS_Call() { try { Intent intent = new Intent("com.eqc.shutdown_sos"); - intent.putExtra("type",1); + intent.putExtra("type", 1); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(intent); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } } + private static class ServerHandler implements ConnectionListener { private final WeakReference mReference; - ServerHandler(CoreService param1CoreService) { this.mReference = new WeakReference(param1CoreService); } + ServerHandler(CoreService param1CoreService) { + this.mReference = new WeakReference(param1CoreService); + } @Override public void onConnectionClose(String errorName) { - CoreService coreService = (CoreService)this.mReference.get(); + CoreService coreService = (CoreService) this.mReference.get(); if (coreService == null) return; - ICLogger.i("onConnectionClose++ retry to connect again! Close Error "+errorName); - coreService.connectionServiceChain.processConnectionClose(coreService.connection, coreService.runtime,errorName); + ICLogger.i("onConnectionClose++ retry to connect again! Close Error " + errorName); + coreService.connectionServiceChain.processConnectionClose(coreService.connection, coreService.runtime, errorName); } + @Override public void onConnectionOpen() { - CoreService coreService = (CoreService)this.mReference.get(); + CoreService coreService = (CoreService) this.mReference.get(); if (coreService == null) return; coreService.connectionServiceChain.processConnectionOpen(coreService.connection, coreService.runtime); @@ -266,14 +272,16 @@ public class CoreService extends Service { public void onReceive(StringMessage param1StringMessage) { - CoreService coreService = (CoreService)this.mReference.get(); - ICLogger.i("onReceive " +param1StringMessage.cmd() +" coreService " + coreService ); + CoreService coreService = (CoreService) this.mReference.get(); + ICLogger.i("onReceive " + param1StringMessage.cmd() + " coreService " + coreService); if (coreService == null) return; + ICLogger.d("process CMD.."); coreService.connectionServiceChain.processServerResponse(param1StringMessage, coreService.connection, coreService.runtime); coreService.locationClient.onReceive(param1StringMessage); } } + NettyConnection connection = null; AbstractConnectionService connectionServiceChain; @@ -325,9 +333,9 @@ public class CoreService extends Service { CoreService.this.locationClient.updateStepCount(); Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { public void call(Long param1Long) { - if (connection.isServerConnected()&& runtime.isServerProtocolConnected()) { + if (connection.isServerConnected() && runtime.isServerProtocolConnected()) { mKeepAlive.onHeartAlarm(connection, runtime); - }else{ + } else { ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!"); connection.disconnectServer(); startConnectionRetryTimer(); @@ -343,8 +351,8 @@ public class CoreService extends Service { // if (!Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)) // Util.turnOnWifiForConnect(runtime.getContextProxy().context, runtime); } - } else if ("android.intent.action.SCREEN_OFF".equals(param1Intent.getAction()) && Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)) { - // CoreService.is_wifi_network_ok = true; + } else if ("android.intent.action.SCREEN_OFF".equals(param1Intent.getAction()) && Util.isWifiIsOpen(runtime.getContextProxy().context, runtime)) { + // CoreService.is_wifi_network_ok = true; if (!runtime.isNoTurnOffWifiOnScreenOff()) { //不关闭wifi when ScreenOff ICLogger.i("turnOffWifiForConnect"); @@ -364,7 +372,7 @@ public class CoreService extends Service { // Initialize initialize = new Initialize(); CheckSIM checkSIM = new CheckSIM(); this.mKeepAlive = new KeepAlive(); - this.mDeliver = new Deliver(this.connection,this.runtime); + this.mDeliver = new Deliver(this.connection, this.runtime); // initialize.setNext(checkSIM); checkSIM.setNext(this.mKeepAlive); this.mKeepAlive.setNext(this.mDeliver); @@ -372,11 +380,10 @@ public class CoreService extends Service { } - private AbstractInvokeHandlerService getInvokeHandlerServiceChain() { ICLogger.i("getInvokeHandlerServiceChain"); SendChatMessage sendChatMessage = new SendChatMessage(); - HeartRateManager heartRateManager= new HeartRateManager(this.runtime,this.connection); + HeartRateManager heartRateManager = new HeartRateManager(this.runtime, this.connection); antiservice = new AntiMonitorService(); SilentManager silentManager = SilentManager.getInstance();// new SilentManager(); sendChatMessage.setNext(heartRateManager); @@ -385,33 +392,36 @@ public class CoreService extends Service { return sendChatMessage; } - private void resetStepCount(){ - if ( ICJniUtils.isPedometerEnabled() == 0)ICJniUtils.enablePedometer(); + private void resetStepCount() { + if (ICJniUtils.isPedometerEnabled() == 0) ICJniUtils.enablePedometer(); ICJniUtils.resetStepCount(); SharPreferenceUtil.setPrefInt(this, KEY_STEP_COUNT, 0); SharPreferenceUtil.setPrefInt(this, KEY_SAVE_STEP_COUNT, 0); - ICLogger.i("Reset StepCount , "+ICJniUtils.getStepCount()); + ICLogger.i("Reset StepCount , " + ICJniUtils.getStepCount()); this.runtime.setSaveStepCount(0); this.runtime.setTotalStepCount(0); } + private void loadStepCount() { int i = SharPreferenceUtil.getPrefInt(this, KEY_STEP_COUNT, 0); int j = SharPreferenceUtil.getPrefInt(this, KEY_SAVE_STEP_COUNT, 0); - if ( ICJniUtils.isPedometerEnabled() == 0)ICJniUtils.enablePedometer(); + if (ICJniUtils.isPedometerEnabled() == 0) ICJniUtils.enablePedometer(); //ICJniUtils.recoverStepCount(); - if (ICJniUtils.getStepCount()>i){ - i=ICJniUtils.getStepCount(); + if (ICJniUtils.getStepCount() > i) { + i = ICJniUtils.getStepCount(); } this.runtime.setSaveStepCount(j); this.runtime.setTotalStepCount(i); } - public void saveStepCount(){ + + public void saveStepCount() { int i = runtime.getTotalStepCount(); int j = runtime.getSaveStepCount(); SharPreferenceUtil.setPrefInt(this, KEY_STEP_COUNT, i); SharPreferenceUtil.setPrefInt(this, KEY_SAVE_STEP_COUNT, j); //ICJniUtils.saveStepCount(); } + private void setCleanStepCountAlarm() { /*一天清零一次 计步*/ // AlarmHelper.setCleanStepCountAlarm(this, 23, 59, STEP_COUNT_ALARM_ACTION); @@ -449,13 +459,13 @@ public class CoreService extends Service { // AlarmHelper.setTimeAlarm(this, 6, (new Random()).nextInt(40) + 20, WEATHER_ALARM); } - private void checkconnection(){ + private void checkconnection() { - if (!this.connection.isServerConnected()) - { + if (!this.connection.isServerConnected()) { startConnectionRetryTimer(); } } + private void wakeUpFromSleep() { this.startAlarmCount = 0; // alarmCycle = 1; @@ -478,11 +488,13 @@ public class CoreService extends Service { Toast.makeText((this.runtime.getContextProxy()).context, "从深度睡眠中切换模式,联网中", Toast.LENGTH_SHORT).show(); } - public int cmcm_call_eiot_into_powersave_mode() { return 0; } + public int cmcm_call_eiot_into_powersave_mode() { + return 0; + } public PowerManager.WakeLock getWakeLock(int paramInt) { - PowerManager.WakeLock wakeLock = ((PowerManager)(this.runtime.getContextProxy()).context.getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, MY_WAKE_LOCKTAG); + PowerManager.WakeLock wakeLock = ((PowerManager) (this.runtime.getContextProxy()).context.getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, MY_WAKE_LOCKTAG); // wakeLock.acquire(paramInt*60*1000L); wakeLock.acquire(3000L); return wakeLock; @@ -493,11 +505,11 @@ public class CoreService extends Service { } - - public Runtime getRuntime(){ + public Runtime getRuntime() { return runtime; } - public NettyConnection getConnection(){ + + public NettyConnection getConnection() { return connection; } @@ -505,21 +517,21 @@ public class CoreService extends Service { public void onCreate() { log("初始化网络协议服务"); - mProtocolServer=this; + mProtocolServer = this; this.runtime = new Runtime(); this.runtime.setFileDir(getFilesDir()); this.runtime.setCacheDir(getExternalCacheDir()); this.runtime.setDBHelper(new DBHelper(getContentResolver(), this)); this.runtime.setContextProxy(new ContextProxy(this)); - this.runtime.setLbsHelper(new LBSHelper(this,this.runtime.getContextProxy().getWifiManager(), this.runtime)); + this.runtime.setLbsHelper(new LBSHelper(this, this.runtime.getContextProxy().getWifiManager(), this.runtime)); this.runtime.setHRS(new heartRateStatus()); this.runtime.setUseQueue(true); this.runtime.initDnsUtil(ICApplication.getInstance().getApplicationContext()); - connection=new NettyConnection(new ServerHandler(this),runtime); + connection = new NettyConnection(new ServerHandler(this), runtime); this.connectionServiceChain = getConnectionServiceChain(); this.invokeHandlerServiceChain = getInvokeHandlerServiceChain(); // if (cmcm_call_eiot_into_powersave_mode() == 1) { @@ -527,12 +539,12 @@ public class CoreService extends Service { // return; // } - smsManager= new ICSmsManager(runtime); + smsManager = new ICSmsManager(runtime); //保证获取正确的计步数据及其他参数初始化 loadStepCount(); - if (Config.logBootDate(this)){ + if (Config.logBootDate(this)) { resetStepCount(); } @@ -547,7 +559,7 @@ public class CoreService extends Service { Config.setTemperatureTestCycle(runtime, 60 * 60); Config.setConfigInitFlag(this, 1); } - }else if (Config.custom_branch_name.equals("l004")) { + } else if (Config.custom_branch_name.equals("l004")) { if (Config.getConfigInitFlag(this) == 0) { Config.setLocationMode(this, CUSTOM_MOD8_GPS); Config.setLocationCycle(this, 600); @@ -556,8 +568,8 @@ public class CoreService extends Service { Config.setConfigInitFlag(this, 1); } - }else if (Config.custom_branch_name.equals("AK")) { - if (Config.getConfigInitFlag(this)==0) { + } else if (Config.custom_branch_name.equals("AK")) { + if (Config.getConfigInitFlag(this) == 0) { Config.setPPGTestCycle(this, 0); Config.setTemperatureTestCycle(runtime, 0); Config.setConfigInitFlag(this, 1); @@ -570,15 +582,15 @@ public class CoreService extends Service { // runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true); // } } - }else{ + } else { - if (Config.getConfigInitFlag(this)==0) { + if (Config.getConfigInitFlag(this) == 0) { Config.setPPGTestCycle(this, 0); Config.setTemperatureTestCycle(runtime, 0); Config.setConfigInitFlag(this, 1); } } - Config.setHeartBeatCycle(this,5); //临时设置为3分钟,给L03测试用。测试断线问题未解决,取消测试。 + Config.setHeartBeatCycle(this, 5); //临时设置为3分钟,给L03测试用。测试断线问题未解决,取消测试。 //初始化ServerHeartBeat Cycle Config.loadHearBeatSetting(runtime); //初始化PPG,LocationMod,LocationCycle @@ -588,15 +600,13 @@ public class CoreService extends Service { Config.loadServerSettings(runtime); - - //初始化温度测试相关参数 //runtime.temperature_adjustValue= TemperatureUtil.getTempAdjustValue(); Config.loadTemperatureSettings(runtime); //加载存储的健康数据校准值 - Config.loadPPG_BPH_BPL_SPO2_adjustvalue(this,runtime); + Config.loadPPG_BPH_BPL_SPO2_adjustvalue(this, runtime); this.connectionServiceChain.processAttach(this.connection, this.runtime); this.invokeHandlerServiceChain.processAttach(this.connection, this.runtime); @@ -642,30 +652,30 @@ public class CoreService extends Service { intentFilter = new IntentFilter(); intentFilter.addAction(ACTION_SEND_EMEGENCY_LOCATION_START); intentFilter.addAction(ACTION_LOCAL_SOS_ACTION); - registerReceiver(broadcastSOSReceiver,intentFilter); + registerReceiver(broadcastSOSReceiver, intentFilter); //初始化Sim信号 this.mSignalUtil = SimSignalUtil.getInstance(this); //初始化 电池电量监控工具(内部注册接收电池变化) - batteryUtil = new BatteryUtil(this.runtime,connection); + batteryUtil = new BatteryUtil(this.runtime, connection); //保证发送心跳时提前获取BatLevel数据 - int batlevel=batteryUtil.getBatteryLevel(this); - runtime.setBattery(String.format("%03d",batlevel)); - ICLogger.i("Battery get from api "+batlevel); + int batlevel = batteryUtil.getBatteryLevel(this); + runtime.setBattery(String.format("%03d", batlevel)); + ICLogger.i("Battery get from api " + batlevel); boolean charging = batteryUtil.isPowerConnected(this); runtime.setPowerConnected(charging); - ICLogger.i("Charging "+charging); + ICLogger.i("Charging " + charging); // LedUtil.setRedLedOn(false); - if (Config.isL03Tracker){ + if (Config.isL03Tracker) { - if (runtime.isPowerConnected()) { + if (runtime.isPowerConnected()) { LedUtil.setRedLedOn(true); - }else{ + } else { LedUtil.setRedLedOn(false); } } @@ -693,7 +703,7 @@ public class CoreService extends Service { //获取定位时间 - needLocateInAfterHeartBeat=true; + needLocateInAfterHeartBeat = true; setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); //设置温度测量间隔时间 @@ -701,48 +711,48 @@ public class CoreService extends Service { setTempAlarm(); //设置来电模式 - SimSignalUtil.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL,true); - + SimSignalUtil.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL, true); + - //备份DB数据到sd cache目录,为调试方便 Util.getDBFile(); // test(); //test function - //更新MCC MNC + //更新MCC MNC CellInfoUtil.setCurrentAttachCellInfo(CoreService.getInstance().runtime); - //更新IMEI + //更新IMEI DeviceInfoUtil.updateImei(runtime); ReConnectToServer(); } - private void test(){ + private void test() { ICLogger.i("周一清除所有睡眠数据Record"); runtime.getDbHelper().deleteSleepData(); } - public static void DevliverStringMessage(String cmd){ - CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd,""); + public static void DevliverStringMessage(String cmd) { + CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd, ""); } - public static void DevliverStringMessage(String cmd,String str){ - CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd,str); + + public static void DevliverStringMessage(String cmd, String str) { + CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd, str); } - public void checkAlarmMessage(){ + public void checkAlarmMessage() { - if (runtime.Fence_Warning_flag>0 && Config.needAllwaysAlarmFenceOut){ + if (runtime.Fence_Warning_flag > 0 && Config.needAllwaysAlarmFenceOut) { runtime.Fence_Warning_flag++; WakeLockUtil.ScreenOnWakeLockTemperary(runtime.getContextProxy().context); - runtime.getContextProxy().sendMsgBroadcast(runtime.getContextProxy().context.getResources().getString(R.string.alarm_out_wall),2); + runtime.getContextProxy().sendMsgBroadcast(runtime.getContextProxy().context.getResources().getString(R.string.alarm_out_wall), 2); } - if(runtime.Anti_off_flag>0 && Config.needAllwaysAlarmAntiOff){ + if (runtime.Anti_off_flag > 0 && Config.needAllwaysAlarmAntiOff) { runtime.Anti_off_flag++; WakeLockUtil.ScreenOnWakeLockTemperary(runtime.getContextProxy().context); if (Config.A9_noBroadCastActionStrip) { - if(Config.needBroadcastAntiAlarm) { + if (Config.needBroadcastAntiAlarm) { AudioService.getInstance().play(runtime.getContextProxy().context.getAssets(), "antioff.mp3"); @@ -751,7 +761,7 @@ public class CoreService extends Service { public void run() { AudioService.getInstance().stop(); } - },5000); + }, 5000); VibrateUtil.getInstance(runtime.getContextProxy().context).VibrateOnOnce(true); try { @@ -766,21 +776,22 @@ public class CoreService extends Service { } } - public void checkKeepSitting(){ - String dateyyyyMMDDhhmmss=TimeUtil.getSystemTime3(); + + public void checkKeepSitting() { + String dateyyyyMMDDhhmmss = TimeUtil.getSystemTime3(); //为了更新 isInSleepRange, 下面的语句必须执行 TimeUtil.getCurrentSleepRecordDate(dateyyyyMMDDhhmmss); - if(TimeUtil.isInSleepRange == false) { //不在睡眠时间就是久坐时间段。 - if (Runtime.lastSitCheckStepCount == -1){ - Runtime.lastSitCheckStepCount=runtime.getTotalStepCount(); - Runtime.lastSitCheckTiimeyyyyMMddHHmmss=TimeUtil.getSystemTime3(); - } - int keepsitRange=Config.getKeepSitRangeInMinutes(this); - int minutes=(int)TimeUtil.diffBetween2DateInMinutes(Runtime.lastSitCheckTiimeyyyyMMddHHmmss,dateyyyyMMDDhhmmss); - ICLogger.i("SitCheck last SitCheckTime "+ Runtime.lastSitCheckTiimeyyyyMMddHHmmss + " , current checktime "+dateyyyyMMDDhhmmss); - ICLogger.i("SitCheck minutes "+ minutes + " , keepsitRange "+keepsitRange); - if (minutes >keepsitRange && keepsitRange>0){ - if ( (runtime.getTotalStepCount() - Runtime.lastSitCheckStepCount)/minutes < Config.KeepSitJudgementRefValue){ + if (TimeUtil.isInSleepRange == false) { //不在睡眠时间就是久坐时间段。 + if (Runtime.lastSitCheckStepCount == -1) { + Runtime.lastSitCheckStepCount = runtime.getTotalStepCount(); + Runtime.lastSitCheckTiimeyyyyMMddHHmmss = TimeUtil.getSystemTime3(); + } + int keepsitRange = Config.getKeepSitRangeInMinutes(this); + int minutes = (int) TimeUtil.diffBetween2DateInMinutes(Runtime.lastSitCheckTiimeyyyyMMddHHmmss, dateyyyyMMDDhhmmss); + ICLogger.i("SitCheck last SitCheckTime " + Runtime.lastSitCheckTiimeyyyyMMddHHmmss + " , current checktime " + dateyyyyMMDDhhmmss); + ICLogger.i("SitCheck minutes " + minutes + " , keepsitRange " + keepsitRange); + if (minutes > keepsitRange && keepsitRange > 0) { + if ((runtime.getTotalStepCount() - Runtime.lastSitCheckStepCount) / minutes < Config.KeepSitJudgementRefValue) { //平均 每分钟活动数 小于参考久坐计步值,表示久坐 ICLogger.i("SitCheck 平均 每分钟活动数 小于参考久坐计步值,表示久坐"); WakeLockUtil.ScreenOnWakeLockTemperary(this); @@ -792,43 +803,43 @@ public class CoreService extends Service { } runtime.getContextProxy().sendBroadcastSitLongAlarm(); //广播久坐消息 //提醒后 重置 lastCheckSitTime 以及 lastSitCheckStepCount , 重新计时 - Runtime.lastSitCheckStepCount=runtime.getTotalStepCount(); - Runtime.lastSitCheckTiimeyyyyMMddHHmmss=TimeUtil.getSystemTime3(); - }else{ + Runtime.lastSitCheckStepCount = runtime.getTotalStepCount(); + Runtime.lastSitCheckTiimeyyyyMMddHHmmss = TimeUtil.getSystemTime3(); + } else { //只要 平均每分钟活动数大于参考值,则重置 lastCheckSitTime 以及 lastSitCheckStepCount ICLogger.i("SitCheck 平均每分钟活动数大于参考值,则重置 lastCheckSitTime 以及 lastSitCheckStepCount"); - Runtime.lastSitCheckStepCount=runtime.getTotalStepCount(); - Runtime.lastSitCheckTiimeyyyyMMddHHmmss=TimeUtil.getSystemTime3(); + Runtime.lastSitCheckStepCount = runtime.getTotalStepCount(); + Runtime.lastSitCheckTiimeyyyyMMddHHmmss = TimeUtil.getSystemTime3(); } } - }else{ - Runtime.lastSitCheckStepCount=-1; //不在时间段就重置数据,以便下一次使用能过重新开始计数。 + } else { + Runtime.lastSitCheckStepCount = -1; //不在时间段就重置数据,以便下一次使用能过重新开始计数。 } } - public void updateSleepDate(){ - String dateyyyyMMDDhhmmss=TimeUtil.getSystemTime3(); - String sleepdate=TimeUtil.getCurrentSleepRecordDate(dateyyyyMMDDhhmmss); - ICLogger.i("updateSleepDate "+sleepdate); - if(TimeUtil.isInSleepRange == true) { - runtime.getDbHelper().insertSleepRecord(new SleepRecord(dateyyyyMMDDhhmmss,sleepdate,runtime.getTotalStepCount())); - runtime.sleepDataReported=false; //只要记录过数据 就证明有数据没有report - }else{ + public void updateSleepDate() { + String dateyyyyMMDDhhmmss = TimeUtil.getSystemTime3(); + String sleepdate = TimeUtil.getCurrentSleepRecordDate(dateyyyyMMDDhhmmss); + ICLogger.i("updateSleepDate " + sleepdate); + if (TimeUtil.isInSleepRange == true) { + runtime.getDbHelper().insertSleepRecord(new SleepRecord(dateyyyyMMDDhhmmss, sleepdate, runtime.getTotalStepCount())); + runtime.sleepDataReported = false; //只要记录过数据 就证明有数据没有report + } else { if (runtime.sleepDataReported == false) { //calculate sleep data and report it randomly within 1 hour runtime.sleepDataReported = true; int score = runtime.getDbHelper().querySleepScore(sleepdate); if (score > 0) { - ICLogger.i("已经有"+sleepdate+"的睡眠数据!"); + ICLogger.i("已经有" + sleepdate + "的睡眠数据!"); } else { SleepInfo si = SleepInfo.getInstance(); si.setDate(sleepdate); si.calculate_sleepInfo(runtime); runtime.getDbHelper().updateSleepInfo(si); - if (TimeUtil.getWeek().equals("周一")){ + if (TimeUtil.getWeek().equals("周一")) { ICLogger.i("周一清除所有睡眠数据Record"); runtime.getDbHelper().deleteSleepData(); } @@ -844,12 +855,12 @@ public class CoreService extends Service { // Observable.timer(randomint * 60 * 1000L, TimeUnit.MILLISECONDS).subscribe(new Action1() { // public void call(Long param1Long) { - ICLogger.i("Send sleep info " + si.getCurrentDate() - + " deep " + si.getDeepsleep_minutes() - + " light " + si.getLightsleep_minutes() - + " score " + si.getScore() - ); - Deliver.sendLocationMSG(protocolAPIHelper.getSleepMSG(SleepInfo.getInstance())); + ICLogger.i("Send sleep info " + si.getCurrentDate() + + " deep " + si.getDeepsleep_minutes() + + " light " + si.getLightsleep_minutes() + + " score " + si.getScore() + ); + Deliver.sendLocationMSG(protocolAPIHelper.getSleepMSG(SleepInfo.getInstance())); // } // }); @@ -857,8 +868,9 @@ public class CoreService extends Service { } } } + public int onStartCommand(Intent paramIntent, int paramInt1, int paramInt2) { - if (paramIntent != null && paramIntent.getAction()!=null) { + if (paramIntent != null && paramIntent.getAction() != null) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("onStartCommand action="); stringBuilder.append(paramIntent.getAction()); @@ -915,13 +927,13 @@ public class CoreService extends Service { if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", stringBuilder1.toString()); // this.locationClient.triggerLocationProcess(); - }else if (Constants.ACTION_CHECK_SERVER_RESPONSE.equals(paramIntent.getAction())) { + } else if (Constants.ACTION_CHECK_SERVER_RESPONSE.equals(paramIntent.getAction())) { //暂时还使用 ScheduledThreadPoolExecutor , 时间要求不是那么的严格 - }else if (Constants.ACTION_RETRY_SERVER_CONNECT.equals(paramIntent.getAction())) { + } else if (Constants.ACTION_RETRY_SERVER_CONNECT.equals(paramIntent.getAction())) { //暂时还使用 ScheduledThreadPoolExecutor , 时间要求不是那么的严格 - }else if (Constants.ACTION_CHECK_LOCATION_RESULT.equals(paramIntent.getAction())) { + } else if (Constants.ACTION_CHECK_LOCATION_RESULT.equals(paramIntent.getAction())) { locationClient.waitAndSendLocation(); - }else if (Constants.SLEEP_ALARM.equals(paramIntent.getAction())) { + } else if (Constants.SLEEP_ALARM.equals(paramIntent.getAction())) { StringBuilder stringBuilder1; ICLogger.i("SLEEP_ALARM"); is_allowed_in_sleep_mode = 1; @@ -990,13 +1002,13 @@ public class CoreService extends Service { if (connection.isServerConnected() && runtime.isServerProtocolConnected()) { this.mKeepAlive.onHeartAlarm(this.connection, this.runtime); } else { - // if (this.mKeepAlive.is_retry_time_above_limit()) { - ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!"); - connection.disconnectServer(); - this.startConnectionRetryTimer(); - // }else{ - // ICLogger.i(""); - // } + // if (this.mKeepAlive.is_retry_time_above_limit()) { + ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!"); + connection.disconnectServer(); + this.startConnectionRetryTimer(); + // }else{ + // ICLogger.i(""); + // } } setHeartAlarm(); if (Config.LOG_TOFILE) @@ -1028,8 +1040,8 @@ public class CoreService extends Service { LocationClient.setForceLocation(1); setLocationAlarm(runtime.getLocationInstance().getWorkingMod());//同时重置alarm并触发定位 - }else if(ACTION_CHECK_ANTIOFF_EVENT.equals(paramIntent.getAction())){ - if (antiservice.check_ant_event()==1){ + } else if (ACTION_CHECK_ANTIOFF_EVENT.equals(paramIntent.getAction())) { + if (antiservice.check_ant_event() == 1) { setAntiCheckAlarm(); } } @@ -1041,113 +1053,121 @@ public class CoreService extends Service { return Service.START_NOT_STICKY; } - public boolean onUnbind(Intent paramIntent) { return false; } + public boolean onUnbind(Intent paramIntent) { + return false; + } //每一分钟设置一次 public void setAlarm(int paramInt) { // AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,paramInt,ACTION_ALARM); } - public void setHeartRateDetectAlarm(int heartRateDetectAlarmCycle){ + public void setHeartRateDetectAlarm(int heartRateDetectAlarmCycle) { if (Config.noPPGSensor) - return ; - if (heartRateDetectAlarmCycle>1) - AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,heartRateDetectAlarmCycle,ACTION_HEATR_RATE_START); + return; + if (heartRateDetectAlarmCycle > 1) + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, heartRateDetectAlarmCycle, ACTION_HEATR_RATE_START); } - public void setAntiCheckAlarm(){ - AlarmHelper.setRealTimeAlarmInMicorSeconds(runtime.getContextProxy().context,500,ACTION_CHECK_ANTIOFF_EVENT); + + public void setAntiCheckAlarm() { + AlarmHelper.setRealTimeAlarmInMicorSeconds(runtime.getContextProxy().context, 500, ACTION_CHECK_ANTIOFF_EVENT); } - public void setEmegencyLocationSTOPAlarm(int delayTimeInMinutes){ - StringBuilder sb=new StringBuilder(); - AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,delayTimeInMinutes, ACTION_SEND_EMEGENCY_LOCATION_STOP); - sb.append(" tEmegencyLocationSTOPAlarm "+ACTION_SEND_EMEGENCY_LOCATION_STOP); + public void setEmegencyLocationSTOPAlarm(int delayTimeInMinutes) { + StringBuilder sb = new StringBuilder(); + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, delayTimeInMinutes, ACTION_SEND_EMEGENCY_LOCATION_STOP); + sb.append(" tEmegencyLocationSTOPAlarm " + ACTION_SEND_EMEGENCY_LOCATION_STOP); // ICLogger.i(sb.toString()); - if (Config.LOG_TOFILE)ICLogger.logToFile("alarmCycle",sb.toString()); + if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", sb.toString()); } + public void setLocationAlarm(int mod) { // int mod=runtime.getLocationInstance().getWorkingMod(); - StringBuilder sb=new StringBuilder(); - int cycle=60; - switch(mod){ + StringBuilder sb = new StringBuilder(); + int cycle = 60; + switch (mod) { case EMERGNECY_MOD: case REALTIME_MOD: - cycle=60; + cycle = 60; break; case NORMAL_MOD: - cycle=15*60; + cycle = 15 * 60; break; case LOWPOWER_MOD: - cycle=60*60; + cycle = 60 * 60; break; case CUSTOM_MOD: case CUSTOM_MOD8_GPS: case CUSTOM_MOD8_WIFI: - cycle=runtime.getLocationInstance().getLocation_cycle(); + cycle = runtime.getLocationInstance().getLocation_cycle(); break; } - if (Config.noLocationCycle==false) - AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,cycle, ACTION_LOCATION_ALARM); + if (Config.noLocationCycle == false) + AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context, cycle, ACTION_LOCATION_ALARM); else - ICLogger.i("skip set LocationAlarm " ); - sb.append(" setLocationAlarm "+ACTION_LOCATION_ALARM+" mod "+mod+", cycle in Seconds "+cycle); + ICLogger.i("skip set LocationAlarm "); + sb.append(" setLocationAlarm " + ACTION_LOCATION_ALARM + " mod " + mod + ", cycle in Seconds " + cycle); ICLogger.i(sb.toString()); - if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + if (Config.LOG_TOFILE) + FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString()); locationClient.triggerLocationProcess(); } - public void setHeartAlarm(){ + public void setHeartAlarm() { // int mod=runtime.getLocationInstance().getWorkingMod(); - StringBuilder sb=new StringBuilder(); - int cycle=runtime.getHeartBeatCycle(); + StringBuilder sb = new StringBuilder(); + int cycle = runtime.getHeartBeatCycle(); //心跳指令默认设置 - AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,cycle, HEART_ALARM); - sb.append(" setHeartAlarm "+HEART_ALARM+", cycle "+cycle); + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, cycle, HEART_ALARM); + sb.append(" setHeartAlarm " + HEART_ALARM + ", cycle " + cycle); // locationClient.triggerLocationProcess(); ICLogger.i(sb.toString()); - FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString()); // AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM); } - public void setAntiAlarm(){ + + public void setAntiAlarm() { // int mod=runtime.getLocationInstance().getWorkingMod(); - StringBuilder sb=new StringBuilder(); - int cycle=runtime.anti_test_cycle; + StringBuilder sb = new StringBuilder(); + int cycle = runtime.anti_test_cycle; //心跳指令默认设置为3分钟 - AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,cycle, ANTI_ALARM); - sb.append(" setHeartAlarm "+ANTI_ALARM+", cycle "+cycle); + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, cycle, ANTI_ALARM); + sb.append(" setHeartAlarm " + ANTI_ALARM + ", cycle " + cycle); // locationClient.triggerLocationProcess(); ICLogger.i(sb.toString()); - FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString()); // AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM); } - public void setTempAlarm(){ + + public void setTempAlarm() { // int mod=runtime.getLocationInstance().getWorkingMod(); - StringBuilder sb=new StringBuilder(); - int cycle=runtime.temp_test_Cycle; + StringBuilder sb = new StringBuilder(); + int cycle = runtime.temp_test_Cycle; - if(Config.noTempSensor) - return; - if (cycle>1) { + if (Config.noTempSensor) + return; + if (cycle > 1) { AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context, cycle, TEMP_ALARM); sb.append(" setTempAlarm " + TEMP_ALARM + ", cycle " + cycle); - }else { - sb.append(" setTempAlarm " + TEMP_ALARM + ", cycle " + cycle+"<=1 skip!"); + } else { + sb.append(" setTempAlarm " + TEMP_ALARM + ", cycle " + cycle + "<=1 skip!"); } // locationClient.triggerLocationProcess(); ICLogger.i(sb.toString()); - FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString()); // AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM); } + public void setUpLocationDataAlarm(long paramLong) { - AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); + AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(this, CoreService.class); intent.setAction(ACTION_ALARM_ADD_DATAPOINTS); PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT); @@ -1157,11 +1177,13 @@ public class CoreService extends Service { stringBuilder.append("interval="); stringBuilder.append(paramLong); ICLogger.i(stringBuilder.toString()); - AlarmHelper.setRealTimeAlarm( runtime.getContextProxy().context,(int)((System.currentTimeMillis() + paramLong)/1000),ACTION_ALARM_ADD_DATAPOINTS); + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, (int) ((System.currentTimeMillis() + paramLong) / 1000), ACTION_ALARM_ADD_DATAPOINTS); } public static class InnerService extends Service { - public IBinder onBind(Intent param1Intent) { return null; } + public IBinder onBind(Intent param1Intent) { + return null; + } /*给 API >= 18 的平台上用的灰色保活手段*/ public int onStartCommand(Intent param1Intent, int param1Int1, int param1Int2) { @@ -1180,7 +1202,7 @@ public class CoreService extends Service { } public void handleMessage(Message param1Message) { - CoreService coreService = (CoreService)this.mReference.get(); + CoreService coreService = (CoreService) this.mReference.get(); if (coreService == null) return; coreService.invokeHandlerServiceChain.processUserRequest(param1Message, coreService.connection, coreService.runtime); @@ -1189,56 +1211,57 @@ public class CoreService extends Service { private static final String TAG = "ICSrv." + CoreService.class.getSimpleName(); - private ScheduledThreadPoolExecutor mTimer_retry_connect=null; + private ScheduledThreadPoolExecutor mTimer_retry_connect = null; + + private static int retry_connect_count = 0; //当前重试次数 + private static int retry_connect_max_times = 6; //最大重试次数 6次 , 即只重试2分钟,下一次重试将在下一个心跳包时进行。 + private static int retry_cocnnect_cycle = 20; //重试间隔20秒 - private static int retry_connect_count=0; //当前重试次数 - private static int retry_connect_max_times=6; //最大重试次数 6次 , 即只重试2分钟,下一次重试将在下一个心跳包时进行。 - private static int retry_cocnnect_cycle=20; //重试间隔20秒 private void log(String msg) { - ICLogger.log(TAG,msg); + ICLogger.log(TAG, msg); } - public static CoreService getInstance(){ + public static CoreService getInstance() { return mProtocolServer; } - public void startConnectionRetryTimer(){ + public void startConnectionRetryTimer() { //联网再重试连接服务器, 不能够联网的情况下不管是不是有sim卡,以及是否联网,都进行重试,以便处理下面情况: //1、sim卡接触不良,掉卡,可以尝试用此法恢复 //2、网络信号不好,造成临时掉线,但是恢复慢或不恢复,可以用此法尝试恢复 // if (SimSignalUtil.checkNet(runtime.getContextProxy().context) ) { - stopConnectionRetryTimer(); - if (mTimer_retry_connect == null) { - mTimer_retry_connect = new ScheduledThreadPoolExecutor(10); - } - //如果开始进行连接重 - // { - // 试,证明网络断开的,那么KeepAlive也需要重连(心跳包) - retry_connect_count=0; - KeepAlive.isConnected = false; - if (mTimer_retry_connect != null) { - mTimer_retry_connect.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - ReConnectToServer(); - } - }, 5000, 20000, TimeUnit.MILLISECONDS); //每次都是断网才需要重连,delay 5秒重连,并且每20秒重试一次 - } + stopConnectionRetryTimer(); + if (mTimer_retry_connect == null) { + mTimer_retry_connect = new ScheduledThreadPoolExecutor(10); + } + //如果开始进行连接重 + // { + // 试,证明网络断开的,那么KeepAlive也需要重连(心跳包) + retry_connect_count = 0; + KeepAlive.isConnected = false; + if (mTimer_retry_connect != null) { + mTimer_retry_connect.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + ReConnectToServer(); + } + }, 5000, 20000, TimeUnit.MILLISECONDS); //每次都是断网才需要重连,delay 5秒重连,并且每20秒重试一次 + } // } } - private static int no_network_Heartbeats_Count=0; + private static int no_network_Heartbeats_Count = 0; - public void ReConnectToServer(){ + public void ReConnectToServer() { - if (SimSignalUtil.checkNet(runtime.getContextProxy().context) ) { + if (SimSignalUtil.checkNet(runtime.getContextProxy().context)) { //里面如果连接成功 connectionOpen 会先发送 AP00 登录包 和发送AP03 心跳包 , // isServerConnected 成功则停止重试, KeepAlive会检测AP03心跳包的成功与否。此处只管socket连接是否成功 if (connection.isServerConnected()) { ICLogger.i("retry 如果连接成功则停止重试!"); - no_network_Heartbeats_Count=0; + no_network_Heartbeats_Count = 0; stopConnectionRetryTimer(); - }else { + } else { if (retry_connect_count >= retry_connect_max_times) { ICLogger.i("retry " + retry_connect_count + " 次 >= " + retry_connect_max_times + " ,停止重试!等待下一次心跳再重试!"); @@ -1256,21 +1279,21 @@ public class CoreService extends Service { } } - }else{ + } else { //没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网 - ICLogger.i("retry "+no_network_Heartbeats_Count+" 没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网!"); + ICLogger.i("retry " + no_network_Heartbeats_Count + " 没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网!"); no_network_Heartbeats_Count++; stopConnectionRetryTimer(); } - if( no_network_Heartbeats_Count >10){ - ICLogger.i("当前第"+no_network_Heartbeats_Count+"次心跳都没有连接服务器成功 > 10 ,重置SIM卡尝试重新注册网络!"); + if (no_network_Heartbeats_Count > 10) { + ICLogger.i("当前第" + no_network_Heartbeats_Count + "次心跳都没有连接服务器成功 > 10 ,重置SIM卡尝试重新注册网络!"); SimSignalUtil.send_at_to_reset_simcard(runtime); - no_network_Heartbeats_Count=0;//重置Sim卡后重置计数。防止后面多次重置Sim卡。 + no_network_Heartbeats_Count = 0;//重置Sim卡后重置计数。防止后面多次重置Sim卡。 } } - public void stopConnectionRetryTimer(){ - if (mTimer_retry_connect !=null){ + public void stopConnectionRetryTimer() { + if (mTimer_retry_connect != null) { mTimer_retry_connect.shutdownNow(); // while(!mTimer_retry_connect.isTerminated()) // { @@ -1286,13 +1309,11 @@ public class CoreService extends Service { } } - private boolean needLogin(){ + private boolean needLogin() { return true; } - - @Override public void onDestroy() { super.onDestroy(); @@ -1309,7 +1330,7 @@ public class CoreService extends Service { } - public void disconnect_server(){ + public void disconnect_server() { this.connection.close(); } diff --git a/app/src/main/java/com/enqualcomm/support/bean/StringMessage.java b/app/src/main/java/com/enqualcomm/support/bean/StringMessage.java index 9a2adc27..299bcb4f 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/StringMessage.java +++ b/app/src/main/java/com/enqualcomm/support/bean/StringMessage.java @@ -3,41 +3,55 @@ package com.enqualcomm.support.bean; import java.util.ArrayList; public class StringMessage { - ArrayList bs; - - private String cache; - - protected String[] fragments; - - public boolean u8; - - public StringMessage(String paramString) { - this.cache = paramString; - this.u8 = true; - } - - public StringMessage(String[] paramArrayOfString) { this(paramArrayOfString, true); } - - public StringMessage(String[] paramArrayOfString, ArrayList paramArrayList) { - this.fragments = paramArrayOfString; - this.bs = paramArrayList; - } - - public StringMessage(String[] paramArrayOfString, boolean paramBoolean) { - this.fragments = paramArrayOfString; - this.u8 = paramBoolean; - } - - public String[] all() { return this.fragments; } - - public String cmd() { return this.fragments[0]; } - - public String isFromCache() { return this.cache; } - - public void refresh(String paramString) { this.cache = paramString; } - - public int size() { return (this.fragments != null) ? this.fragments.length : 0; } - - public ArrayList source() { return this.bs; } + ArrayList bs; + + private String cache; + + protected String[] fragments; + + public boolean u8; + + public StringMessage(String paramString) { + this.cache = paramString; + this.u8 = true; + } + + public StringMessage(String[] paramArrayOfString) { + this(paramArrayOfString, true); + } + + public StringMessage(String[] paramArrayOfString, ArrayList paramArrayList) { + this.fragments = paramArrayOfString; + this.bs = paramArrayList; + } + + public StringMessage(String[] paramArrayOfString, boolean paramBoolean) { + this.fragments = paramArrayOfString; + this.u8 = paramBoolean; + } + + public String[] all() { + return this.fragments; + } + + public String cmd() { + return this.fragments[0]; + } + + public String isFromCache() { + return this.cache; + } + + public void refresh(String paramString) { + this.cache = paramString; + } + + public int size() { + return (this.fragments != null) ? this.fragments.length : 0; + } + + public ArrayList source() { + return this.bs; + } } diff --git a/app/src/main/java/com/enqualcomm/support/service/Deliver.java b/app/src/main/java/com/enqualcomm/support/service/Deliver.java index 0156bf5a..c082c5ff 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Deliver.java +++ b/app/src/main/java/com/enqualcomm/support/service/Deliver.java @@ -4,6 +4,7 @@ import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.IClipboard; import android.content.Intent; import android.net.ConnectivityManager; import android.net.wifi.WifiConfiguration; @@ -54,76 +55,77 @@ import static com.enqualcomm.support.bean.Content.CONTACT_CATEGORY_GROUP; * 负责发送除了login,心跳之外的所有指令 */ public class Deliver extends AbstractConnectionService { - private static final String RECEIVE_WAKE_LOCKTAG = "ReceiveWakelockTag"; - - private static PowerManager.WakeLock WifiListWakeLock; - - public static boolean haveSendH42 = false; - - private static int isAppSetWifi = 0; - - - - private static ReentrantLock mLock = new ReentrantLock(); - private static ReentrantLock lock = new ReentrantLock(); - private static Condition mCondition = mLock.newCondition(); - - public static LinkedBlockingDeque queue = new LinkedBlockingDeque(200); - - private static FileCache fileCache; - private static NettyConnection connection; - - public static boolean is_active_location = false; - - private static PowerManager.WakeLock ReceiveWakeLock; - - private Handler delayHandler; - - private Runnable delayTh; - - private Connection mConnection; - - private ConWifiReceiver mMyWifiReceiver; - - private static Runtime mRuntime; - - private static boolean wakeLockWifiList = false; - - private static boolean wakeLockWifiSet = false; - - private static boolean wifiEnabled; - - public static Runnable delaySendMSG; - private static Handler mSendMSGHandler=new Handler(new Handler.Callback() { - @Override - public boolean handleMessage(Message message) { - return false; - } - }); - - static { - delaySendMSG = new Runnable() { - @Override - public void run() { - if (getAndSendMsgFromQueue()==true){ - mSendMSGHandler.postDelayed(delaySendMSG,5000L); + private static final String RECEIVE_WAKE_LOCKTAG = "ReceiveWakelockTag"; + private static final String TAG = "Deliver"; + + private static PowerManager.WakeLock WifiListWakeLock; + + public static boolean haveSendH42 = false; + + private static int isAppSetWifi = 0; + + + private static ReentrantLock mLock = new ReentrantLock(); + private static ReentrantLock lock = new ReentrantLock(); + private static Condition mCondition = mLock.newCondition(); + + public static LinkedBlockingDeque queue = new LinkedBlockingDeque(200); + + private static FileCache fileCache; + private static NettyConnection connection; + + public static boolean is_active_location = false; + + private static PowerManager.WakeLock ReceiveWakeLock; + + private Handler delayHandler; + + private Runnable delayTh; + + private Connection mConnection; + + private ConWifiReceiver mMyWifiReceiver; + + private static Runtime mRuntime; + + private static boolean wakeLockWifiList = false; + + private static boolean wakeLockWifiSet = false; + + private static boolean wifiEnabled; + + public static Runnable delaySendMSG; + private static Handler mSendMSGHandler = new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(Message message) { + return false; } - } - }; - } - public Deliver(NettyConnection paramNettyConnection, Runtime paramRuntime) { - connection = paramNettyConnection; - mRuntime = paramRuntime; - //把queue 保存在磁盘中的缓存文件 - //此文件只缓存 除了 登录指令AP00,心跳AP03以及voice 分包指令以外的需要上传的指令。初步规划为 定位AP01和心率/血压 APHT - fileCache = new FileCache(paramRuntime.getFileDir()); - } - - private static boolean checkNetwork(){ - boolean ret=true; - boolean dateConnectionLinked=SimSignalUtil.checkNet(mRuntime.getContextProxy().context); - - if (dateConnectionLinked) { + }); + + static { + delaySendMSG = new Runnable() { + @Override + public void run() { + if (getAndSendMsgFromQueue() == true) { + mSendMSGHandler.postDelayed(delaySendMSG, 5000L); + } + } + }; + } + + public Deliver(NettyConnection paramNettyConnection, Runtime paramRuntime) { + connection = paramNettyConnection; + mRuntime = paramRuntime; + //把queue 保存在磁盘中的缓存文件 + //此文件只缓存 除了 登录指令AP00,心跳AP03以及voice 分包指令以外的需要上传的指令。初步规划为 定位AP01和心率/血压 APHT + fileCache = new FileCache(paramRuntime.getFileDir()); + } + + private static boolean checkNetwork() { + boolean ret = true; + boolean dateConnectionLinked = SimSignalUtil.checkNet(mRuntime.getContextProxy().context); + + if (dateConnectionLinked) { // int signal = mRuntime.getSignalStrength(); // int networkType = SimSignalUtil.getInstance((mRuntime.getContextProxy()).context).getNetworkType(); // if (signal + 110 < getMinSignalStrength(networkType)) { @@ -131,581 +133,528 @@ public class Deliver extends AbstractConnectionService { // //如果信号不好,把msg放回去 // ret = false; // } - if (connection.isServerConnected() == false || !mRuntime.isServerProtocolConnected()) { - ICLogger.i("服务器无法访问,或者协议状态失常"); - ret = false; - } - }else{ - ICLogger.i("数据网络没有连接"); - ret=false; + if (connection.isServerConnected() == false || !mRuntime.isServerProtocolConnected()) { + ICLogger.i("服务器无法访问,或者协议状态失常"); + ret = false; + } + } else { + ICLogger.i("数据网络没有连接"); + ret = false; + } + return ret; } - return ret; - } - public static void triggerSendThread() { + + public static void triggerSendThread() { // mSendMSGHandler.post(delaySendMSG); - ICLogger.i("triggerSendThread "); - delaySendMSG.run(); + ICLogger.i("triggerSendThread "); + delaySendMSG.run(); // mSendMSGHandler.sendEmptyMessage(1); - } - private static boolean NeedCheckServerResponse=true; - private static boolean ServerResponsed=false; - private static String needCheckResponseCMD=null; - private static int CheckCount=0; - - private static void checkNeedServerResponse(String cmd){ - if (cmd!=null && Config.protocol_no==Config.PROTOCOL_FZD && - (protocolAPIHelper.isCmdStr(cmd).equals("UD") || protocolAPIHelper.isCmdStr(cmd).equals("UD2"))){ - NeedCheckServerResponse=false; - }else{ - NeedCheckServerResponse=true; - } - } - - public static boolean getAndSendMsgFromQueue(){ - boolean ret=false; - if (mRuntime.getUseQueue()) { - ICLogger.i("queue locked "+mLock.isLocked()); - if(mLock.isLocked()) return false; - mLock.lock(); - try - { - String str; - //如果没有数据从缓存中尝试读取 + } + + private static boolean NeedCheckServerResponse = true; + private static boolean ServerResponsed = false; + private static String needCheckResponseCMD = null; + private static int CheckCount = 0; + + private static void checkNeedServerResponse(String cmd) { + if (cmd != null && Config.protocol_no == Config.PROTOCOL_FZD && + (protocolAPIHelper.isCmdStr(cmd).equals("UD") || protocolAPIHelper.isCmdStr(cmd).equals("UD2"))) { + NeedCheckServerResponse = false; + } else { + NeedCheckServerResponse = true; + } + } + + public static boolean getAndSendMsgFromQueue() { + boolean ret = false; + if (mRuntime.getUseQueue()) { + ICLogger.i("queue locked " + mLock.isLocked()); + if (mLock.isLocked()) return false; + mLock.lock(); + try { + String str; + //如果没有数据从缓存中尝试读取 // if (queue.isEmpty()) // loadMessage2Queue(); - //检查刚刚发送出去的包是否需要检查server response - checkNeedServerResponse(needCheckResponseCMD); - - //如果需要,且没有服务器反馈 - if (NeedCheckServerResponse==true && ServerResponsed==false){ - //刚刚发送的包不为空,且检测次数小于3,则保留数据,进行下一次重试。 - if (needCheckResponseCMD!=null && CheckCount < 3) { - //如果cmd有效,且尝试次数小于3, 没有收到反馈的情况下,可以重新插入queue进行下一次尝试! - ICLogger.i("checkSrvResponse "+CheckCount+" times for "+needCheckResponseCMD); - if (!ServiceUtil.offerQueue(new StringMessage(needCheckResponseCMD), true)) { - ICLogger.i("checkSrvResponse failed ,重新添加MessageQueue 已满,数据将被丢弃!" + needCheckResponseCMD); - if (Config.LOG_TOFILE) - ICLogger.logToFile("APILog", "response failed queueFullskip! " + needCheckResponseCMD); - }else{ - if (Config.LOG_TOFILE) - ICLogger.logToFile("APILog", "response failed retry ! " +CheckCount+" " + needCheckResponseCMD); - } - CheckCount++; - }else{ //否则 可能是还没有发送过数据,或者超过重试次数,继续提取queue中数据进行发送 - ICLogger.i("checkSrvResponse CheckCount="+CheckCount+" Timeout or cmd is null, skip "); - if (Config.LOG_TOFILE) - ICLogger.logToFile("APILog", "response timeout skip! " + needCheckResponseCMD); - CheckCount=0; - } - } + //检查刚刚发送出去的包是否需要检查server response + checkNeedServerResponse(needCheckResponseCMD); + + //如果需要,且没有服务器反馈 + if (NeedCheckServerResponse == true && ServerResponsed == false) { + //刚刚发送的包不为空,且检测次数小于3,则保留数据,进行下一次重试。 + if (needCheckResponseCMD != null && CheckCount < 3) { + //如果cmd有效,且尝试次数小于3, 没有收到反馈的情况下,可以重新插入queue进行下一次尝试! + ICLogger.i("checkSrvResponse " + CheckCount + " times for " + needCheckResponseCMD); + if (!ServiceUtil.offerQueue(new StringMessage(needCheckResponseCMD), true)) { + ICLogger.i("checkSrvResponse failed ,重新添加MessageQueue 已满,数据将被丢弃!" + needCheckResponseCMD); + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", "response failed queueFullskip! " + needCheckResponseCMD); + } else { + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", "response failed retry ! " + CheckCount + " " + needCheckResponseCMD); + } + CheckCount++; + } else { //否则 可能是还没有发送过数据,或者超过重试次数,继续提取queue中数据进行发送 + ICLogger.i("checkSrvResponse CheckCount=" + CheckCount + " Timeout or cmd is null, skip "); + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", "response timeout skip! " + needCheckResponseCMD); + CheckCount = 0; + } + } - if (!queue.isEmpty()) { - StringBuilder stringBuilder = new StringBuilder(); - if (checkNetwork()) { - StringMessage stringMessage = queue.poll(); - if (stringMessage != null) { - String cmd = stringMessage.isFromCache(); - stringBuilder.append(cmd); - stringBuilder.append("\n"); - if (checkNetwork()) { - connection.sendMsg(cmd); + if (!queue.isEmpty()) { + StringBuilder stringBuilder = new StringBuilder(); + if (checkNetwork()) { + StringMessage stringMessage = queue.poll(); + if (stringMessage != null) { + String cmd = stringMessage.isFromCache(); + stringBuilder.append(cmd); + stringBuilder.append("\n"); + if (checkNetwork()) { + connection.sendMsg(cmd); // stringMessage = queue.poll(); - needCheckResponseCMD=cmd; - //如果需要Check - if (NeedCheckServerResponse==true){ - ICLogger.i("checkSrvResponse "+cmd); - ServerResponsed=false; - } - ret=true; - } else { - //已经拿到的缓存,如果刚巧没有网络,就原路放回去 - ICLogger.i("网络不通,不能发送!"); - if (!ServiceUtil.offerQueue(stringMessage,true)){ - ICLogger.i("MessageQueue 已满,数据将被丢弃!"+ stringMessage); - if (Config.LOG_TOFILE) ICLogger.logToFile( "APILog", " queueFullskip! " + stringMessage); + needCheckResponseCMD = cmd; + //如果需要Check + if (NeedCheckServerResponse == true) { + ICLogger.i("checkSrvResponse " + cmd); + ServerResponsed = false; + } + ret = true; + } else { + //已经拿到的缓存,如果刚巧没有网络,就原路放回去 + ICLogger.i("网络不通,不能发送!"); + if (!ServiceUtil.offerQueue(stringMessage, true)) { + ICLogger.i("MessageQueue 已满,数据将被丢弃!" + stringMessage); + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", " queueFullskip! " + stringMessage); + } + ret = false; + } + } else { + stringBuilder.append("no message!\n"); + } + } + str = stringBuilder.toString(); + } else { + str = "no message!\n"; } - ret=false; - } - }else{ - stringBuilder.append("no message!\n"); + ICLogger.i("send cached cmd : \n" + str); + ICLogger.i("\n" + queue.size() + " left in Queue!"); + } finally { + if (mLock != null && mLock.isLocked()) + mLock.unlock(); + } + } + return ret; + } + + public static void sendLocationMSG(String Msg) { + + if (Msg == null || Msg.trim().isEmpty()) { + ICLogger.i("命令为空,跳过发送!"); + return; + } + if (mRuntime.getUseQueue()) { + if (!ServiceUtil.offerQueue(protocolAPIHelper.genStringMessage("queue", Msg))) { + ICLogger.i(" MessageQueue 已满,数据将被丢弃," + Msg); + if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " queueFullskip " + Msg); } - } - str = stringBuilder.toString(); +// if(queue.size()>5) //测试queue 发送逻辑用 + triggerSendThread(); } else { - str = "no message!\n"; + if (checkNetwork()) { + ICLogger.i(" first send " + Msg); + connection.send(protocolAPIHelper.genStringMessage("queue", Msg)); + } else { + ICLogger.i("offline skip " + Msg); + if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " offlineskip " + Msg); + } } - ICLogger.i("send cached cmd : \n"+str); - ICLogger.i("\n"+queue.size()+" left in Queue!"); - }finally { - if(mLock!=null && mLock.isLocked()) - mLock.unlock(); - } } - return ret; - } -public static void sendLocationMSG( String Msg){ + public static PowerManager.WakeLock WakeLockForGetWifiList(Runtime paramRuntime) { + PowerManager.WakeLock wakeLock = ((PowerManager) (paramRuntime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Deliver.class.getSimpleName()); + wakeLock.acquire(120000L); + return wakeLock; + } - if(Msg==null ||Msg.trim().isEmpty()){ - ICLogger.i("命令为空,跳过发送!"); - return ; + public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) { } - if(mRuntime.getUseQueue()){ - if(!ServiceUtil.offerQueue(protocolAPIHelper.genStringMessage("queue",Msg))) { - ICLogger.i(" MessageQueue 已满,数据将被丢弃," + Msg); - if (Config.LOG_TOFILE)ICLogger.logToFile( "APILog", " queueFullskip " + Msg); - } -// if(queue.size()>5) //测试queue 发送逻辑用 - triggerSendThread(); - }else { - if (checkNetwork()) { - ICLogger.i(" first send " + Msg); - connection.send(protocolAPIHelper.genStringMessage("queue",Msg)); - } else { - ICLogger.i("offline skip " + Msg); - if (Config.LOG_TOFILE) ICLogger.logToFile( "APILog", " offlineskip " + Msg); - } + + public void onAttach(Connection paramConnection, Runtime paramRuntime) { } -} - private static int getMinSignalStrength(int paramInt) { - int b = -105; - switch (paramInt) { - case SimSignalUtil.IS_4G: - b = -100; - break; - case SimSignalUtil.IS_2G: - case SimSignalUtil.IS_3G: - default: - break; + + @Override + public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { + return false; } - return b; - } - - public static PowerManager.WakeLock WakeLockForGetWifiList(Runtime paramRuntime) { - PowerManager.WakeLock wakeLock = ((PowerManager)(paramRuntime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Deliver.class.getSimpleName()); - wakeLock.acquire(120000L); - return wakeLock; - } - - private boolean isSilence(Runtime paramRuntime) { - return SharPreferenceUtil.getPrefBoolean((paramRuntime.getContextProxy()).context, "KEY_ISSILENCE", false); - } - - public static void releaseWakeLockForGetWifiList() { - if (WifiListWakeLock == null) { - ICLogger.i("WifiListWakeLock 没有加锁"); - return; - } - if (WifiListWakeLock.isHeld()) { - WifiListWakeLock.release(); - WifiListWakeLock = null; - } - } - - public PowerManager.WakeLock getWakeLock() { - PowerManager.WakeLock wakeLock = ((PowerManager)(this.mRuntime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Deliver.class.getSimpleName()); - wakeLock.acquire(40000L); - return wakeLock; - } - - public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {} - - public void onAttach(Connection paramConnection, Runtime paramRuntime) {} - - @Override - public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { - return false; } - - public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { return false; } - - public void onDetach(Connection paramConnection, Runtime paramRuntime) {} - - public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, final Runtime paramRuntime) { - this.mConnection = paramConnection; - this.mRuntime = paramRuntime; - String cmd = paramStringMessage.cmd(); - - //如果需要检测是否响应。 - if (NeedCheckServerResponse==true){ - - if(needCheckResponseCMD!=null) { - if( cmd.equals(protocolAPIHelper.isCmdStr (needCheckResponseCMD))){ - ICLogger.i("checkSrvResponse "+cmd+" "+protocolAPIHelper.isCmdStr (needCheckResponseCMD)+" is responsed!"); - ServerResponsed=true; - CheckCount=0; - } - } + + public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { + return false; } - ICLogger.i("Deliver receive cmd " + paramStringMessage.cmd()); - if (cmd.equals("SentVoicePacket") ) { - //收到BP07 表示服务器收到一个voicePacket 分包成功,开始检查下一个包是否存在需要发送。 - //收到SentVoicePacket 表示 有一个VoiceMessage要发送,需要从第0个包开始发送语音分包。 - voicePacket voicepacket = voicePacket.getInstanceSent(); - if (voicepacket.getCurrentIndexToSent() < voicepacket.getPacketCount()) { - ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() + voicepacket.getPacketTime() + " send " + (voicepacket.getCurrentIndexToSent() + 1) + "/" + voicepacket.getPacketCount()); - ((NettyConnection) mConnection).sendMsg( - protocolAPIHelper.getVoicePacketItem(voicepacket.getPacketTime(), - voicepacket.getPacketCount(), - (voicepacket.getCurrentIndexToSent() + 1), - voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketLen(), - voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketData(), voicepacket.getFiletype(), voicepacket.getDateType()) - ); - } else { - ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() + " " + voicepacket.getPacketTime() + " sent Done!"); - } - return true; - } else if ("PhotoRemoteTaken".equals(paramStringMessage.cmd())) { - //接收到拍照完毕命令,发送照片 - - String msgUrl=paramStringMessage.isFromCache(); - ICLogger.i("receive taken photo to send "+msgUrl); - //创建voiceConent并添加到数据 - final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", msgUrl,2,2); - - // 把voiceContent拆解成1024的分包 - Util.parseToVoicePacketSent(voiceContent); - //trigger 分包发送 - if (CoreService.getInstance().getConnection()!=null) - CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); - return true; - } else if ("poweroffCheckSim".equals(paramStringMessage.cmd())) { - paramRuntime.setShutdown(true); - - if (SimSignalUtil.hasSimCard(paramRuntime.getContextProxy().context)) - { - ICLogger.i("Has Sim Card Skip poweroff!"); - Util.ShowToast(paramRuntime,"Has Sim Card Skip poweroff!"); - return true; - }else{ - Util.ShowToast(paramRuntime,"Do poweroff!"); - } - Observable.timer(1000L, TimeUnit.MILLISECONDS).subscribe(new Action1() { - public void call(Long param1Long) { - Util.shutdown(); - } - }); - return true; - } else if ("FactoryResetCheckSim".equals(paramStringMessage.cmd())) { - - if (SimSignalUtil.hasSimCard(paramRuntime.getContextProxy().context)) - { - ICLogger.i("Has Sim Card Skip FactoryReset!"); - Util.ShowToast(paramRuntime,"Has Sim Card Skip FactoryReset!"); - - return true; - }else{ - Util.ShowToast(paramRuntime,"Do FactoryReset!"); - } + public void onDetach(Connection paramConnection, Runtime paramRuntime) { + } - Observable.timer(1000L, TimeUnit.MILLISECONDS).subscribe(new Action1() { - public void call(Long param1Long) { - Util.doMasterClear(paramRuntime.getContextProxy().context); - } - }); - return true; - } else if ("poweroff".equals(paramStringMessage.cmd())) { - paramRuntime.setShutdown(true); - Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { - public void call(Long param1Long) { - Util.shutdown(); - } - }); - return true; - } else if ("FactoryReset".equals(paramStringMessage.cmd())) { - Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { - public void call(Long param1Long) { - Util.doMasterClear(paramRuntime.getContextProxy().context); - } - }); - return true; - } else if ("Reboot".equals(paramStringMessage.cmd())) { + public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, final Runtime paramRuntime) { + this.mConnection = paramConnection; + this.mRuntime = paramRuntime; + String cmd = paramStringMessage.cmd(); + + //如果需要检测是否响应。 + if (NeedCheckServerResponse == true) { - Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { - public void call(Long param1Long) { - Util.reboot(paramRuntime.getContextProxy().context); + if (needCheckResponseCMD != null) { + if (cmd.equals(protocolAPIHelper.isCmdStr(needCheckResponseCMD))) { + ICLogger.i("checkSrvResponse " + cmd + " " + protocolAPIHelper.isCmdStr(needCheckResponseCMD) + " is responsed!"); + ServerResponsed = true; + CheckCount = 0; + } + } } - }); - return true; - } else if ("heartbeat".equals(paramStringMessage.cmd())) { - //每次心跳,查询一下 是否有语音消息需要接收。 -// paramConnection.send(protocolAPIHelper.genStringMessage("AP05",protocolAPIHelper.AP05(true))); - } else if ("NewVoice".equals(paramStringMessage.cmd())) - { - Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { - public void call(Long param1Long) { - final Context context = (Deliver.this.mRuntime.getContextProxy()).context; - - Contact param2Contact = new Contact(CATEGORY_GROUP, (mRuntime.getContextProxy()).context.getResources().getString(R.string.all_group), Contact.GROUP_ALL); - int i = mRuntime.getContextProxy().getTelephonyManager().getCallState(); - if (!mRuntime.getBatteryLow() && 1 != i && 2 != i) { - if (Config.do_broadCast_message_no_indication) - { - - ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED+" "+paramStringMessage.isFromCache()); - //广播 voice消息 - Intent intent = new Intent(); - intent.setAction(Constants.ACTION_MESSAGE_RECEIVED); - intent.putExtra(Constants.KEY_MESSAGE_TYPE,"voice"); - intent.putExtra(Constants.KEY_MESSAGE_FROM,"广播消息"); - intent.putExtra(Constants.KEY_MESSAGE_URL,paramStringMessage.isFromCache()); - - // playVoice(context,paramStringMessage.isFromCache()); - context.sendBroadcast(intent); + ICLogger.i("Deliver receive cmd " + paramStringMessage.cmd()); + if (cmd.equals("SentVoicePacket")) { + //收到BP07 表示服务器收到一个voicePacket 分包成功,开始检查下一个包是否存在需要发送。 + //收到SentVoicePacket 表示 有一个VoiceMessage要发送,需要从第0个包开始发送语音分包。 + voicePacket voicepacket = voicePacket.getInstanceSent(); + if (voicepacket.getCurrentIndexToSent() < voicepacket.getPacketCount()) { + ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() + voicepacket.getPacketTime() + " send " + (voicepacket.getCurrentIndexToSent() + 1) + "/" + voicepacket.getPacketCount()); + ((NettyConnection) mConnection).sendMsg( + protocolAPIHelper.getVoicePacketItem(voicepacket.getPacketTime(), + voicepacket.getPacketCount(), + (voicepacket.getCurrentIndexToSent() + 1), + voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketLen(), + voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketData(), voicepacket.getFiletype(), voicepacket.getDateType()) + ); + } else { + ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() + " " + voicepacket.getPacketTime() + " sent Done!"); + } + return true; + } else if ("PhotoRemoteTaken".equals(paramStringMessage.cmd())) { + //接收到拍照完毕命令,发送照片 + + String msgUrl = paramStringMessage.isFromCache(); + ICLogger.i("receive taken photo to send " + msgUrl); + //创建voiceConent并添加到数据 + final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", msgUrl, 2, 2); + + // 把voiceContent拆解成1024的分包 + Util.parseToVoicePacketSent(voiceContent); + //trigger 分包发送 + if (CoreService.getInstance().getConnection() != null) + CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + return true; + } else if ("poweroffCheckSim".equals(paramStringMessage.cmd())) { + paramRuntime.setShutdown(true); + + if (SimSignalUtil.hasSimCard(paramRuntime.getContextProxy().context)) { + ICLogger.i("Has Sim Card Skip poweroff!"); + Util.ShowToast(paramRuntime, "Has Sim Card Skip poweroff!"); + return true; + } else { + Util.ShowToast(paramRuntime, "Do poweroff!"); } - if (Config.noVoiceNotifyDialog==false) { + Observable.timer(1000L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + Util.shutdown(); + } + }); + return true; + } else if ("FactoryResetCheckSim".equals(paramStringMessage.cmd())) { + + if (SimSignalUtil.hasSimCard(paramRuntime.getContextProxy().context)) { + ICLogger.i("Has Sim Card Skip FactoryReset!"); + Util.ShowToast(paramRuntime, "Has Sim Card Skip FactoryReset!"); - Intent intent = new Intent(); - //显示提示窗口 - intent.setAction(DIALOG_ACTION); - intent.putExtra("contact", (Parcelable) param2Contact); - context.sendBroadcast(intent); + return true; + } else { + Util.ShowToast(paramRuntime, "Do FactoryReset!"); } - } - } - }); - return true; - }else if ("findDev".equals(paramStringMessage.cmd())) { - Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { - public void call(Long param1Long) { - final Context context = (Deliver.this.mRuntime.getContextProxy()).context; - - Intent intent = new Intent(); - ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED+" "+paramStringMessage.isFromCache()); - //显示提示窗口 - intent.setAction(DIALOG_ACTION); - intent.putExtra("findDev", "Find Device"); - context.sendBroadcast(intent); + Observable.timer(1000L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + Util.doMasterClear(paramRuntime.getContextProxy().context); + } + }); + return true; + } else if ("poweroff".equals(paramStringMessage.cmd())) { + paramRuntime.setShutdown(true); + Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + Util.shutdown(); + } + }); + return true; + } else if ("FactoryReset".equals(paramStringMessage.cmd())) { + Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + Util.doMasterClear(paramRuntime.getContextProxy().context); + } + }); + return true; + } else if ("Reboot".equals(paramStringMessage.cmd())) { + + Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + Util.reboot(paramRuntime.getContextProxy().context); + } + }); + return true; + } else if ("heartbeat".equals(paramStringMessage.cmd())) { + //每次心跳,查询一下 是否有语音消息需要接收。 +// paramConnection.send(protocolAPIHelper.genStringMessage("AP05",protocolAPIHelper.AP05(true))); + } else if ("NewVoice".equals(paramStringMessage.cmd())) { + ICLogger.log(TAG, "NewVoice handler...."); + Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe((Action1) param1Long -> { + final Context context = (mRuntime.getContextProxy()).context; + Contact param2Contact = new Contact(CATEGORY_GROUP, (mRuntime.getContextProxy()).context.getResources().getString(R.string.all_group), Contact.GROUP_ALL); + int i = mRuntime.getContextProxy().getTelephonyManager().getCallState(); + if (!mRuntime.getBatteryLow() && 1 != i && 2 != i) { + if (Config.do_broadCast_message_no_indication) { + ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED + " " + paramStringMessage.isFromCache()); + //广播 voice消息 + Intent intent = new Intent(); + intent.setAction(Constants.ACTION_MESSAGE_RECEIVED); + intent.putExtra(Constants.KEY_MESSAGE_TYPE, "voice"); + intent.putExtra(Constants.KEY_MESSAGE_FROM, "广播消息"); + intent.putExtra(Constants.KEY_MESSAGE_URL, paramStringMessage.isFromCache()); + // playVoice(context,paramStringMessage.isFromCache()); + context.sendBroadcast(intent); + } + + if (!Config.noVoiceNotifyDialog) { + Intent intent = new Intent(); + //显示提示窗口 + intent.setAction(DIALOG_ACTION); + intent.putExtra("contact", (Parcelable) param2Contact); + context.sendBroadcast(intent); + } + + } + }); + return true; + } else if ("findDev".equals(paramStringMessage.cmd())) { + Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + final Context context = (Deliver.this.mRuntime.getContextProxy()).context; + + Intent intent = new Intent(); + ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED + " " + paramStringMessage.isFromCache()); + //显示提示窗口 + intent.setAction(DIALOG_ACTION); + intent.putExtra("findDev", "Find Device"); + context.sendBroadcast(intent); + } + }); + return true; + } else if ("StartMonitor".equals(paramStringMessage.cmd())) { + + String recordfilepath = Util.getRecordfilePath(mRuntime, TimeUtil.getSystemTime3()); + int recordtime = Integer.parseInt(paramStringMessage.isFromCache().trim()); + new Handler().post(new Runnable() { + @Override + public void run() { + AudioService.getInstance().startRecord(recordfilepath); + } + }); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + AudioService.getInstance().stopRecord(); + ICLogger.i("Monitor Record to send " + recordfilepath); + //创建voiceConent并添加到数据 + final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", recordfilepath, 1, 1); + + // 把voiceContent拆解成1024的分包 + Util.parseToVoicePacketSent(voiceContent); + //trigger 分包发送 + if (CoreService.getInstance().getConnection() != null) + CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + } + }, recordtime * 1000); + return true; } - }); - return true; - }else if ("StartMonitor".equals(paramStringMessage.cmd())) { - String recordfilepath=Util.getRecordfilePath(mRuntime, TimeUtil.getSystemTime3()); - int recordtime=Integer.parseInt(paramStringMessage.isFromCache().trim()); - new Handler().post(new Runnable() { - @Override - public void run() { - AudioService.getInstance().startRecord(recordfilepath); + + return false; + } + + public static void releaseOneWakeLock() { + if (ReceiveWakeLock == null) { + ICLogger.i("ReceiveWakeLock 没有加锁"); + return; } - }); - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - AudioService.getInstance().stopRecord(); - ICLogger.i("Monitor Record to send "+recordfilepath); - //创建voiceConent并添加到数据 - final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", recordfilepath,1,1); - - // 把voiceContent拆解成1024的分包 - Util.parseToVoicePacketSent(voiceContent); - //trigger 分包发送 - if (CoreService.getInstance().getConnection()!=null) - CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + if (!wakeLockWifiList && !wakeLockWifiSet && ReceiveWakeLock.isHeld()) { + ReceiveWakeLock.release(); + ReceiveWakeLock = null; } - },recordtime*1000); - return true; } + public static void connectToWifi(String ssid, String pwd, String encryptType) { + int networkid; + final WifiManager wifiManager = mRuntime.getContextProxy().getWifiManager(); + wifiEnabled = wifiManager.isWifiEnabled(); + if (!wifiEnabled) { + //没开就打开wifi + Util.turnOnWifiForConnect(mRuntime.getContextProxy().context, mRuntime); + } + if (Util.isConnectWifi(mRuntime.getContextProxy().context)) { + networkid = wifiManager.getConnectionInfo().getNetworkId(); + wifiManager.disconnect(); + wifiManager.removeNetwork(networkid); + wifiManager.saveConfiguration(); + } + Deliver.isAppSetWifi = 1; + WifiConfiguration wifiConfiguration = Util.GetconfigWifiInfo(mRuntime.getContextProxy().context, ssid, pwd, encryptType); + networkid = wifiConfiguration.networkId; + wifiManager.removeNetwork(networkid); + wifiManager.saveConfiguration(); + networkid = wifiManager.addNetwork(wifiConfiguration); + if (Util.connectWifiByReflectMethod(mRuntime.getContextProxy().context, networkid) == null && !wifiManager.enableNetwork(networkid, true)) { + ICLogger.i("连接失败 3"); + SystemClock.sleep(3000L); + + wifiManager.setWifiEnabled(false); + wakeLockWifiSet = false; + releaseOneWakeLock(); + WifiListWakeLock = Deliver.WakeLockForGetWifiList(mRuntime); + + return; + } - return false; - } - - - private void playVoice(Context paramContext,String voicefile) { - AudioService.getInstance().play(voicefile); - } - - public static void releaseOneWakeLock() { - if (ReceiveWakeLock == null) { - ICLogger.i("ReceiveWakeLock 没有加锁"); - return; - } - if (!wakeLockWifiList && !wakeLockWifiSet && ReceiveWakeLock.isHeld()) { - ReceiveWakeLock.release(); - ReceiveWakeLock = null; - } - } - - public void releaseReceiveWakeLock() { - if (this.ReceiveWakeLock == null) { - ICLogger.i("ReceiveWakeLock 没有加锁"); - return; - } - if (this.ReceiveWakeLock.isHeld()) { - this.ReceiveWakeLock.release(); - this.wakeLockWifiList = false; - this.wakeLockWifiSet = false; - this.ReceiveWakeLock = null; - } - } - public static void connectToWifi(String ssid,String pwd,String encryptType){ - int networkid; - final WifiManager wifiManager = mRuntime.getContextProxy().getWifiManager(); - wifiEnabled = wifiManager.isWifiEnabled(); - if (!wifiEnabled) - { - //没开就打开wifi - Util.turnOnWifiForConnect(mRuntime.getContextProxy().context, mRuntime); - } - if (Util.isConnectWifi(mRuntime.getContextProxy().context)) { - networkid = wifiManager.getConnectionInfo().getNetworkId(); - wifiManager.disconnect(); - wifiManager.removeNetwork(networkid); - wifiManager.saveConfiguration(); - } - - Deliver.isAppSetWifi = 1; - WifiConfiguration wifiConfiguration = Util.GetconfigWifiInfo(mRuntime.getContextProxy().context, ssid, pwd, encryptType); - networkid = wifiConfiguration.networkId; - wifiManager.removeNetwork(networkid); - wifiManager.saveConfiguration(); - networkid = wifiManager.addNetwork(wifiConfiguration); - if (Util.connectWifiByReflectMethod(mRuntime.getContextProxy().context, networkid) == null && !wifiManager.enableNetwork(networkid, true)) { - ICLogger.i("连接失败 3"); - SystemClock.sleep(3000L); - - wifiManager.setWifiEnabled(false); - wakeLockWifiSet = false; - releaseOneWakeLock(); - WifiListWakeLock = Deliver.WakeLockForGetWifiList(mRuntime); - - return; - } + if (!wifiEnabled) { + //原来wifi没开就关闭wifi + Util.turnOffWifiForSleep(mRuntime.getContextProxy().context, mRuntime); + } - if(!wifiEnabled ){ - //原来wifi没开就关闭wifi - Util.turnOffWifiForSleep(mRuntime.getContextProxy().context, mRuntime); } - } - public void setWakeupAlarm(Runtime paramRuntime) { - AlarmManager alarmManager = (AlarmManager)(paramRuntime.getContextProxy()).context.getSystemService(Context.ALARM_SERVICE); - Intent intent = new Intent((paramRuntime.getContextProxy()).context, CoreService.class); - intent.setAction(ACTION_WAKEUP_ALARM); - PendingIntent pendingIntent = PendingIntent.getService((paramRuntime.getContextProxy()).context, 0, intent, FLAG_UPDATE_CURRENT); - alarmManager.cancel(pendingIntent); - long l = SystemClock.elapsedRealtime(); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("SDK_INT="); - stringBuilder.append(Build.VERSION.SDK_INT); - stringBuilder.append(",m=,"); - stringBuilder.append(23); - stringBuilder.append(",kitkat="); - stringBuilder.append(19); - ICLogger.i(stringBuilder.toString()); - if (Build.VERSION.SDK_INT >= 19) { - alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); - return; - } - alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); - } - - class ConWifiReceiver extends BroadcastReceiver { - ConWifiReceiver() { + public void setWakeupAlarm(Runtime paramRuntime) { + AlarmManager alarmManager = (AlarmManager) (paramRuntime.getContextProxy()).context.getSystemService(Context.ALARM_SERVICE); + Intent intent = new Intent((paramRuntime.getContextProxy()).context, CoreService.class); + intent.setAction(ACTION_WAKEUP_ALARM); + PendingIntent pendingIntent = PendingIntent.getService((paramRuntime.getContextProxy()).context, 0, intent, FLAG_UPDATE_CURRENT); + alarmManager.cancel(pendingIntent); + long l = SystemClock.elapsedRealtime(); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("SDK_INT="); + stringBuilder.append(Build.VERSION.SDK_INT); + stringBuilder.append(",m=,"); + stringBuilder.append(23); + stringBuilder.append(",kitkat="); + stringBuilder.append(19); + ICLogger.i(stringBuilder.toString()); + if (Build.VERSION.SDK_INT >= 19) { + alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); + return; + } + alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); } - public void onReceive(final Context var1, Intent var2) { - String var3 = var2.getAction(); - StringBuilder var4 = new StringBuilder(); - var4.append(" receive action="); - var4.append(var3); - var4.append(" isAppSetWifi="); - var4.append(Deliver.isAppSetWifi); - ICLogger.i(var4.toString()); - if (var3.equals("android.net.conn.CONNECTIVITY_CHANGE")) { - if (Deliver.isAppSetWifi == 0) { - return; + class ConWifiReceiver extends BroadcastReceiver { + ConWifiReceiver() { } - if (Deliver.isAppSetWifi == 1) { - Deliver.isAppSetWifi = 0; - if (Deliver.this.delayHandler != null) { - Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); - Deliver.this.delayHandler = null; - } - } + public void onReceive(final Context var1, Intent var2) { + String var3 = var2.getAction(); + StringBuilder var4 = new StringBuilder(); + var4.append(" receive action="); + var4.append(var3); + var4.append(" isAppSetWifi="); + var4.append(Deliver.isAppSetWifi); + ICLogger.i(var4.toString()); + if (var3.equals("android.net.conn.CONNECTIVITY_CHANGE")) { + if (Deliver.isAppSetWifi == 0) { + return; + } - WifiManager var5 = (WifiManager)var1.getSystemService(Context.WIFI_SERVICE); - if (((ConnectivityManager)var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) { - ICLogger.i("连接成功"); - Deliver.isAppSetWifi = 0; - Deliver.haveSendH42 = true; - Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort()); - if (Deliver.this.delayHandler != null) { - Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); - Deliver.this.delayHandler = null; - } - - var1.unregisterReceiver(Deliver.this.mMyWifiReceiver); - Deliver.this.mMyWifiReceiver = null; - Deliver.this.wakeLockWifiSet = false; - Deliver.this.releaseOneWakeLock(); - Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); - } else { - StringBuilder var6 = new StringBuilder(); - var6.append("连接失败 222 delayHandler="); - var6.append(Deliver.this.delayHandler); - ICLogger.i(var6.toString()); - Deliver.isAppSetWifi = 2; - var5.reconnect(); - if (Deliver.this.delayHandler == null) { - Deliver.this.delayHandler = new Handler(); - Deliver.this.delayTh = new Runnable() { - public void run() { - StringBuilder var1x = new StringBuilder(); - var1x.append("连接失败 超时 wifiEnabled="); - var1x.append(Deliver.this.wifiEnabled); - ICLogger.i(var1x.toString()); - if (Deliver.isAppSetWifi != 1) { - Deliver.isAppSetWifi = 0; - var1.unregisterReceiver(Deliver.this.mMyWifiReceiver); - Deliver.this.mMyWifiReceiver = null; - WifiManager var3 = (WifiManager)var1.getSystemService(Context.WIFI_SERVICE); - if (((ConnectivityManager)var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) { - ICLogger.i("连接成功 1"); + if (Deliver.isAppSetWifi == 1) { + Deliver.isAppSetWifi = 0; + if (Deliver.this.delayHandler != null) { + Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); + Deliver.this.delayHandler = null; + } + } + + WifiManager var5 = (WifiManager) var1.getSystemService(Context.WIFI_SERVICE); + if (((ConnectivityManager) var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) { + ICLogger.i("连接成功"); + Deliver.isAppSetWifi = 0; Deliver.haveSendH42 = true; Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort()); + if (Deliver.this.delayHandler != null) { + Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); + Deliver.this.delayHandler = null; + } + + var1.unregisterReceiver(Deliver.this.mMyWifiReceiver); + Deliver.this.mMyWifiReceiver = null; Deliver.this.wakeLockWifiSet = false; Deliver.this.releaseOneWakeLock(); Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); - } else { - int var2 = var3.getConnectionInfo().getNetworkId(); - if (var2 != -1) { - var3.disableNetwork(var2); + } else { + StringBuilder var6 = new StringBuilder(); + var6.append("连接失败 222 delayHandler="); + var6.append(Deliver.this.delayHandler); + ICLogger.i(var6.toString()); + Deliver.isAppSetWifi = 2; + var5.reconnect(); + if (Deliver.this.delayHandler == null) { + Deliver.this.delayHandler = new Handler(); + Deliver.this.delayTh = new Runnable() { + public void run() { + StringBuilder var1x = new StringBuilder(); + var1x.append("连接失败 超时 wifiEnabled="); + var1x.append(Deliver.this.wifiEnabled); + ICLogger.i(var1x.toString()); + if (Deliver.isAppSetWifi != 1) { + Deliver.isAppSetWifi = 0; + var1.unregisterReceiver(Deliver.this.mMyWifiReceiver); + Deliver.this.mMyWifiReceiver = null; + WifiManager var3 = (WifiManager) var1.getSystemService(Context.WIFI_SERVICE); + if (((ConnectivityManager) var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) { + ICLogger.i("连接成功 1"); + Deliver.haveSendH42 = true; + Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort()); + Deliver.this.wakeLockWifiSet = false; + Deliver.this.releaseOneWakeLock(); + Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); + } else { + int var2 = var3.getConnectionInfo().getNetworkId(); + if (var2 != -1) { + var3.disableNetwork(var2); // ServiceUtil.offerQueue(API.H42(Deliver.this.mRuntime, "3")); - Deliver.this.wakeLockWifiSet = false; - Deliver.this.releaseOneWakeLock(); - Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); - } else { - ICLogger.i("连接失败 2-2"); + Deliver.this.wakeLockWifiSet = false; + Deliver.this.releaseOneWakeLock(); + Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); + } else { + ICLogger.i("连接失败 2-2"); // ServiceUtil.offerQueue(API.H42(Deliver.this.mRuntime, "3")); - Deliver.this.wakeLockWifiSet = false; - Deliver.this.releaseOneWakeLock(); - Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); - } - - if (!Deliver.this.wifiEnabled) { - var3.setWifiEnabled(false); + Deliver.this.wakeLockWifiSet = false; + Deliver.this.releaseOneWakeLock(); + Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); + } + + if (!Deliver.this.wifiEnabled) { + var3.setWifiEnabled(false); + } + } + + Deliver.this.delayHandler = null; + } + } + }; + Deliver.this.delayHandler.postDelayed(Deliver.this.delayTh, 30000L); } - } - - Deliver.this.delayHandler = null; } - } - }; - Deliver.this.delayHandler.postDelayed(Deliver.this.delayTh, 30000L); - } - } - } + } + } } - } - + } diff --git a/app/src/main/java/com/ic/protocols/protocol_jiai.java b/app/src/main/java/com/ic/protocols/protocol_jiai.java index e253d683..61c6e79d 100644 --- a/app/src/main/java/com/ic/protocols/protocol_jiai.java +++ b/app/src/main/java/com/ic/protocols/protocol_jiai.java @@ -4,6 +4,7 @@ import android.content.ComponentName; import android.content.Intent; import android.net.Uri; import android.os.Environment; +import android.util.Log; import com.enqualcomm.support.Config; import com.enqualcomm.support.CoreService; @@ -38,8 +39,8 @@ public class protocol_jiai { 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 { /*终端发起*/ @@ -177,12 +178,12 @@ public class protocol_jiai { cmdMap.put(CMD_TYPE.BP93, "BP93"); } - private NettyConnection mConnection=null; - private Runtime mRuntime=null; + private NettyConnection mConnection = null; + private Runtime mRuntime = null; - public protocol_jiai(NettyConnection connect,Runtime runtime) { - mConnection=connect; - mRuntime=runtime; + public protocol_jiai(NettyConnection connect, Runtime runtime) { + mConnection = connect; + mRuntime = runtime; } @@ -201,7 +202,7 @@ public class protocol_jiai { return ""; } - }else{ + } else { return ""; } @@ -214,6 +215,7 @@ public class protocol_jiai { return ""; } + private void log(String msg) { ICLogger.log(TAG, msg); } @@ -223,13 +225,13 @@ public class protocol_jiai { } - /**/ - 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); return sm; } + /* 返回true 表示 cmd 全部解析成功 返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用 @@ -240,11 +242,11 @@ public class protocol_jiai { 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()); /* 如果不是 #结尾,就认为 接收数据不全,置位。 */ @@ -253,7 +255,7 @@ public class protocol_jiai { } String[] cmdlist = cmd_msgbuf.split(CMDEND); int listlen = cmdlist.length; - log("listlen "+listlen); + log("listlen " + listlen); /* 如果解析出来的cmdlist不是空,且数据不是完整cmd则保留 最后一条数据到last_inCompletecmd */ @@ -269,7 +271,7 @@ public class protocol_jiai { 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); } @@ -283,6 +285,7 @@ public class protocol_jiai { cmdbuf = new StringBuffer().append(last_inCompletecmd); return ret; } + public int getBP28Amrlen(String cmd) { String Name; @@ -292,16 +295,16 @@ public class protocol_jiai { int packetLen; - String[] msg=cmd.split(CMDSPLIT); - if (msg.length>=6){ + String[] msg = cmd.split(CMDSPLIT); + if (msg.length >= 6) { - Name=msg[1]; - appendIndex=msg[2]; - packetCount= Integer.parseInt(msg[3]); - currentId= Integer.parseInt(msg[4]); - packetLen= Integer.parseInt(msg[5]); + Name = msg[1]; + appendIndex = msg[2]; + packetCount = Integer.parseInt(msg[3]); + currentId = Integer.parseInt(msg[4]); + packetLen = Integer.parseInt(msg[5]); - StringBuffer stringBuffer=new StringBuffer(); + StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("getBP28AmrLen name = ").append(Name) .append(",appendIndex = ").append(appendIndex) .append(",packetCount = ").append(packetCount) @@ -309,14 +312,15 @@ public class protocol_jiai { .append(",packetLen = ").append(packetLen); - log( stringBuffer.toString()); + log(stringBuffer.toString()); return packetLen; - }else{ - log("getBP28AmrLen","format Error"); + } else { + log("getBP28AmrLen", "format Error"); } return -1; } + /*登录*/ public static String AP00(Runtime ds) { //示例数据:IWAP00867155030001063# @@ -324,12 +328,12 @@ public class protocol_jiai { } //处理 登录 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]); @@ -348,27 +352,28 @@ public class protocol_jiai { // Set Datetime 20200505112734 // Set TimeZone 8 - }else{ - log("handleBP00","format Error"); + } else { + log("handleBP00", "format Error"); } } public static String AP03(Runtime ds) { //示例数据:IWAP03,06000908000102,5555,30# IWAP03,000000null00000,0,0# - return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength()))) + return 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 String AP10(Runtime ds){ + public static String AP10(Runtime ds) { /** * IWAP10080524A2232.9806N11404.9355E000.1 061830 323.87 060 009 080 0 05 02, @@ -392,7 +397,7 @@ public class protocol_jiai { * 00:第一个0:是否需要回复地址信息,0:不回复,1回复. */ return 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.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) @@ -410,19 +415,18 @@ public class protocol_jiai { // 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 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.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 String AP02(Runtime ds) { //示例数据:IWAP02, @@ -444,14 +448,14 @@ public class protocol_jiai { // 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.AP02)).append(CMDSPLIT) .append(ds.getLanguage()).append(CMDSPLIT) .append(0).append(CMDSPLIT) //为0时不回复地址 @@ -460,13 +464,12 @@ public class protocol_jiai { } //处理 定位 BP01 - public void handleBP02(String cmd){ + public void handleBP02(String cmd) { log("BP02定位接收成功"); } - - public static String APXL(String id){ + public static String APXL(String id) { //设备响应: IWAPXL,080835# //080835:指令流水号 return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL)) @@ -476,10 +479,11 @@ public class protocol_jiai { /** * 测量心率 + * * @param cmd * @param connection */ - public void handleBPXL(String cmd, Connection connection){ + public void handleBPXL(String cmd, Connection connection) { //IWBPXL,353456789012345,080835# //说明: //IW:标识符 @@ -488,19 +492,19 @@ public class protocol_jiai { //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); - connection.send(genStringMessage("APXL",APXL(index))); - }else{ + 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(genStringMessage("APXL", APXL(index))); + } else { ICLogger.i("BPXL format error!"); } } - public static String APXY(String id){ + public static String APXY(String id) { //设备响应: IWAPXY,080835# //080835:指令流水号 return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY)) @@ -510,10 +514,11 @@ public class protocol_jiai { /** * 测量血压 + * * @param cmd * @param connection */ - public void handleBPXY(String cmd,Connection connection){ + public void handleBPXY(String cmd, Connection connection) { //IWBPXY,353456789012345,080835# //说明: //IW:标识符 @@ -522,21 +527,20 @@ public class protocol_jiai { //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); - connection.send(genStringMessage("APXY",APXY(index))); - }else{ + 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(genStringMessage("APXY", APXY(index))); + } else { ICLogger.i("BPXY format error!"); } } - - public static String APJZ(String id,String BPH,String BPL,String Age,String Sex){ + public static String APJZ(String id, String BPH, String BPL, String Age, String Sex) { //设备响应: IWAPJZ,792997,120,85,42,1# //792997:指令流水号 // 高压120,低压85,年龄42,1 男性 @@ -550,12 +554,11 @@ public class protocol_jiai { } /** - * * @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# @@ -568,58 +571,58 @@ public class protocol_jiai { //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(genStringMessage("APJZ",APJZ(index,strBPH,strBPL,strAge,strSex))); - 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")?"男":"女")); - }else{ + 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(genStringMessage("APJZ", APJZ(index, strBPH, strBPL, strAge, strSex))); + 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") ? "男" : "女")); + } else { ICLogger.i("BPXY format error!"); } } - //重启 - public static String AP18(String index){ + public static String AP18(String index) { return 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(genStringMessage("AP18",AP18(cmdlist[2]))); + connection.send(genStringMessage("AP18", AP18(cmdlist[2]))); } } //恢复出厂设置 - public static String AP17(String index){ + public static String AP17(String index) { return 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(genStringMessage("AP17",AP17(cmdlist[2]))); + connection.send(genStringMessage("AP17", AP17(cmdlist[2]))); } } @@ -627,24 +630,25 @@ public class protocol_jiai { //关机 - public static String AP31(String index){ + public static String AP31(String index) { return 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(genStringMessage("AP31",AP31(cmdlist[2]))); + connection.send(genStringMessage("AP31", AP31(cmdlist[2]))); } } //设置SOS号码 - public static String AP12(String index,String phNum1,String phNum2,String phNum3){ + public static String AP12(String index, String phNum1, String phNum2, String phNum3) { return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12)) .append(CMDSPLIT).append(index) .append(CMDSPLIT).append(phNum1) @@ -654,31 +658,34 @@ public class protocol_jiai { } //设置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(genStringMessage("AP12",AP12(index,phNum1,phNum2,phNum3))); - - ArrayList contactArray=new ArrayList(); - 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(genStringMessage("AP12", AP12(index, phNum1, phNum2, phNum3))); + + ArrayList contactArray = new ArrayList(); + 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 String AP14(String index,String[] phnumbs){ + public static String AP14(String index, String[] phnumbs) { return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14)) .append(CMDSPLIT).append(index) .append(CMDSPLIT).append(phnumbs[0]) @@ -693,8 +700,9 @@ public class protocol_jiai { .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, @@ -709,57 +717,57 @@ public class protocol_jiai { * 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(genStringMessage("AP14",AP14(index,phnums))); - ArrayList contactArray=new ArrayList(); - 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(genStringMessage("AP14", AP14(index, phnums))); + ArrayList contactArray = new ArrayList(); + 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); } } @@ -768,25 +776,25 @@ public class protocol_jiai { // 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 String AP85(Runtime ds,String cmddata){ + public static String AP85(Runtime ds, String cmddata) { //示例数据:IWAP49,68## return 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 @@ -802,28 +810,28 @@ public class protocol_jiai { //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 alarmlist=new ArrayList<>(); - if (datalist.length >0){ - for (int i =0 ; i< datalist.length;i++){ - String [] cmdarglist=datalist[i].split(","); - - if (i == 0){ - if (cmdarglist.length == 9){ - imei=cmdarglist[1]; - cmdindex=cmdarglist[2]; - all_alarmswitch=Integer.parseInt(cmdarglist[3]); - alarmcount=Integer.parseInt(cmdarglist[4]); - alarmtime=cmdarglist[5]; - repeat=cmdarglist[6]; - alarmswitch=Integer.parseInt(cmdarglist[7]); + 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 alarmlist = new ArrayList<>(); + if (datalist.length > 0) { + for (int i = 0; i < datalist.length; i++) { + String[] cmdarglist = datalist[i].split(","); + + if (i == 0) { + if (cmdarglist.length == 9) { + imei = cmdarglist[1]; + cmdindex = cmdarglist[2]; + all_alarmswitch = Integer.parseInt(cmdarglist[3]); + alarmcount = Integer.parseInt(cmdarglist[4]); + alarmtime = cmdarglist[5]; + repeat = cmdarglist[6]; + alarmswitch = Integer.parseInt(cmdarglist[7]); alarmtype = Integer.parseInt(cmdarglist[8]); log(new StringBuilder("imei ").append(imei) .append(", cmdindex ").append(cmdindex) @@ -838,21 +846,21 @@ public class protocol_jiai { .append(", alarmtype=").append(alarmtype) .toString() ); - alarmlist.add(new Alarm("ST"+alarmtime.substring(0,2)+"."+alarmtime.substring(2),"W"+repeat,"CON",alarmswitch==1?"ON":"OFF","闹铃")); - - }else if (cmdarglist.length == 5) { - imei=cmdarglist[1]; - cmdindex=cmdarglist[2]; - all_alarmswitch=Integer.parseInt(cmdarglist[3]); - alarmcount=Integer.parseInt(cmdarglist[4]); - }else{ + alarmlist.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃")); + + } else if (cmdarglist.length == 5) { + imei = cmdarglist[1]; + cmdindex = cmdarglist[2]; + all_alarmswitch = Integer.parseInt(cmdarglist[3]); + alarmcount = Integer.parseInt(cmdarglist[4]); + } else { log("data len is too small!"); } - }else{ - if (cmdarglist.length == 4){ - alarmtime=cmdarglist[0]; - repeat=cmdarglist[1]; - alarmswitch=Integer.parseInt(cmdarglist[2]); + } else { + if (cmdarglist.length == 4) { + alarmtime = cmdarglist[0]; + repeat = cmdarglist[1]; + alarmswitch = Integer.parseInt(cmdarglist[2]); alarmtype = Integer.parseInt(cmdarglist[3]); log(new StringBuilder("set alarmtime ").append(alarmtime) @@ -862,9 +870,9 @@ public class protocol_jiai { .toString() ); - alarmlist.add(new Alarm("ST"+alarmtime.substring(0,2)+"."+alarmtime.substring(2),"W"+repeat,"CON",alarmswitch==1?"ON":"OFF","闹铃")); + alarmlist.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃")); - }else{ + } else { log("data len is too small!"); } @@ -877,10 +885,10 @@ public class protocol_jiai { } //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(genStringMessage("AP85",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(genStringMessage("AP85", AP85(runtime, replycmd))); } @@ -904,9 +912,7 @@ public class protocol_jiai { // } - - - 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:标识符 @@ -922,51 +928,50 @@ public class protocol_jiai { //如果设备回复确认数据包接收失败状态,则重复发送上一个数据包 - 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 , NettyConnection connection ){ + public void handleBP07(String cmd, NettyConnection connection) { //平台响应: IWBP07,20140818064408,6,1,1# //20140818064408:设备语音时间,yyyyMMddHHmmss 格式的年月日时分秒 //6:语音包分包总数 //1:当前设备收到的是第几个包 //1:表示服务器接受数据成功,0表示服务器接受数据失败 - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==5){ - String time=cmdlist[1]; - int packetCount=Integer.parseInt(cmdlist[2]); - int packetIndex=Integer.parseInt(cmdlist[3]); - int receiveSuccess=Integer.parseInt(cmdlist[4]); - ICLogger.i("服务器在"+time+" 收到语音 "+packetIndex+"/"+packetCount+" "+ (receiveSuccess==1?"成功":"失敗")); - if (receiveSuccess == 1){ + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 5) { + String time = cmdlist[1]; + int packetCount = Integer.parseInt(cmdlist[2]); + int packetIndex = Integer.parseInt(cmdlist[3]); + int receiveSuccess = Integer.parseInt(cmdlist[4]); + ICLogger.i("服务器在" + time + " 收到语音 " + packetIndex + "/" + packetCount + " " + (receiveSuccess == 1 ? "成功" : "失敗")); + if (receiveSuccess == 1) { //如果服务器接收 语音成功,则设置下一个要发送的语音包Index,当index == packetCount的时候表示所有包发送完毕,停止继续发送 voicePacket.getInstanceSent().setCurrentIndexToSent(packetIndex); } //发送消息,再次检查要发送的语音包,确认其发送完毕 - connection.DeliverCMDMessageToSystem("SentVoicePacket","SentVoicePacket"); + connection.DeliverCMDMessageToSystem("SentVoicePacket", "SentVoicePacket"); - }else{ + } else { ICLogger.i(" BP07 Format error!"); } } - - public static String AP33(String cmdindex,int workMode){ + public static String AP33(String cmdindex, int workMode) { //IWAP33,080835,1# //080835:指令流水号 //1:设置信息,供服务器同步 @@ -977,7 +982,7 @@ public class protocol_jiai { } //设置工作模式 - public void handleBP33(Connection connection,Runtime runtime,String cmd){ + public void handleBP33(Connection connection, Runtime runtime, String cmd) { // IWBP33,867155030001063,560555,1 // IW:标识符 @@ -986,34 +991,34 @@ public class protocol_jiai { // 080835:指令流水号 // 1:设备工作模式,1:正常模式,2:省电模式,3:紧急模式 - String[] cmdlist=cmd.split(","); - if (cmdlist.length == 4){ + String[] cmdlist = cmd.split(","); + if (cmdlist.length == 4) { - log("work mode "+cmdlist[3]); - int mod=Integer.parseInt(cmdlist[3]); - int Cycle=900; - switch(mod){ + log("work mode " + cmdlist[3]); + int mod = Integer.parseInt(cmdlist[3]); + int Cycle = 900; + switch (mod) { case ICLocation.NORMAL_MOD: - Cycle=900; + Cycle = 900; break; case ICLocation.LOWPOWER_MOD: - Cycle=3600; + Cycle = 3600; break; case ICLocation.EMERGNECY_MOD: case ICLocation.REALTIME_MOD: - Cycle=60; + Cycle = 60; break; } - String msg=AP33(cmdlist[2],mod); + String msg = AP33(cmdlist[2], mod); //设定当前工作模式及循环频率 - connection.send(genStringMessage("AP33",msg)); - log("reply msg "+msg); - log("LOCATION_MODE "+LOCATION_MODE+" mod "+ mod); - Config.setLocationMode(runtime.getContextProxy().context,mod); - Config.setLocationCycle(runtime.getContextProxy().context,Cycle); + connection.send(genStringMessage("AP33", msg)); + log("reply msg " + msg); + log("LOCATION_MODE " + LOCATION_MODE + " mod " + mod); + Config.setLocationMode(runtime.getContextProxy().context, mod); + Config.setLocationCycle(runtime.getContextProxy().context, Cycle); runtime.getLocationInstance().setLocation_cycle(Cycle); runtime.getLocationInstance().setWorkingMod(mod); // CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); @@ -1023,7 +1028,7 @@ public class protocol_jiai { } - public static String AP34(String cmdindex,int workMode){ + public static String AP34(String cmdindex, int workMode) { //IWAP34,588854,1# //080835:指令流水号 //8:模式 @@ -1034,7 +1039,7 @@ public class protocol_jiai { } //设置自定义工作模式 - 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:标识符 @@ -1043,28 +1048,28 @@ public class protocol_jiai { // 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]); - int mod=Integer.parseInt(cmdlist[3]); - int Cycle=Integer.parseInt(cmdlist[4]); - int gpson=Integer.parseInt(cmdlist[5]); + log("work mode " + cmdlist[3]); + int mod = Integer.parseInt(cmdlist[3]); + int Cycle = Integer.parseInt(cmdlist[4]); + int gpson = Integer.parseInt(cmdlist[5]); - String msg=AP34(cmdlist[2],mod); + String msg = AP34(cmdlist[2], mod); //设定当前工作模式及循环频率 - connection.send(genStringMessage("AP34",msg)); + connection.send(genStringMessage("AP34", msg)); - if(gpson==1){ - mod=ICLocation.CUSTOM_MOD8_GPS; - }else{ - mod=ICLocation.CUSTOM_MOD8_WIFI; + if (gpson == 1) { + mod = ICLocation.CUSTOM_MOD8_GPS; + } else { + mod = ICLocation.CUSTOM_MOD8_WIFI; } - log("reply msg "+msg); - log("LOCATION_MODE "+LOCATION_MODE+" mod "+ mod + ", cycle = "+Cycle+", GPS On= "+gpson); - Config.setLocationMode(runtime.getContextProxy().context,mod); - Config.setLocationCycle(runtime.getContextProxy().context,Cycle); + log("reply msg " + msg); + log("LOCATION_MODE " + LOCATION_MODE + " mod " + mod + ", cycle = " + Cycle + ", GPS On= " + gpson); + Config.setLocationMode(runtime.getContextProxy().context, mod); + Config.setLocationCycle(runtime.getContextProxy().context, Cycle); runtime.getLocationInstance().setLocation_cycle(Cycle); runtime.getLocationInstance().setWorkingMod(mod); // CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); @@ -1075,10 +1080,11 @@ public class protocol_jiai { /** * 心率上传,返回协议字串 + * * @param ds * @return */ - public static String AP49(Runtime ds){ + public static String AP49(Runtime ds) { //示例数据:IWAP49,68## return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49)) .append(CMDSPLIT).append(ds.getHRS().getPPG()) @@ -1087,14 +1093,13 @@ public class protocol_jiai { } - - /** * 返回上传心率血压的协议字串 + * * @param ds * @return */ - public static String APHT(Runtime ds){ + public static String APHT(Runtime ds) { //IWAPHT,60,130,85# //说明: //IW:标识符 @@ -1110,7 +1115,8 @@ public class protocol_jiai { .append(CMDSPLIT).append(ds.getHRS().getBPL()) .append(CMDEND).toString(); } - public static String APHT(int ppg,int bph,int bpl){ + + public static String APHT(int ppg, int bph, int bpl) { //IWAPHT,60,130,85# //说明: //IW:标识符 @@ -1129,15 +1135,16 @@ public class protocol_jiai { //立即定位反馈 - public static String AP16(String cmdindex){ + public static String AP16(String cmdindex) { //IWAP16,080835# //080835:指令流水号 return 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# // 说明: @@ -1146,18 +1153,18 @@ public class protocol_jiai { // 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(genStringMessage("AP16",AP16(cmdlist[2]))); - }else{ + connection.send(genStringMessage("AP16", AP16(cmdlist[2]))); + } else { log("error BP16 format"); } } /*通过基站获取时间和坐标*/ - public static String APTM(Runtime ds){ + public static String APTM(Runtime ds) { //示例数据:IWAPTM,460,0,9750,3613# //说明: //IW:标识符 @@ -1176,26 +1183,26 @@ public class protocol_jiai { } - 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 String AP15(String index){ + public static String AP15(String index) { //IWAP15, 080835# //080835:指令流水号 return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15)) @@ -1204,37 +1211,33 @@ public class protocol_jiai { } //设置定位周期 - 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){ - String index=list[2]; - String time=list[3]; - connection.send(genStringMessage("AP15",AP15(index))); - ICLogger.i("BP15 , 定位周期="+time+"秒"); + if (list.length == 4) { + String index = list[2]; + String time = list[3]; + connection.send(genStringMessage("AP15", AP15(index))); + ICLogger.i("BP15 , 定位周期=" + time + "秒"); Config.setLocationMode(runtime.getContextProxy().context, ICLocation.CUSTOM_MOD8_GPS); - Config.setLocationCycle(runtime.getContextProxy().context,Integer.parseInt(time)); + Config.setLocationCycle(runtime.getContextProxy().context, Integer.parseInt(time)); runtime.getLocationInstance().setWorkingMod(Config.getLocationMode(runtime.getContextProxy().context)); runtime.getLocationInstance().setLocation_cycle(Config.getLocationCycle(runtime.getContextProxy().context)); //set AlarmCycle and trigger Location CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); - }else{ + } else { ICLogger.i("BP15 format error"); } } - - - - /*语音下行反馈*/ public static String AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) { //示例数据:IWAP28,D3590D54,xxxx,6,1,1# @@ -1248,30 +1251,30 @@ public class protocol_jiai { } //处理 BP28 语音消息 - public void handleBP28(NettyConnection connection,String cmd,Runtime runtime,byte[] bytes) { + public void handleBP28(NettyConnection connection, String cmd, Runtime runtime, byte[] bytes) { //log("handleBP28 msg"+cmd); -/** - * IWBP28, D3590D54,XXXX,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX# - * 说明: - * IW:标识符 - * BP28 : 命令字符 - * D3590D54:UNICODE编码,发送者名称 - * XXXX: 附加信息,在响应数据包时,将附加信息原样响应,类似流水号 - * 6:语音包分包总数 - * 1 :当前包数,第一包为1,第二包为2,。。。。。。同一个语音包的语音时间相同 - * 1024 :语音包长度 - * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:当前音频数据, 每个音频数据包大小为1024字节,最后一包不足1024的取实际字节数 - * 语音包上传规则: - * 按包次序依次上传,上传后如果没有收到服务器的响应包,则继续上传该语音包。 - * 收到设备回复确认数据包接收成功状态后,继续开始依次上传下一个数据包。。。。。。 - * 如果设备回复确认数据包接收失败状态,则重复发送上一个数据包 - * 设备响应: IWAP28,D3590D54,XXXX,6,1,1# - * D3590D54:UNICODE编码,发送者名称 - * XXXX: 附加信息,原样返回 - * 6:语音包分包总数 - * 1:当前设备收到的是第几个包 - * 1:表示设备接受数据成功,0表示设备接受数据失败 - */ + /** + * IWBP28, D3590D54,XXXX,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX# + * 说明: + * IW:标识符 + * BP28 : 命令字符 + * D3590D54:UNICODE编码,发送者名称 + * XXXX: 附加信息,在响应数据包时,将附加信息原样响应,类似流水号 + * 6:语音包分包总数 + * 1 :当前包数,第一包为1,第二包为2,。。。。。。同一个语音包的语音时间相同 + * 1024 :语音包长度 + * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:当前音频数据, 每个音频数据包大小为1024字节,最后一包不足1024的取实际字节数 + * 语音包上传规则: + * 按包次序依次上传,上传后如果没有收到服务器的响应包,则继续上传该语音包。 + * 收到设备回复确认数据包接收成功状态后,继续开始依次上传下一个数据包。。。。。。 + * 如果设备回复确认数据包接收失败状态,则重复发送上一个数据包 + * 设备响应: IWAP28,D3590D54,XXXX,6,1,1# + * D3590D54:UNICODE编码,发送者名称 + * XXXX: 附加信息,原样返回 + * 6:语音包分包总数 + * 1:当前设备收到的是第几个包 + * 1:表示设备接受数据成功,0表示设备接受数据失败 + */ String Name; String appendIndex; int packetCount; @@ -1279,17 +1282,17 @@ public class protocol_jiai { int packetLen; byte[] packetData; - String[] msg= cmd.split(CMDSPLIT); - if (msg.length>=6){ - - Name=msg[1]; - appendIndex=msg[2]; - packetCount= Integer.parseInt(msg[3]); - currentId= Integer.parseInt(msg[4]); - packetLen= Integer.parseInt(msg[5]); - packetData= Util.subArray(bytes,msg[0].length()+msg[1].length()+msg[2].length()+msg[3].length()+msg[4].length()+msg[5].length()+6,bytes.length-1); - - StringBuffer stringBuffer=new StringBuffer(); + String[] msg = cmd.split(CMDSPLIT); + if (msg.length >= 6) { + //取出头部数据 + Name = msg[1]; + appendIndex = msg[2]; + packetCount = Integer.parseInt(msg[3]); + currentId = Integer.parseInt(msg[4]); + packetLen = Integer.parseInt(msg[5]); + packetData = Util.subArray(bytes, msg[0].length() + msg[1].length() + msg[2].length() + msg[3].length() + msg[4].length() + msg[5].length() + 6, bytes.length - 1); + //拼装头部数据 + StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("recv BP28 name = ").append(Name) .append(",appendIndex = ").append(appendIndex) .append(",packetCount = ").append(packetCount) @@ -1297,37 +1300,34 @@ public class protocol_jiai { .append(",packetLen = ").append(packetLen) .append(",packetDatalen = ").append(packetData.length); - log( stringBuffer.toString()); - connection.send(genStringMessage("AP28",AP28(Name,appendIndex,packetCount,currentId,1))); - voicePacket.getInstance().appendVoice(Name,appendIndex,packetCount,currentId,packetLen,packetData); - log("================"+voicePacket.getInstance().toString()); - if (voicePacket.getInstance().isFinished()) - { - - String dir = Environment.getExternalStorageDirectory()+ "/Android/VoiceCache"; - String amrFilepath=Util.saveFile(voicePacket.getInstance().getVoicePacketBytes(),0,voicePacket.getInstance().getVoicePacketLen(),new File(dir),"receive_"+voicePacket.getInstance().getPacketTime()+".amr"); - ICLogger.i("save Amr file to "+amrFilepath); - voicePacket.getInstance().clearPacket(); - VoiceContent voiceContent=VoiceContent.placeHolderIn(Content.CONTACT_CATEGORY_GROUP,GROUP_ALL,amrFilepath); + //输出log + log(stringBuffer.toString()); + //这里应该是通知后台success + connection.send(genStringMessage("AP28", AP28(Name, appendIndex, packetCount, currentId, 1))); + voicePacket.getInstance().appendVoice(Name, appendIndex, packetCount, currentId, packetLen, packetData); + log("================" + voicePacket.getInstance().toString()); + if (voicePacket.getInstance().isFinished()) { - final Uri uri2 = runtime.getDbHelper().insertMessage( voiceContent); - + String dir = Environment.getExternalStorageDirectory() + "/Android/VoiceCache"; + String amrFilepath = Util.saveFile(voicePacket.getInstance().getVoicePacketBytes(), 0, voicePacket.getInstance().getVoicePacketLen(), new File(dir), "receive_" + voicePacket.getInstance().getPacketTime() + ".amr"); + ICLogger.i("save Amr file to " + amrFilepath); + voicePacket.getInstance().clearPacket(); + VoiceContent voiceContent = VoiceContent.placeHolderIn(Content.CONTACT_CATEGORY_GROUP, GROUP_ALL, amrFilepath); + final Uri uri2 = runtime.getDbHelper().insertMessage(voiceContent); + log("uri2 == > " + uri2); //回复UI消息,表示已经接收到 voiceContent.status = 3; voiceContent.serverTime = TimeUtil.getSystemTime3(); voiceContent.preview = String.valueOf(Util.getDuration(voiceContent.content)); + //这里应该是更新数据库,并且让监听这个URI2的内容观察者知道更新 runtime.getDbHelper().updateMessage(voiceContent, uri2); - -// runtime.getContextProxy().sendBroadcast(ACTION_IMESSAGE, runtime); - connection.DeliverCMDMessageToSystem("NewVoice", amrFilepath);//通知下面线程状态变化 } - }else{ - log("handleBP28","format Error"); + } else { + log("handleBP28", "format Error"); // connection.send(genStringMessage("AP28",AP28(Name,appendIndex,packetCount,currentId,0))); - } } @@ -1344,7 +1344,7 @@ public class protocol_jiai { } //白名单开关(下行协议号:BP84,响应:AP84) - public static String AP84(String index,int success){ + public static String AP84(String index, int success) { //设备响应: IWAP80,080835,1# //080835:指令流水号 @@ -1355,7 +1355,7 @@ public class protocol_jiai { .append(CMDEND).toString(); } - public void handleBP84(String cmd,Connection connection){ + public void handleBP84(String cmd, Connection connection) { //示例: //IWBP84,353456789012345,080835,1# //说明: @@ -1364,21 +1364,21 @@ public class protocol_jiai { //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(genStringMessage("AP84",AP84(index,1))); + if (list.length == 4) { + String index = list[2]; + String whitelist_switch = list[3]; + connection.send(genStringMessage("AP84", 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!"); } @@ -1386,7 +1386,7 @@ public class protocol_jiai { } //17.设置心率/血压测量周期(下行协议号:BP86,响应:AP86) - public static String AP86(String index){ + public static String AP86(String index) { //设备响应: IWAP86, 080835# //080835:指令流水号 @@ -1395,7 +1395,7 @@ public class protocol_jiai { .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# @@ -1407,27 +1407,27 @@ public class protocol_jiai { //1: 表示心率周期;2 :表示血压周期 //720: 表示720分钟 - String[] list=cmd.split(CMDSPLIT); + String[] list = cmd.split(CMDSPLIT); - if (list.length==5){ - String index=list[2]; - String type=list[3]; - String cycle=list[4]; - connection.send(genStringMessage("AP86",AP86(index))); - ICLogger.i("收到服务器指令:设置"+(type.equals("1")?"心率周期 ":"血压周期 ")+cycle+"分钟"); + if (list.length == 5) { + String index = list[2]; + String type = list[3]; + String cycle = list[4]; + connection.send(genStringMessage("AP86", AP86(index))); + ICLogger.i("收到服务器指令:设置" + (type.equals("1") ? "心率周期 " : "血压周期 ") + cycle + "分钟"); //发送重置PPGCycle的广播,会在CoreServer里面执行 Intent intent = new Intent(); - intent.putExtra("PPGTestCycle",Integer.parseInt(cycle)); - runtime.getContextProxy().sendBrodcast(ACTION_HEATR_RATE_START,intent); - }else{ + intent.putExtra("PPGTestCycle", Integer.parseInt(cycle)); + runtime.getContextProxy().sendBrodcast(ACTION_HEATR_RATE_START, intent); + } else { ICLogger.i("BP86 format error!"); } } //18.18.设置心率/血压阀值(下行协议号:BP89,响应:AP89) - public static String AP89(String index){ + public static String AP89(String index) { //设备响应: IWAP89, 080835# //080835:指令流水号 @@ -1436,7 +1436,7 @@ public class protocol_jiai { .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# @@ -1451,24 +1451,24 @@ public class protocol_jiai { //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]; - connection.send(genStringMessage("AP89",AP89(index))); - ICLogger.i("收到服务器指令:心率/血压阀值 "+PPGH+","+PPGL+","+BPH_H+","+BPH_L+","+BPL_H+","+BPL_L); - }else{ + 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(genStringMessage("AP89", AP89(index))); + 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) * 示例: @@ -1486,13 +1486,13 @@ public class protocol_jiai { * 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) * 示例: @@ -1510,30 +1510,30 @@ public class protocol_jiai { * 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+" 次!"); - txtmsg=Util.UrlGB2312ToUTF8(txtmsg); - StringMessage msg=AP93(cmdindex); + 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 + " 次!"); + txtmsg = Util.UrlGB2312ToUTF8(txtmsg); + StringMessage msg = AP93(cmdindex); //设定当前工作模式及循环频率 connection.send(msg); - runtime.PushtxtMsg_srv_index=msg_index_no;//给回复AP94用 - ICLogger.i("received Txt Msg "+txtmsg); - runtime.getContextProxy().sendMsgBroadcast(txtmsg,0); + runtime.PushtxtMsg_srv_index = msg_index_no;//给回复AP94用 + ICLogger.i("received Txt Msg " + txtmsg); + runtime.getContextProxy().sendMsgBroadcast(txtmsg, 0); runtime.getContextProxy().saveMstToSMSDB(txtmsg); - }else{ + } else { ICLogger.i("BP40 format error!"); } } - public static StringMessage AP94( ){ + public static StringMessage AP94() { /*** * 15确认已读文字(上行协议号:AP94,响应:BP94) * 示例: @@ -1549,80 +1549,80 @@ public class protocol_jiai { */ //在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 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服务器不适用 @@ -1632,69 +1632,69 @@ public class protocol_jiai { 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("收到服务器心率检测命令"); HeartRateManager.triggerPPGtest(); break; case BPXY: - handleBPXY(cmd,mConnection); + handleBPXY(cmd, mConnection); ICLogger.i("收到服务器血压检测命令"); HeartRateManager.triggerPPGtest(); break; case BPJZ: - handleBPJZ(cmd,mConnection,mRuntime); + handleBPJZ(cmd, mConnection, mRuntime); ICLogger.i("收到服务器血压校准命令"); break; case BPHT: ICLogger.i("服务器收到上传的心率血压"); break; case BP84: - handleBP84(cmd,mConnection); + handleBP84(cmd, mConnection); ICLogger.i("收到服务器白名单命令"); break; case BP86: //心率血压周期设置 - handleBP86(cmd,mConnection,mRuntime); + handleBP86(cmd, mConnection, mRuntime); // ICLogger.i(""); break; case BP89: //心率/血压阀值 - handleBP89(cmd,mConnection); + handleBP89(cmd, mConnection); break; case BP94: @@ -1702,7 +1702,7 @@ public class protocol_jiai { break; case BP93: //服务器下发文版 - handleBP93(mConnection,mRuntime,cmd); + handleBP93(mConnection, mRuntime, cmd); break; } @@ -1715,13 +1715,13 @@ public class protocol_jiai { //只有需要传递二级制数据的才需要这个函数,目前只有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; + Log.i(TAG, "handleCmd " + type.name() + " " + cmd + " bytelen=" + bytes.length); +// if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv "); switch (type) { case BP28: - handleBP28(mConnection,cmd, mRuntime,bytes); - ICLogger.i("收到服务器语音BP28"); + handleBP28(mConnection, cmd, mRuntime, bytes); + Log.i(TAG, "收到服务器语音BP28"); mConnection.DeliverCMDMessageToSystem("BP28", "");//通知下面线程状态变化 break; } diff --git a/local.properties b/local.properties index bed8bc14..408a5cc5 100644 --- a/local.properties +++ b/local.properties @@ -4,5 +4,5 @@ # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. -#Wed Aug 12 10:23:43 CST 2020 -sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk +#Fri Dec 04 12:11:12 CST 2020 +sdk.dir=D\:\\Android\\Sdk