<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/classes"/>\r
<exclude-output/>\r
<content url="file://$MODULE_DIR$">\r
- <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true"/>\r
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true"/>\r
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true"/>\r
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true"/>\r
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true"/>\r
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" generated="true"/>\r
--- /dev/null
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":615,"versionName":"2009142317","enabled":true,"outputFile":"ICSer_V615_2009142317_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V615_2009142317_release.apk","properties":{}}]
\ No newline at end of file
public static boolean needTemperature_abnormal_alarm=false;\r
public static boolean A9_noBroadCastActionStrip=false;\r
public static boolean L004_BroadCastActionStrip=false;\r
+ public static boolean disable_ntp_server=false;\r
+\r
+ public static void enable_NTP_Server(Context context,boolean enable){\r
+ try {\r
+ int autotime = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME);\r
+ int autotimezone = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME_ZONE);\r
+\r
+ ICLogger.i("get NTP Settings AutoTime "+autotime+" AutoTimeZone "+autotimezone);\r
+\r
+ if(enable)\r
+ {\r
+ Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);\r
+ Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME, 1);\r
+ }else {\r
+ Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);\r
+ Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME, 0);\r
+ }\r
+ autotime = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME);\r
+ autotimezone = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AUTO_TIME_ZONE);\r
+ ICLogger.i("get NTP Settings AutoTime "+autotime+" AutoTimeZone "+autotimezone);\r
+ } catch (Settings.SettingNotFoundException e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
public static void LoadMessageConfigs(){\r
String tmp=Util.getSystemProperties("persist.sys.doBroadcastMSG");\r
boolean ret=false;\r
\r
do_broadCast_message_no_indication = ret;\r
\r
+ //默认关闭NTP\r
+ disable_ntp_server=Util.getSystemProperties("persist.sys.disableNTP","true").equals("true");\r
+\r
c43_branch_name=Util.getSystemProperties("persist.sys.c43.branch");\r
\r
if ((c43_branch_name.equals("l03")) ||(c43_branch_name.equals("l05"))){\r
Config.setTemperatureTestCycle(runtime, 0);\r
Config.setConfigInitFlag(this, 1);\r
}\r
-\r
}else if (Config.custom_branch_name.equals("AK")) {\r
if (Config.getConfigInitFlag(this)==0) {\r
Config.setPPGTestCycle(this, 0);\r
Config.loadCustomServerAddr(this);\r
Config.loadServerSettings(runtime);\r
\r
-\r
+ Config.enable_NTP_Server(this,!Config.disable_ntp_server);\r
\r
\r
//初始化温度测试相关参数\r
if (this.mKeepAlive != null) {\r
if (connection.isServerConnected() && runtime.isServerProtocolConnected()) {\r
this.mKeepAlive.onHeartAlarm(this.connection, this.runtime);\r
+ locationClient.triggerBLEProcess();//每次心跳检测一次BLE\r
} else {\r
// if (this.mKeepAlive.is_retry_time_above_limit()) {\r
ICLogger.i("check 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!");\r
private int preLbsCid;\r
\r
int preNetworkTypeNomber;\r
-\r
+ private boolean scanBLEOnly=false;\r
\r
private static LocationClient gLocationCline=null;\r
// private BroadcastReceiver screenOnReceiver = new BroadcastReceiver() {\r
}\r
ICLogger.i("Bt Dev Is in Area " + runtime.bleInfo.is_in_area);\r
\r
- if (runtime.bleInfo.is_in_area == false) {\r
- ICLogger.i("BT 不在区域内,开启定位流程");\r
- startLocationProcess(runtime.getLocationInstance().getWorkingMod());\r
- }else{\r
- ICLogger.i("BT 在区域内,直接发送区域坐标即可!");\r
- StringMessage AP01_CMD = protocolAPIHelper.getGPSLocationMSG(runtime);\r
- Deliver.sendLocationMSG(AP01_CMD);\r
+ if(scanBLEOnly==true){\r
+ if (runtime.bleInfo.is_in_area == false ) {\r
+ runtime.updateFZDDevStatusEscape(true);\r
+ if ( runtime.bleInfo.last_is_in_area==true) {\r
+ //只有上一次在区域内,这次出区域才需要报警\r
+ StringMessage AL_CMD = protocolAPIHelper.getWarningMSG(runtime);\r
+ Deliver.sendLocationMSG(AL_CMD);\r
+ }\r
+ }\r
+ }else {\r
+ if (runtime.bleInfo.is_in_area == false) {\r
+ ICLogger.i("BT 不在区域内,开启定位流程");\r
+ startLocationProcess(runtime.getLocationInstance().getWorkingMod());\r
+ } else {\r
+ ICLogger.i("BT 在区域内,直接发送区域坐标即可!");\r
+ runtime.updateFZDDevStatusEscape(false);\r
+ StringMessage AP01_CMD = protocolAPIHelper.getGPSLocationMSG(runtime);\r
+ Deliver.sendLocationMSG(AP01_CMD);\r
+ }\r
}\r
+\r
+ //处理过此次数据后,把当前状态赋值给上次检测状态\r
+ runtime.bleInfo.last_is_in_area=runtime.bleInfo.is_in_area;\r
+ //扫描结束就清掉scanBLEOnly,保证下次不会被误操作。\r
+ scanBLEOnly=false;\r
+\r
}\r
});\r
gLocationCline=this;\r
mhandler.sendEmptyMessage(msgWhat_StartLocationProcess);\r
}\r
\r
+ public void triggerBLEProcess(){\r
+ mhandler.sendEmptyMessage(msgWhat_StartBLEProcess);\r
+ }\r
+\r
public void triggerSOSLocationProcess(){\r
mhandler.sendEmptyMessage(msgWhat_StartSOSLocationProcess);\r
}\r
\r
private final static int msgWhat_WaitAndSendLocation=100;\r
private final static int msgWhat_StartLocationProcess=0;\r
+ private final static int msgWhat_StartBLEProcess=1;\r
private final static int msgWhat_StartSOSLocationProcess=2;\r
Handler mhandler=new Handler(){\r
\r
Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
public void call(Object param1Object) { waitAndSendLocation(); }\r
});\r
- }else if (msg.what == msgWhat_StartLocationProcess){\r
- if (runtime.bleInfo.btMacList.size()>0){\r
+ }else if (msg.what == msgWhat_StartLocationProcess) {\r
+ if (runtime.bleInfo.btMacList.size() > 0) {\r
//有蓝牙搜索要求则 先进行蓝牙扫描\r
btHelper.scanBLE();\r
- }else{\r
+ } else {\r
//没有蓝牙搜索要求,就正常定位\r
startLocationProcess(runtime.getLocationInstance().getWorkingMod());\r
}\r
-\r
+ }else if (msg.what == msgWhat_StartBLEProcess){\r
+ if (runtime.bleInfo.btMacList.size() > 0) {\r
+ //有蓝牙搜索要求则 先进行蓝牙扫描\r
+ scanBLEOnly=true;\r
+ btHelper.scanBLE();\r
+ }\r
}else if (msg.what == msgWhat_StartSOSLocationProcess){\r
startSOSLocation=true;//启动SOS定位,为了快速响应,只要wifi定位即可。\r
forceLocation=1;\r
return;\r
}\r
noMove=runtime.getLastStepCount() == runtime.getTotalStepCount();\r
+ runtime.updateFZDDevStatusMoving(!noMove); //设置当前运动状态\r
+\r
// 不强制定位 且 WorkingMod 不是紧急模式,且 没有移动过\r
if ( ( forceLocation != 1 ) &&\r
( mod != ICLocation.REALTIME_MOD )&&\r
public String gps_n="";\r
public String gps_e="";\r
public boolean is_in_area=false;\r
-\r
+ public boolean last_is_in_area=false;\r
\r
}\r
language=_language;\r
}\r
\r
- private String alarmType="00";\r
- public String getAlarmType(){\r
- return alarmType;\r
- }\r
-\r
-\r
\r
\r
//0 代表没有出围栏,如果出围栏则置1,每次报警再加1\r
ALARM_TEMP_HIGH,\r
ALARM_TEMP_LOW,\r
ALARM_POWER_OFF,\r
+ ALARM_ESCAPE,\r
ALARM_NONE,\r
};\r
\r
private AlarmType g_alarm=AlarmType.ALARM_NONE;\r
-/***\r
+\r
+ private String alarmType="00";\r
+ public String getAlarmType(){\r
+ return alarmType;\r
+ }\r
+\r
+ //32 bit 数据\r
+ private int fzdDevStatus=0x00000000;\r
+\r
+\r
+ /***\r
* 00为报警状态,00为无任何报警(01:SOS,02:低电,03:脱落报警,04:佩戴提醒,05:剪断报警,06:跌倒报警,\r
* 07:心率异常, 08:心率过高, 09:心率过低,10:收缩压过高,11:收缩压过低,12:舒张压过高,13:舒张压过低,\r
- * 14:久坐提醒,15:非法解锁(剪断报警),16:锁定提醒(佩戴提醒),17:体温过高,18体温过低)\r
+ * 14:久坐提醒,15:非法解锁(剪断报警),16:锁定提醒(佩戴提醒),17:体温过高,18体温过低) 19 关机事件(非服务器指令关机), 20,escape逃跑事件(离开蓝牙管控范围)\r
*/\r
public void setAlarmType(AlarmType alarm){\r
// if ( !fall && !lowbattery && !sos && antioff)\r
g_alarm=alarm;\r
+\r
+ //同时更新防走丢设备状态标志\r
+ setFZDDevStatus(alarm);\r
+\r
switch (alarm){\r
case ALARM_SOS:\r
alarmType="01";\r
alarmType="18";\r
break;\r
case ALARM_POWER_OFF:\r
+ alarmType="19";\r
+ break;\r
case ALARM_NONE:\r
+ alarmType="20";\r
+ break;\r
default:\r
alarmType="00";\r
break;\r
\r
}\r
\r
+\r
+ /***\r
+ * 终端状态 00000000 ( 16 进\r
+ * 制) 用二进制字符串表示为\r
+ * 0000 0000 0000 0010 0000 0000 0000 0000 含义如下:\r
+ * 左边高 16bit 表示报警,右边低 16bit 表示状态. Bit 位(0 开始) 含义(1 有效)\r
+ * 0低电状态 00000000000000000000000000000001 0x00000001\r
+ * 1出围栏状态(目前没用到) 00000000000000000000000000000010 0x00000002\r
+ * 2进围栏状态(目前没用到) 00000000000000000000000000000100 0x00000004\r
+ * 3手环戴上取下状态 (佩戴检测) 00000000000000000000000000001000 0x00000008\r
+ * 4手表运行静止状态 00000000000000000000000000010000 0x00000010\r
+ * 16SOS 报警 00000000000000010000000000000000 0x00010000\r
+ * 17低电报警 00000000000000100000000000000000 0x00020000\r
+ * 18出围栏报警(逃跑出蓝牙监控范围) 00000000000001000000000000000000 0x00040000\r
+ * 19进围栏报警(目前没用到) 00000000000010000000000000000000 0x00080000\r
+ * 20手环拆除报警 (表带剪断) 00000000000100000000000000000000 0x00100000\r
+ * 21跌倒报警 00000000001000000000000000000000 0x00200000\r
+ * 22震动报警 00000000010000000000000000000000 0x00400000\r
+ * 23断电报警 (手表关机报警) 00000000100000000000000000000000 0x00800000\r
+ * 24心率骤降报警 00000001000000000000000000000000 0x01000000\r
+ * 25车辆启动 (手表用不到) 00000010000000000000000000000000 0x02000000\r
+ * 比如 00200010,即表示00000000001000000000000000010000\r
+ * 这个项目需要支持防拆 20、00000000000100000000000000000000 0x 00100000 1048576\r
+ * 低电 17、00000000000000100000000000000000 0x 00020000 131072\r
+ * 离线 23、00000000100000000000000000000000 0x 00800000 8388608\r
+ * 逃逸报警 18\ 00000000000001000000000000000000 0x 00040000 262144\r
+ * 分别是第四位为 1,第 21 位为 1,对应 21 位是跌倒报警\r
+ * @param runtime\r
+ * @return\r
+ */\r
+ public String getFZDDevStatus(Runtime runtime) {\r
+ StringBuilder sb = new StringBuilder();\r
+ sb.append(Integer.toHexString(runtime.fzdDevStatus));\r
+ if (sb.length() <8) {\r
+ for (int i=0;i< 8-sb.length();i++)\r
+ sb.insert(0, '0'); // pad with leading zero if needed\r
+ }\r
+ String hex = sb.toString();\r
+ return hex;\r
+ }\r
+\r
+\r
+ public void updateFZDDevStatusLowbat(boolean lowbattery){\r
+\r
+ if(lowbattery){\r
+ fzdDevStatus&=0x00000001;\r
+ }else{\r
+ fzdDevStatus&=~0x00000001;\r
+ }\r
+ }\r
+ public void updateFZDDevStatusWeared(boolean weared) {\r
+ if(weared){\r
+ fzdDevStatus&=0x00000008;\r
+ }else{\r
+ fzdDevStatus&=~0x00000008;\r
+ }\r
+ }\r
+\r
+ public void updateFZDDevStatusMoving(boolean moving) {\r
+ if(moving){\r
+ fzdDevStatus&=~0x00000010;\r
+ }else{\r
+ fzdDevStatus&=0x00000010;\r
+ }\r
+ }\r
+\r
+ public void updateFZDDevStatusEscape(boolean escape){\r
+ if(escape){\r
+ fzdDevStatus&=0x00040000;\r
+ }else{\r
+ fzdDevStatus&=~0x00040000;\r
+ }\r
+\r
+ }\r
+\r
+ public void setFZDDevStatus(AlarmType _alarmType){\r
+\r
+ switch (_alarmType){\r
+ case ALARM_SOS:\r
+ fzdDevStatus&=0x00010000;\r
+ break;\r
+ case ALARM_LOWBATTERY:\r
+ fzdDevStatus&=0x00020000;\r
+ break;\r
+ case ALARM_ANTIOFF:\r
+// fzdDevStatus&=0x00000008;\r
+ updateFZDDevStatusWeared(false);\r
+ break;\r
+ case ALARM_WEARED:\r
+ updateFZDDevStatusWeared(true);\r
+// fzdDevStatus&=~0x00000008;\r
+ break;\r
+ case ALARM_LOCK_WATCH:\r
+ fzdDevStatus&=~0x00100000;\r
+ break;\r
+ case ALARM_CUTOFF:\r
+ case ALARM_ILLEGAL_CUTOFF:\r
+ fzdDevStatus&=0x00100000;\r
+ break;\r
+ case ALARM_FALL:\r
+ fzdDevStatus&=0x00200000;\r
+ break;\r
+ case ALARM_ABNORMAL_HEART_RATE:\r
+ fzdDevStatus&=0x01000000;\r
+ break;\r
+ case ALARM_HEART_RATE_HIGH:\r
+// alarmType1="08";\r
+ break;\r
+\r
+ case ALARM_HEART_RATE_LOW:\r
+// alarmType1="09";\r
+ break;\r
+\r
+ case ALARM_BPH_HIGH:\r
+// alarmType1="10";\r
+ break;\r
+\r
+ case ALARM_BPH_LOW:\r
+// alarmType1="11";\r
+ break;\r
+\r
+ case ALARM_BPL_HIGH:\r
+// alarmType1="12";\r
+ break;\r
+\r
+ case ALARM_BPL_LOW:\r
+// alarmType1="13";\r
+ break;\r
+ case ALARM_SEDENTARY:\r
+// alarmType1="14";\r
+ break;\r
+ case ALARM_TEMP_HIGH:\r
+// alarmType1="17";\r
+ break;\r
+ case ALARM_TEMP_LOW:\r
+// alarmType1="18";\r
+ break;\r
+ case ALARM_POWER_OFF:\r
+ fzdDevStatus&=0x00800000;\r
+ break;\r
+\r
+ case ALARM_ESCAPE:\r
+ updateFZDDevStatusEscape(true);\r
+ break;\r
+ case ALARM_NONE:\r
+ default:\r
+// alarmType1="00000000";\r
+ break;\r
+ }\r
+\r
+ }\r
public String preCdmaInfo;\r
\r
public String preCellInfo;\r
\r
public void setBattery(String paramString) { this.battery = paramString; }\r
\r
- public void setBatteryLow(boolean paramBoolean) { this.batteryLow = paramBoolean; }\r
+ public void setBatteryLow(boolean paramBoolean) {\r
+ this.batteryLow = paramBoolean;\r
+ updateFZDDevStatusLowbat(batteryLow); //设置batterylow Alarm\r
+ }\r
\r
public void setBatterychanging(boolean paramBoolean) { this.batterychanging = paramBoolean; }\r
\r
return sb.toString();\r
}\r
\r
- public String fzdAlarmStatus="00000000";\r
-\r
-\r
- /***\r
- * 终端状态 00000000 ( 16 进\r
- * 制) 用二进制字符串表示为\r
- * 0000 0000 0000 0010 0000 0000 0000 0000 含义如下:\r
- * 左边高 16bit 表示报警,右边低 16bit 表示状态. Bit 位(0 开始) 含义(1 有效)\r
- * 0低电状态\r
- * 1出围栏状态(目前没用到)\r
- * 2进围栏状态(目前没用到)\r
- * 3手环戴上取下状态\r
- * 4手表运行静止状态\r
- * 16SOS 报警\r
- * 17低电报警\r
- * 18出围栏报警(目前没用到)\r
- * 19进围栏报警(目前没用到)\r
- * 20手环拆除报警\r
- * 21跌倒报警\r
- * 22震动报警\r
- * 23断电报警\r
- * 24心率骤降报警\r
- * 25车辆启动\r
- * 比如 00200010,即表示00000000001000000000000000010000\r
- * 这个项目需要支持防拆 20、00000000000100000000000000000000 0x 00100000 1048576\r
- * 低电 17、00000000000000100000000000000000 0x 00020000 131072\r
- * 离线 23、00000000100000000000000000000000 0x 00800000 8388608\r
- * 逃逸报警 18\ 00000000000001000000000000000000 0x 00040000 262144\r
- * 分别是第四位为 1,第 21 位为 1,对应 21 位是跌倒报警\r
- * @param runtime\r
- * @return\r
- */\r
- public String getFZDDevStatus(Runtime runtime){\r
- String alarmType1="00000000";\r
- switch (runtime.g_alarm){\r
- case ALARM_SOS:\r
- // alarmType1="01";\r
- break;\r
- case ALARM_LOWBATTERY:\r
- alarmType1="00020000";\r
- break;\r
- case ALARM_ANTIOFF:\r
-// alarmType1="00100000";\r
- break;\r
- case ALARM_WEARED:\r
-// alarmType1="04";\r
- break;\r
- case ALARM_CUTOFF:\r
- alarmType1="00100000";\r
- break;\r
- case ALARM_FALL:\r
-// alarmType1="06";\r
- break;\r
-\r
- case ALARM_ABNORMAL_HEART_RATE:\r
-// alarmType1="07";\r
- break;\r
-\r
- case ALARM_HEART_RATE_HIGH:\r
-// alarmType1="08";\r
- break;\r
-\r
- case ALARM_HEART_RATE_LOW:\r
-// alarmType1="09";\r
- break;\r
-\r
- case ALARM_BPH_HIGH:\r
-// alarmType1="10";\r
- break;\r
-\r
- case ALARM_BPH_LOW:\r
-// alarmType1="11";\r
- break;\r
-\r
- case ALARM_BPL_HIGH:\r
-// alarmType1="12";\r
- break;\r
-\r
- case ALARM_BPL_LOW:\r
-// alarmType1="13";\r
- break;\r
-\r
- case ALARM_SEDENTARY:\r
-// alarmType1="14";\r
- break;\r
-\r
- case ALARM_ILLEGAL_CUTOFF:\r
-// alarmType1="15";\r
- break;\r
-\r
- case ALARM_LOCK_WATCH:\r
-// alarmType1="16";\r
- break;\r
-\r
- case ALARM_TEMP_HIGH:\r
-// alarmType1="17";\r
- break;\r
-\r
- case ALARM_TEMP_LOW:\r
-// alarmType1="18";\r
- break;\r
- case ALARM_POWER_OFF:\r
- alarmType1="00800000";\r
- break;\r
- case ALARM_NONE:\r
- default:\r
-// alarmType1="00000000";\r
- break;\r
- }\r
- fzdAlarmStatus=alarmType1;\r
- return fzdAlarmStatus;\r
- }\r
public String getGPSHeading(){\r
int headingi=(int)gpsp.getLocation().heading;\r
int headingl=(int) ((gpsp.getLocation().heading - headingi)*100);\r
import android.os.Handler;\r
\r
//import com.eiot.watch_lib.LauncherCtrl;\r
+import com.enqualcomm.support.Config;\r
import com.enqualcomm.support.CoreService;\r
import com.enqualcomm.support.LocationClient;\r
import com.ic.protocols.protocolAPIHelper;\r
@Override\r
public void run() {\r
connection.send(protocolAPIHelper.getBindingMSG(mRuntime));\r
+\r
+ if (Config.protocol_no==Config.PROTOCOL_FZD){\r
+ new Handler().postDelayed(new Runnable() {\r
+ @Override\r
+ public void run() {\r
+ connection.send(protocolAPIHelper.getSyncTimeMSG(mRuntime));\r
+ }\r
+ },1000);\r
+ }\r
}\r
},1000);\r
+\r
+\r
} else {\r
connection.send(protocolAPIHelper.getLoginMSG(mRuntime));\r
}\r
// }\r
scheduled.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);\r
scheduled.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);\r
- scheduled.setRemoveOnCancelPolicy(true);\r
+// scheduled.setRemoveOnCancelPolicy(true);\r
ICLogger.i("Wait for thread pool getContinueExistingPeriodicTasksAfterShutdownPolicy " +scheduled.getContinueExistingPeriodicTasksAfterShutdownPolicy()+\r
- "\ngetExecuteExistingDelayedTasksAfterShutdownPolicy "+scheduled.getExecuteExistingDelayedTasksAfterShutdownPolicy()+\r
- "\ngetRemoveOnCancelPolicy "+scheduled.getRemoveOnCancelPolicy());\r
+ "\ngetExecuteExistingDelayedTasksAfterShutdownPolicy "+scheduled.getExecuteExistingDelayedTasksAfterShutdownPolicy());//+\r
+// "\ngetRemoveOnCancelPolicy "+scheduled.getRemoveOnCancelPolicy());\r
// while(!scheduled.isTerminated())\r
// {\r
// StringBuilder sb=new StringBuilder();\r
//发送心跳包\r
connection.send(protocolAPIHelper.getHeartbeatMSG(paramRuntime));\r
//发送完心跳后,开始检查服务器响应\r
- new Handler().postDelayed(new Runnable() {\r
- @Override\r
- public void run() {\r
- connection.send(protocolAPIHelper.getBindingMSG(mRuntime));\r
- }\r
- },1000);\r
+// new Handler().postDelayed(new Runnable() {\r
+// @Override\r
+// public void run() {\r
+// connection.send(protocolAPIHelper.getBindingMSG(mRuntime));\r
+// }\r
+// },1000);\r
+//\r
+// if (Config.protocol_no==Config.PROTOCOL_FZD){\r
+// new Handler().postDelayed(new Runnable() {\r
+// @Override\r
+// public void run() {\r
+// connection.send(protocolAPIHelper.getSyncTimeMSG(mRuntime));\r
+// }\r
+// },2000);\r
+// }\r
startResponseCheckTimer();\r
\r
\r
@Override\r
public void run() {\r
connection.send(protocolAPIHelper.getBindingMSG(mRuntime));\r
+ if (Config.protocol_no==Config.PROTOCOL_FZD){\r
+ new Handler().postDelayed(new Runnable() {\r
+ @Override\r
+ public void run() {\r
+ connection.send(protocolAPIHelper.getSyncTimeMSG(mRuntime));\r
+ }\r
+ },1000);\r
+ }\r
}\r
},1000);\r
+\r
startResponseCheckTimer();\r
}\r
},3500);\r
public void onReceive(Context param1Context, Intent param1Intent) {\r
boolean bool = param1Intent.getBooleanExtra("reboot", false);\r
ICLogger.i("Shutdown Received! reboot="+bool);\r
- if (KeepAlive.this.mRuntime.getBatteryLow() && !KeepAlive.this.mRuntime.getBatterychanging() && !bool && !KeepAlive.this.mRuntime.isShutdown()/*不是服务器让关闭的*/){\r
-\r
- if (KeepAlive.this.mRuntime.getBatteryLow()){\r
- KeepAlive.this.mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
+ if (KeepAlive.this.mRuntime.getBatteryLow() && !KeepAlive.this.mRuntime.getBatterychanging() && !bool && !KeepAlive.this.mRuntime.isShutdown()){\r
+ /*电量低,没有充电,且不是服务器让关闭的*/\r
+// if (KeepAlive.this.mRuntime.getBatteryLow()){\r
+// KeepAlive.this.mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
+ KeepAlive.this.mRuntime.setAlarmType(Runtime.AlarmType.ALARM_POWER_OFF);\r
KeepAlive.this.connection.send(protocolAPIHelper.getWarningMSG(KeepAlive.this.mRuntime));\r
\r
ICLogger.i("Shutdown Received! send AP10 !");\r
- }\r
+// }\r
\r
}\r
\r
}\r
return ret;\r
}\r
-\r
public static StringMessage getBindingMSG(Runtime runtime){\r
if (is_protocol_not_Initialled()) return null;\r
StringMessage ret=null;\r
}\r
return ret;\r
}\r
+ public static StringMessage getSyncTimeMSG(Runtime runtime){\r
+ if (is_protocol_not_Initialled()) return null;\r
+ StringMessage ret=null;\r
+ switch(Config.protocol_no)\r
+ {\r
+ case Config.PROTOCOL_JIAI:\r
+ ret=null;\r
+ break;\r
+ case Config.PROTOCOL_BEEHOME:\r
+ ret=null;\r
+ break;\r
+ case Config.PROTOCOL_IC:\r
+ ret=null;\r
+ break;\r
+ case Config.PROTOCOL_FZD:\r
+ ret=protocol_fzd.LGZONE(runtime);\r
+ break;\r
+ case Config.PROTOCOL_MQTT:\r
+ ret=null;\r
+ break;\r
+ }\r
+ return ret;\r
+ }\r
\r
public static StringMessage getTemperatureMSG(double temp_adusted,double body_temp,Runtime runtime){\r
if (is_protocol_not_Initialled()) return null;\r
ret=protocol_ic.AP10(runtime);\r
break;\r
case Config.PROTOCOL_FZD:\r
- ret=null;\r
+ ret=protocol_fzd.AL(runtime);\r
break;\r
case Config.PROTOCOL_MQTT:\r
ret=protocol_mqtt.AL(runtime);\r
\r
import java.io.File;\r
import java.util.ArrayList;\r
+import java.util.Date;\r
import java.util.HashMap;\r
\r
import chestnut.utils.PhoneUtils;\r
UD,//位置上传\r
UD2,//盲点位置上传\r
AL,//报警数据上传\r
- Time,//获取服务器时间\r
+ LGZONE,//获取服务器时区时间\r
WT,//获取天气\r
img,//上传图片\r
VOICE,//上传语音\r
cmdMap.put(CMD_TYPE.UD, "UD");\r
cmdMap.put(CMD_TYPE.UD2, "UD2");\r
cmdMap.put(CMD_TYPE.AL, "AL");\r
- cmdMap.put(CMD_TYPE.Time, "Time");\r
+ cmdMap.put(CMD_TYPE.LGZONE, "LGZONE");\r
cmdMap.put(CMD_TYPE.WT, "WT");\r
cmdMap.put(CMD_TYPE.img, "img");\r
cmdMap.put(CMD_TYPE.VOICE, "VOICE");\r
\r
}\r
\r
+\r
+ public static StringMessage LGZONE(Runtime runtime) {\r
+ return genFZDCMD(cmdMap.get(CMD_TYPE.LGZONE));\r
+ }\r
+ public void handleLGZONE(Runtime runtime, String data){\r
+\r
+ /***\r
+ * 平台回复:[XT*YYYYYYYYYYYYYYY*LEN*LGZONE,时区,时间,日期]\r
+ * 实例: [XT*1234567890*001D*LGZONE,+8,08:00:00,2016-01-12]\r
+ */\r
+ String[] list=data.split(CMDSPLIT);\r
+ if (list.length==4){\r
+ String timeZone=list[1].trim();\r
+ String date=list[3].trim();\r
+ String time=list[2].trim();\r
+ Date datetime= TimeUtil.parseDatetiime(date,time);\r
+\r
+ int timezone;\r
+ try\r
+ {\r
+ timezone=Integer.parseInt(timeZone.replace("+","").trim());\r
+ }catch (Exception e){\r
+ ICLogger.e("timezone",e);\r
+ timezone=8;\r
+ }\r
+\r
+ if (datetime!=null){\r
+ ICLogger.i("==="+timezone+" "+TimeUtil.getDefaultTimeZone());\r
+ TimeUtil.setTimeZone(timezone);\r
+\r
+\r
+ ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+ TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone);\r
+ ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+ }\r
+// Set Datetime 20200505112734\r
+// Set TimeZone 8\r
+\r
+ }else{\r
+ ICLogger.i("LGZONE Format Error!");\r
+ }\r
+\r
+\r
+ }\r
+\r
+\r
/*LBS+GPS混合定位*/\r
public static StringMessage UD(Runtime runtime) {\r
/***\r
* 实例:[IC*334588000000156*0002*AL]\r
* 说明:终端产生警情后发送报警信息到平台,若终端没有收到回复,则定时上报直到收到报警确认为止.\r
*/\r
- return null;\r
\r
+ StringBuilder sb=new StringBuilder();\r
+ String cmd=cmdMap.get(CMD_TYPE.AL);\r
+ sb.append(TimeUtil.getSystemDateYYMMDD()).append(CMDSPLIT)\r
+ .append(TimeUtil.getSystemTimeHHmmss()).append(CMDSPLIT)\r
+ .append(runtime.getFZDGPSData()).append(CMDSPLIT)\r
+ .append(String.format("%03d",abs(runtime.getSignalStrength()))).append(CMDSPLIT)\r
+ .append(runtime.getBattery()).append(CMDSPLIT)\r
+ .append(runtime.getTotalStepCount()).append(CMDSPLIT)\r
+ .append(runtime.getRolltimes()).append(CMDSPLIT)\r
+ .append(runtime.getFZDDevStatus(runtime)).append(CMDSPLIT)\r
+ .append(runtime.getFZDLBSMultiStationData()).append(CMDSPLIT)\r
+ .append(runtime.getFZDWifiData());\r
+\r
+ return genFZDCMD(cmd,sb.toString());\r
}\r
\r
public static StringMessage UPLOAD(){\r
ICLogger.i("服务器收到上传的心率heart");\r
mConnection.DeliverCMDMessageToSystem("heart",cmd);//通知下面线程状态变化\r
break;\r
+ case LGZONE:\r
+ ICLogger.i("收到服务器时间 LGZONE "+data);\r
+ handleLGZONE(mRuntime,data);\r
+ break;\r
// case BP84:\r
// handleBP84(cmd,mConnection);\r
// ICLogger.i("收到服务器白名单命令");\r
\r
import java.io.File;\r
import java.util.ArrayList;\r
+import java.util.Date;\r
import java.util.HashMap;\r
\r
import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;\r
log("handleBP00", "Set Datetime " + msg[1]);\r
log("handleBP00", "Set TimeZone " + msg[2]);\r
\r
-// Date datetime= TimeUtil.parseDatetiime(msg[1]);\r
-// int timezone=Integer.parseInt(msg[2]);\r
-// if (datetime!=null){\r
-// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
-// TimeUtil.setTimeZone(timezone);\r
-//\r
-//\r
-// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
-// TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone);\r
-// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
-//\r
-// }\r
+ Date datetime= TimeUtil.parseDatetiime(msg[1]);\r
+ int timezone=Integer.parseInt(msg[2]);\r
+ if (datetime!=null){\r
+ ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+ TimeUtil.setTimeZone(timezone);\r
+\r
+\r
+ ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+ TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone);\r
+ ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+\r
+ }\r
// Set Datetime 20200505112734\r
// Set TimeZone 8\r
\r
\r
public boolean handleCmd(CMD_TYPE type, String cmd) {\r
\r
- //普通非二进制命令用此函数处理\r
+ //普通非二进制命令用此函数处理\r
boolean ret=true;\r
ICLogger.i("handleCmd "+type.name() + " strLen="+cmd.length());\r
if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", " recv " + cmd);\r
+ cmd=cmd.replace(" ","");\r
switch (type){\r
case BP00: //登录包\r
handleBP00(mRuntime,cmd);\r
log("handleBP00", "Set Datetime " + msg[1]);\r
log("handleBP00", "Set TimeZone " + msg[2]);\r
\r
-// Date datetime= TimeUtil.parseDatetiime(msg[1]);\r
-// int timezone=Integer.parseInt(msg[2]);\r
-// if (datetime!=null){\r
-// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
-// TimeUtil.setTimeZone(timezone);\r
-//\r
-//\r
-// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
-// TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone);\r
-// ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
-//\r
-// }\r
+ Date datetime= TimeUtil.parseDatetiime(msg[1]);\r
+ int timezone=Integer.parseInt(msg[2]);\r
+ if (datetime!=null){\r
+ ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+ TimeUtil.setTimeZone(timezone);\r
+\r
+\r
+ ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+ TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone);\r
+ ICLogger.i("==="+TimeUtil.getDefaultTimeZone());\r
+\r
+ }\r
// Set Datetime 20200505112734\r
// Set TimeZone 8\r
\r
-#Sat Sep 12 16:48:19 CST 2020\r
-VERSION_CODE=612\r
+#Mon Sep 14 23:17:08 CST 2020\r
+VERSION_CODE=615\r