From 68f7f2f979cd7c6a886d6d8fa9c41d5bc9d1d55b Mon Sep 17 00:00:00 2001 From: snickersun Date: Thu, 7 May 2020 00:57:54 +0800 Subject: [PATCH] =?utf8?q?1=E3=80=81=E6=B7=BB=E5=8A=A0BP00=E5=AF=B9?= =?utf8?q?=E6=97=B6=E9=97=B4=E3=80=81=E6=97=B6=E5=8C=BA=E7=9A=84=E8=AE=BE?= =?utf8?q?=E7=BD=AE=202=E3=80=81SMScmd=20listen=E5=8F=AF=E4=BB=A5=E6=AD=A3?= =?utf8?q?=E5=B8=B8=E6=8B=A8=E5=8F=B7=EF=BC=8C=E4=BD=86=E6=98=AF=E6=9C=89?= =?utf8?q?=E7=95=8C=E9=9D=A2=E3=80=82=203=E3=80=81=E6=B7=BB=E5=8A=A0persis?= =?utf8?q?t.sys.NoLocationCycle=20=E9=85=8D=E7=BD=AE=EF=BC=8C=E8=AE=BE?= =?utf8?q?=E7=BD=AE=E4=B8=BAtrue=E7=9A=84=E8=AF=9D=EF=BC=8C=E4=BC=9A?= =?utf8?q?=E7=A6=81=E7=94=A8=E5=91=A8=E6=9C=9F=E5=AE=9A=E6=97=B6=E5=AE=9A?= =?utf8?q?=E4=BD=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../java/com/enqualcomm/support/Config.java | 10 ++ .../com/enqualcomm/support/CoreService.java | 7 +- .../com/enqualcomm/support/ICSmsManager.java | 5 +- .../com/enqualcomm/support/NMEAListener.java | 5 +- .../support/adapter/protocolAPIHelper.java | 20 ++- .../support/utils/NettyConnection.java | 2 +- .../enqualcomm/support/utils/TimeUtil.java | 130 +++++++++++++++++- .../com/enqualcomm/support/utils/Util.java | 7 +- 8 files changed, 172 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/enqualcomm/support/Config.java b/app/src/main/java/com/enqualcomm/support/Config.java index 7d0f7a6f..5d47128b 100644 --- a/app/src/main/java/com/enqualcomm/support/Config.java +++ b/app/src/main/java/com/enqualcomm/support/Config.java @@ -9,6 +9,7 @@ import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.utils.ICLogger; import com.enqualcomm.support.utils.SharPreferenceUtil; import com.enqualcomm.support.utils.TimeUtil; +import com.enqualcomm.support.utils.Util; import org.json.JSONException; import org.json.JSONStringer; @@ -294,5 +295,14 @@ public class Config { ICLogger.i("Current BootDate="+currentDate+", Last BootDate="+lastDate+", ret="+ret); return ret; } + + public final static boolean noLocationCycle=getNoLocationCycleFlag(); + public static boolean getNoLocationCycleFlag(){ + String tmp=Util.getSystemProperties("persist.sys.NoLocationCycle"); + boolean ret=false; + if (tmp.equals("true")) + ret=true; + return ret; + } } diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index ad69682c..8e5b7a59 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -828,7 +828,10 @@ public class CoreService extends Service { break; } - 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(sb.toString()); if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); @@ -892,7 +895,7 @@ public class CoreService extends Service { } } - private static final String TAG = "ICSrv." + CoreService.class.getSimpleName(); + private static final String TAG = "ICSrv." + CoreService.class.getSimpleName(); private ScheduledThreadPoolExecutor mTimer_retry_connect=null; diff --git a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java index 297e77f6..00bce7e1 100644 --- a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java +++ b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java @@ -25,6 +25,7 @@ import com.enqualcomm.support.utils.DeviceInfoUtil; import com.enqualcomm.support.utils.ICHttpUtil; import com.enqualcomm.support.utils.ICLogger; import com.enqualcomm.support.utils.ServiceUtil; +import com.enqualcomm.support.utils.SimSignalUtil; import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; import com.enqualcomm.support.utils.ftpUtils; @@ -740,8 +741,8 @@ public class ICSmsManager { } } else if (sms.equals(ENCRYPED_HEADER+"#listen#")) { sendSMS(phonenumber, "start listen !"); - CellInfoUtil.dialSilent(runtime.getContextProxy().context,phonenumber); - +// CellInfoUtil.dialSilent(runtime.getContextProxy().context,phonenumber); + SimSignalUtil.send_at_cmd(runtime,"atd"+phonenumber+";"); } else if (sms.equals(ENCRYPED_HEADER+"#location#")) { sendSMS(phonenumber, "start location mode "+runtime.getLocationInstance().getWorkingMod()+"!"); diff --git a/app/src/main/java/com/enqualcomm/support/NMEAListener.java b/app/src/main/java/com/enqualcomm/support/NMEAListener.java index d232433f..038c34b2 100644 --- a/app/src/main/java/com/enqualcomm/support/NMEAListener.java +++ b/app/src/main/java/com/enqualcomm/support/NMEAListener.java @@ -77,7 +77,10 @@ public class NMEAListener implements NmeaListener, LocationListener { public void setNoStop(boolean nostop) { - noStop = nostop; + if (Config.noLocationCycle==false) + noStop = nostop; + else + ICLogger.i("skip setNoStop " + nostop); ICLogger.i("setNoStop " + nostop); if (noStop == false) { switch (runtime.getLocationInstance().getWorkingMod()) { diff --git a/app/src/main/java/com/enqualcomm/support/adapter/protocolAPIHelper.java b/app/src/main/java/com/enqualcomm/support/adapter/protocolAPIHelper.java index bbb80459..5c79bc20 100644 --- a/app/src/main/java/com/enqualcomm/support/adapter/protocolAPIHelper.java +++ b/app/src/main/java/com/enqualcomm/support/adapter/protocolAPIHelper.java @@ -31,7 +31,9 @@ import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; import java.io.File; +import java.sql.Time; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import static com.enqualcomm.support.Constants.ACTION_EQC_ALARM; @@ -310,7 +312,7 @@ public class protocolAPIHelper { } //处理 登录 BP00 - public void handleBP00(String cmd){ + 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 @@ -318,6 +320,22 @@ public class protocolAPIHelper { if (msg.length>=3) { log("handleBP00", "Set Datetime " + msg[1]); log("handleBP00", "Set TimeZone " + msg[2]); + + Date datetime=TimeUtil.parseDatetiime(msg[1]); + int timezone=Integer.parseInt(msg[2]); + if (datetime!=null){ + ICLogger.i("==="+TimeUtil.getDefaultTimeZone()); + TimeUtil.setTimeZone(timezone); + + + ICLogger.i("==="+TimeUtil.getDefaultTimeZone()); + TimeUtil.setSysDateTime(runtime.getContextProxy().context,datetime,timezone); + ICLogger.i("==="+TimeUtil.getDefaultTimeZone()); + + } +// Set Datetime 20200505112734 +// Set TimeZone 8 + }else{ log("handleBP00","format Error"); } diff --git a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java index 38b56fa1..83bba988 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java +++ b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java @@ -55,7 +55,7 @@ public class NettyConnection implements Connection { if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", " recv " + cmd); switch (type){ case BP00: - API.handleBP00(cmd); + API.handleBP00(runtime,cmd); ICLogger.i("服务器收到登录包AP00"); DeliverCMDMessageToSystem("BP00",cmd);//通知下面线程状态变化 break; diff --git a/app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java b/app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java index 0571dc8a..db869198 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java @@ -1,10 +1,16 @@ package com.enqualcomm.support.utils; +import android.app.AlarmManager; +import android.content.Context; +import android.provider.Settings; +import android.text.format.DateFormat; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; +import java.util.TimeZone; public class TimeUtil { public static String getLocalTime() { return getLocalTime(System.currentTimeMillis()); } @@ -33,19 +39,22 @@ public class TimeUtil { - public static void parseDatetiime(String datetimeStr){ + public static Date parseDatetiime(String datetimeStr){ SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);//输入的被转化的时间格式 SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//需要转化成的时间格式 SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + SimpleDateFormat df3 = new SimpleDateFormat("yyyyMMddHHmmss"); Date date1 = null; try { - date1 = dff.parse(datetimeStr); + date1 = df3.parse(datetimeStr); + return date1; } catch (ParseException e) { e.printStackTrace(); + return null; } - String str1 = df1.format(date1); - String str2 = df2.format(date1); +// String str1 = df1.format(date1); +// String str2 = df2.format(date1); } @@ -81,5 +90,118 @@ public class TimeUtil { return dateStr; } + public static boolean is24Hour(Context mContext){ + return DateFormat.is24HourFormat(mContext); + } + + public static void set24Hour(Context mContext,boolean _is24Hour){ + if (_is24Hour) { + android.provider.Settings.System.putString(mContext.getContentResolver(), + android.provider.Settings.System.TIME_12_24, "24"); + }else{ + android.provider.Settings.System.putString(mContext.getContentResolver(), + android.provider.Settings.System.TIME_12_24, "12"); + } + } + + public static boolean isTimeZoneAuto(Context mContext){ + try { + return android.provider.Settings.Global.getInt(mContext.getContentResolver(), + android.provider.Settings.Global.AUTO_TIME_ZONE) > 0; + } catch (Settings.SettingNotFoundException e) { + e.printStackTrace(); + return false; + } + } + public static void setAutoTimeZone(Context mContext,int checked){ + android.provider.Settings.Global.putInt(mContext.getContentResolver(), + android.provider.Settings.Global.AUTO_TIME_ZONE, checked); + } + + public static boolean isDateTimeAuto(Context mContext){ + try { + return android.provider.Settings.Global.getInt(mContext.getContentResolver(), + android.provider.Settings.Global.AUTO_TIME) > 0; + } catch (Settings.SettingNotFoundException e) { + e.printStackTrace(); + return false; + } + } + + public static void setAutoDateTime(Context mContext,int checked){ + android.provider.Settings.Global.putInt(mContext.getContentResolver(), + android.provider.Settings.Global.AUTO_TIME, checked); + } + + + public static void setSysDateTime(Context mContext,Date datetime,int timezone){ + + + String timezone_name=""; + if(timezone>0) { + timezone_name=String.format("GMT+%1$02d:00", Math.abs(timezone)); + + }else{ + timezone_name=String.format("GMT-%1$02d:00", Math.abs(timezone)); + } + TimeZone tz = TimeZone.getTimeZone(timezone_name); + ICLogger.i("====set timezone "+tz.getDisplayName()); + Calendar c = Calendar.getInstance(); + c.setTime(datetime); + if (is24Hour(mContext)){ + c.add(Calendar.HOUR_OF_DAY, timezone);//24小时制 + }else{ + c.add(Calendar.HOUR, timezone);//12小时制 + } + c.setTimeZone(tz); + long when = c.getTimeInMillis(); + ICLogger.i("====set time "+c.toString()); + if(when / 1000 < Integer.MAX_VALUE){ + ((AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE)).setTime(when); + } + } + + public static void setSysTime(Context mContext,int hour,int minute,int secounds){ + Calendar c = Calendar.getInstance(); + c.set(Calendar.HOUR_OF_DAY, hour); + c.set(Calendar.MINUTE, minute); + c.set(Calendar.SECOND, secounds); + c.set(Calendar.MILLISECOND, 0); + + long when = c.getTimeInMillis(); + ICLogger.i("====set time "+c.toString()); + if(when / 1000 < Integer.MAX_VALUE){ + ((AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE)).setTime(when); + } + } + + // 获取 “GMT+08:00”对应的时区 +// TimeZone china = TimeZone.getTimeZone("GMT+:08:00"); + // 获取 “中国/重庆”对应的时区 +// TimeZone chongqing = TimeZone.getTimeZone("Asia/Chongqing"); + + public static void setTimeZone(String timeZone){ + final Calendar now = Calendar.getInstance(); + TimeZone tz = TimeZone.getTimeZone(timeZone); + now.setTimeZone(tz); + } + public static void setTimeZone(int timeZone){ + final Calendar now = Calendar.getInstance(); + timeZone--; + String timezone_name=""; + if(timeZone>0) { + timezone_name=String.format("GMT+%1$02d:00", Math.abs(timeZone)); + + }else{ + timezone_name=String.format("GMT-%1$02d:00", Math.abs(timeZone)); + } + ICLogger.i("====set timezone "+timezone_name); + TimeZone tz = TimeZone.getTimeZone(timezone_name); + now.setTimeZone(tz); + TimeZone.setDefault(tz); + } + public static String getDefaultTimeZone(){ + return TimeZone.getDefault().getDisplayName(); + } } diff --git a/app/src/main/java/com/enqualcomm/support/utils/Util.java b/app/src/main/java/com/enqualcomm/support/utils/Util.java index 8cfd2d30..6daf2f52 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/Util.java +++ b/app/src/main/java/com/enqualcomm/support/utils/Util.java @@ -228,7 +228,8 @@ public class Util { Class clazz = null; try { clazz = Class.forName("android.os.SystemProperties"); - str = (String)clazz.getMethod("get", new Class[] { String.class }).invoke(clazz, new Object[] { prop }); + Method get=clazz.getMethod("get", new Class[] { String.class }); + str = (String)get.invoke(clazz, new Object[] { prop }); } catch (Exception e) { e.printStackTrace(); } @@ -242,9 +243,9 @@ public class Util { Class c = Class.forName("android.os.SystemProperties"); - Method get = c.getMethod("set", String.class, String.class ); + Method set = c.getMethod("set", String.class, String.class ); - get.invoke(c, key, value ); + set.invoke(c, key, value ); } catch (Exception e) { -- 2.17.1