From: snickersun Date: Wed, 6 May 2020 16:57:54 +0000 (+0800) Subject: 1、添加BP00对时间、时区的设置 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=68f7f2f979cd7c6a886d6d8fa9c41d5bc9d1d55b;p=icsupport.git 1、添加BP00对时间、时区的设置 2、SMScmd listen可以正常拨号,但是有界面。 3、添加persist.sys.NoLocationCycle 配置,设置为true的话,会禁用周期定时定位。 --- 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) {