From: snickersun Date: Fri, 31 Jul 2020 17:18:59 +0000 (+0800) Subject: 1、优化程序健壮性,ProcessReceiver收到静态消息后,会检测并启动CoreService X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=fa57c1631dfb777f60b6f254cb843a452f9672dc;p=protocol_srv.git 1、优化程序健壮性,ProcessReceiver收到静态消息后,会检测并启动CoreService 2、保存V466,是上一个提交编译的。不包含本提交。 --- diff --git a/app/release/ICSer_V463_2007292110_release.apk b/app/release/ICSer_V463_2007292110_release.apk deleted file mode 100644 index 3b7de6d0..00000000 Binary files a/app/release/ICSer_V463_2007292110_release.apk and /dev/null differ diff --git a/app/release/output.json b/app/release/output.json index bfb3d4b0..718578a5 100644 --- a/app/release/output.json +++ b/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":464,"versionName":"2007300125","enabled":true,"outputFile":"ICSer_V464_2007300125_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V464_2007300125_release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":466,"versionName":"2007301941","enabled":true,"outputFile":"ICSer_V466_2007301941_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V466_2007301941_release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/MySqlitOpenHelper.java b/app/src/main/java/com/enqualcomm/support/MySqlitOpenHelper.java index 5abcc6a4..7e05ba6d 100644 --- a/app/src/main/java/com/enqualcomm/support/MySqlitOpenHelper.java +++ b/app/src/main/java/com/enqualcomm/support/MySqlitOpenHelper.java @@ -10,20 +10,60 @@ import com.enqualcomm.support.utils.ICLogger; public class MySqlitOpenHelper extends SQLiteOpenHelper { public MySqlitOpenHelper(Context paramContext) { super(paramContext, "data", null, 7); } - public void onCreate(SQLiteDatabase paramSQLiteDatabase) { - paramSQLiteDatabase.execSQL("CREATE TABLE CONTACT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,NAME TEXT ,NUMBER TEXT ,ICON TEXT ,EXTRA TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,CONTENT TEXT ,PREVIEW TEXT ,STATUS INTEGER ,IN_OR_OUT INTEGER ,CONTACT_CATEGORY INTEGER ,CONTACT_NUMBER TEXT ,SERVER_TIME TEXT ,LOCAL_TIME INTEGER ,ICON TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE ALARM(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT ,WEEK TEXT ,RING TEXT ,STATUS TEXT ,NAME TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE SILENT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE IKNOWLEDGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,SCORE TEXT ,AWARD TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE URLDOWNLOADPIC(_id INTEGER PRIMARY KEY AUTOINCREMENT ,URL TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE NOTICE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT,NAME TEXT,NUMBER TEXT,ID TEXT,CATEGORY TEXT,FREQUENCY TEXT,CONTENT TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE WEATHER(_id INTEGER PRIMARY KEY AUTOINCREMENT ,WEATHER_TYPE TEXT,MIN_TEMPERATURE TEXT,MAX_TEMPERATURE TEXT,CUR_TEMPERATURE TEXT,WEATHER_INDEX TEXT,WEATHER_INFO TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE DEVICESTATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,IS_SILENCE TEXT,START_MONITOR TEXT,END_MONITOR TEXT,IS_ALARM INTEGER)"); - paramSQLiteDatabase.execSQL("CREATE TABLE DOWNLOADINFO(_id INTEGER PRIMARY KEY AUTOINCREMENT ,IMSI TEXT,TIME TEXT,NUMBER TEXT,TOTAL_NUMBER TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE STHEART_RATE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,INTERVAL TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE ANTIOFF(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)"); - paramSQLiteDatabase.execSQL("CREATE TABLE UNREADMSG(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,ID TEXT ,COUNT INTEGER,RECVTIME INTEGER)"); + public void onCreate(SQLiteDatabase sqlite) { + sqlite.execSQL("CREATE TABLE CONTACT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,NAME TEXT ,NUMBER TEXT ,ICON TEXT ,EXTRA TEXT)"); + sqlite.execSQL("CREATE TABLE ALARM(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT ,WEEK TEXT ,RING TEXT ,STATUS TEXT ,NAME TEXT)"); + sqlite.execSQL("CREATE TABLE SILENT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)"); + sqlite.execSQL("CREATE TABLE IKNOWLEDGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,SCORE TEXT ,AWARD TEXT)"); + sqlite.execSQL("CREATE TABLE URLDOWNLOADPIC(_id INTEGER PRIMARY KEY AUTOINCREMENT ,URL TEXT)"); +//提示信息表 + sqlite.execSQL("CREATE TABLE NOTICE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT,NAME TEXT,NUMBER TEXT,ID TEXT,CATEGORY TEXT,FREQUENCY TEXT,CONTENT TEXT)"); + sqlite.execSQL("CREATE TABLE WEATHER(_id INTEGER PRIMARY KEY AUTOINCREMENT ,WEATHER_TYPE TEXT,MIN_TEMPERATURE TEXT,MAX_TEMPERATURE TEXT,CUR_TEMPERATURE TEXT,WEATHER_INDEX TEXT,WEATHER_INFO TEXT)"); + sqlite.execSQL("CREATE TABLE DEVICESTATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,IS_SILENCE TEXT,START_MONITOR TEXT,END_MONITOR TEXT,IS_ALARM INTEGER)"); + sqlite.execSQL("CREATE TABLE DOWNLOADINFO(_id INTEGER PRIMARY KEY AUTOINCREMENT ,IMSI TEXT,TIME TEXT,NUMBER TEXT,TOTAL_NUMBER TEXT)"); + sqlite.execSQL("CREATE TABLE STHEART_RATE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,INTERVAL TEXT)"); + sqlite.execSQL("CREATE TABLE UNREADMSG(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,ID TEXT ,COUNT INTEGER,RECVTIME INTEGER)"); + + + /* +系统对话消息表,包含微聊,系统推送文本,上传图片,上传语音等一系列消息。 +Pushtxt、message +数据库 Message,记录所有message,包括类型(下发txt,chat msg, chat image),文件url或者文本内容。 +*/ + sqlite.execSQL("CREATE TABLE MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,CONTENT TEXT ,PREVIEW TEXT ,STATUS INTEGER ,IN_OR_OUT INTEGER ,CONTACT_CATEGORY INTEGER ,CONTACT_NUMBER TEXT ,SERVER_TIME TEXT ,LOCAL_TIME INTEGER ,ICON TEXT)"); + //sqlite.execSQL("CREATE TABLE MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT ,CATEGORY INTEGER ,CONTENT TEXT ,PREVIEW TEXT ,STATUS INTEGER ,IN_OR_OUT INTEGER ,CONTACT_CATEGORY INTEGER ,CONTACT_NUMBER TEXT ,SERVER_TIME TEXT ,LOCAL_TIME INTEGER ,ICON TEXT,FILETYPE INTEGER,DATATYPE INTEGER)"); + + + +//日志表格,存储开机关机,低电报警等消息。。。 + sqlite.execSQL("CREATE TABLE EVENT_MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT , EVENT_TYPE INTEGER, EVENT_NAME TEXT, TIME TEXT )"); + +/* +脱腕检测时段AntiOff +本身需要时间段的,在时间段内才进行 脱腕检测。没有设置时间段的话,或者从0:00~23:59表示持续判断脱腕检测。 +2个数据库,时间段和当前状态记录(包括历史记录)。 +*/ + sqlite.execSQL("CREATE TABLE ANTIOFF(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)"); + // sqlite.execSQL("CREATE TABLE ANTIOFF_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT ,STATUS TEXT,CUR_SYS_STATUS TEXT)"); + +/* +睡眠 +根据时间段进行检测,时间段内,根据翻滚次数确认其睡眠类型。如深度睡眠或者浅睡。 +2个数据库翻滚次数记录,当每日睡眠情况统计计算,检测时间段记在settings里,就不放在数据库了。 +*/ + /*每次打点的记录表*/ + sqlite.execSQL("CREATE TABLE SLEEP_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,DATE TEXT, TIME TEXT ,ROLLTIMES INTEGER ,STATUS TEXT ,REM TEXT)"); + /*计算后的分值,每天会在睡眠结束后计算Records获得*/ + sqlite.execSQL("CREATE TABLE SLEEP_STATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,TIME TEXT , DEEP_SLEEP INTEGER , LIGHT_SLEEP INTEGER ,SCORE INTEGER )"); + +/*久坐 +根据时间段进行检测,时间段内,根据计步变化确认其是否在坐着。 +1个数据库 久坐检测时间段,报警时长度要求,报警记录*/ + sqlite.execSQL("CREATE TABLE SIT(_id INTEGER PRIMARY KEY AUTOINCREMENT ,START_TIME TEXT ,END_TIME TEXT ,WEEK TEXT ,INTERVAL INTEGER)"); + + + /*所有报警的记录表,包括开关机事件*/ + sqlite.execSQL("CREATE TABLE ALARM_MSG_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,DATE TEXT, TIME TEXT ,ALARM TEXT )"); } public void onUpgrade(SQLiteDatabase paramSQLiteDatabase, int paramInt1, int paramInt2) { diff --git a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java index 67c9feb5..35c29bc6 100644 --- a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java +++ b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java @@ -65,7 +65,6 @@ public class HeartRateManager extends AbstractInvokeHandlerService { sendBroadcastPPGResult(); //因为协议中没有时间变量,所以只能实时传输,如果恰巧没有网络也只能丢弃,有时间变量的话,可以考虑通过deliver的buffer来进行缓存发送 if (connection.isServerConnected()) { - if(PPGDATA.isEmpty()){ String ppgd=protocolAPIHelper.getPPG_MSG(runtime.getHRS().getPPG()); String bloodd=protocolAPIHelper.getBlood_MSG( runtime.getHRS().getBPH(), runtime.getHRS().getBPL()); @@ -73,13 +72,10 @@ public class HeartRateManager extends AbstractInvokeHandlerService { connection.send(protocolAPIHelper.genStringMessage("ppg", ppgd)); connection.send(protocolAPIHelper.genStringMessage("blood", bloodd)); connection.send(protocolAPIHelper.genStringMessage("oxygen", oxd)); - }else { connection.send(protocolAPIHelper.genStringMessage("APHT", PPGDATA)); ICLogger.i("Send PPG " + PPGDATA); } - - ICLogger.i("Send PPG " + PPGDATA); } else { ICLogger.i("Skip PPG " + PPGDATA); diff --git a/app/src/main/java/com/enqualcomm/support/utils/MD5.java b/app/src/main/java/com/enqualcomm/support/utils/MD5.java index 6de99210..4c8ae1af 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/MD5.java +++ b/app/src/main/java/com/enqualcomm/support/utils/MD5.java @@ -15,7 +15,7 @@ public class MD5 { public static String getCMDStringMD5(String src){ - if (src.isEmpty()) { + if (src==null || src.isEmpty()) { return ""; } MessageDigest md5 = null; @@ -31,7 +31,7 @@ public class MD5 { result += temp; } return result; - } catch (NoSuchAlgorithmException e) { + } catch (Exception e) { e.printStackTrace(); } return ""; diff --git a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java index 9a7b6d1a..5ab1decb 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java @@ -30,6 +30,7 @@ import com.ic.jni.ICJniUtils; import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.service.AudioService; import com.enqualcomm.support.service.HeartRateManager; +import com.ic.protocols.protocolAPIHelper; import java.util.concurrent.TimeUnit; @@ -58,11 +59,9 @@ import static com.enqualcomm.support.Constants.KEY_MESSAGE_URL; import static com.enqualcomm.support.Constants.KEY_TEMP_BODY; import static com.enqualcomm.support.Constants.KEY_TEMP_WRIST; import static com.enqualcomm.support.Constants.RESUME_ACTION; -import static com.enqualcomm.support.Constants.SOS_ACTION; -import static com.enqualcomm.support.Constants.STEP_COUNT_ALARM_ACTION; + import static com.enqualcomm.support.bean.Content.CONTACT_CATEGORY_GROUP; -import static com.ic.protocols.protocolAPIHelper.genStringMessage; -import static com.ic.protocols.protocolAPIHelper.getTemperatureMSG; + public class ProcessReceiver extends BroadcastReceiver { @@ -248,6 +247,13 @@ public class ProcessReceiver extends BroadcastReceiver { stringBuilder.append("action=="); stringBuilder.append(str); ICLogger.i(stringBuilder.toString()); + + if (CoreService.getInstance()==null) + { + ICLogger.i("CoreService is null skip deal with this message! "+str); + paramContext.startService(new Intent(paramContext,CoreService.class));// protocol service + return ; + } if (RESUME_ACTION.equals(str)) { SharPreferenceUtil.setPrefBoolean(paramContext, "key_is_resume", paramIntent.getBooleanExtra("is_resume", false)); return; @@ -358,7 +364,7 @@ public class ProcessReceiver extends BroadcastReceiver { }else if (ACTION_TEMP_RESULT.equals(str)) { double wrist_temp=paramIntent.getDoubleExtra(KEY_TEMP_WRIST,0.0f); double body_temp=paramIntent.getDoubleExtra(KEY_TEMP_BODY,0.0f); - String temperatureMsg=getTemperatureMSG(wrist_temp,body_temp); + String temperatureMsg= protocolAPIHelper.getTemperatureMSG(wrist_temp,body_temp); ICLogger.i("发送体温测量值 "+temperatureMsg); Deliver.sendLocationMSG(temperatureMsg); diff --git a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java index 4898ebff..098ce2fa 100644 --- a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java +++ b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java @@ -9,10 +9,10 @@ import com.enqualcomm.support.utils.NettyConnection; public class protocolAPIHelper { - private protocol_jiai protocoljiai_handler=null; - private protocol_beehome protocolbeehome_handler=null; - private protocol_ic protocolic_handler=null; - private protocol_fzd protocolfzd_handler=null; + private static protocol_jiai protocoljiai_handler=null; + private static protocol_beehome protocolbeehome_handler=null; + private static protocol_ic protocolic_handler=null; + private static protocol_fzd protocolfzd_handler=null; public protocolAPIHelper(NettyConnection connect,Runtime runtime) { ICLogger.i("init Protocol "+Config.getProtocolNumber()); @@ -25,6 +25,11 @@ public class protocolAPIHelper { if (protocolfzd_handler==null) protocolfzd_handler=new protocol_fzd(connect,runtime); } + + private static boolean is_protocol_not_Initialled(){ + return (protocolbeehome_handler==null || protocoljiai_handler == null || protocolic_handler==null|| protocolfzd_handler==null); + + } /* 返回true 表示 cmd 全部解析成功 返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用 @@ -32,6 +37,7 @@ public class protocolAPIHelper { 每个字符串如果发现 #,却又没有Header,“IW”则会被丢弃 */ public boolean parserCmd(byte[] bytes) { + if (is_protocol_not_Initialled()) return false; switch(Config.protocol_no) { case Config.PROTOCOL_JIAI: @@ -57,7 +63,7 @@ public class protocolAPIHelper { public static String isCmdStr(String msg){ - + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -78,6 +84,7 @@ public class protocolAPIHelper { } public static String getBindingMSG(){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -98,6 +105,7 @@ public class protocolAPIHelper { } public static String getTemperatureMSG(double temp_adusted,double body_temp){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -117,6 +125,7 @@ public class protocolAPIHelper { return ret; } public static String getWarningMSG(Runtime runtime){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -137,6 +146,7 @@ public class protocolAPIHelper { } public static String getLoginMSG(Runtime runtime){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -157,6 +167,7 @@ public class protocolAPIHelper { } public static String getHeartbeatMSG(Runtime runtime){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -177,6 +188,7 @@ public class protocolAPIHelper { } public static String getGPSLocationMSG(Runtime runtime){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -196,6 +208,7 @@ public class protocolAPIHelper { return ret; } public static String getLBSLocationMSG(Runtime runtime){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -217,6 +230,7 @@ public class protocolAPIHelper { public static byte[] getVoicePacketItem(String packetTime,int count,int index,int datalen,byte[] amrdata){ byte[] ret=null; + if (is_protocol_not_Initialled()) return null; switch(Config.protocol_no) { case Config.PROTOCOL_JIAI: @@ -235,7 +249,7 @@ public class protocolAPIHelper { return ret; } public static String getPPG_ECG_MSG(Runtime runtime){ - + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -255,7 +269,7 @@ public class protocolAPIHelper { return ret; } public static String getPPG_ECG_MSG(int ppg,int bph,int bpl){ - + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -276,6 +290,7 @@ public class protocolAPIHelper { } public static String getBlood_MSG(int pbh, int pbl){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -296,6 +311,7 @@ public class protocolAPIHelper { } public static String getOxygen_MSG(int ox){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -315,6 +331,7 @@ public class protocolAPIHelper { return ret; } public static String getPPG_MSG(int ppg){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) { @@ -334,6 +351,7 @@ public class protocolAPIHelper { return ret; } public static String getPPG_ECG_MSG(int ppg,int bph,int bpl,int spo2){ + if (is_protocol_not_Initialled()) return ""; String ret=""; switch(Config.protocol_no) diff --git a/app/version_code.properties b/app/version_code.properties index a64035cd..aab734b3 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ -#Thu Jul 30 01:25:40 CST 2020 -VERSION_CODE=464 +#Thu Jul 30 19:41:32 CST 2020 +VERSION_CODE=466