import com.enqualcomm.support.utils.Util;\r
\r
import java.io.File;\r
+import java.sql.Time;\r
import java.util.ArrayList;\r
+import java.util.Date;\r
import java.util.HashMap;\r
\r
import static com.enqualcomm.support.Constants.ACTION_EQC_ALARM;\r
}\r
\r
//处理 登录 BP00\r
- public void handleBP00(String cmd){\r
+ public void handleBP00(Runtime runtime,String cmd){\r
String[] msg=cmd.split(CMDSPLIT);\r
// get Msg :IWBP00,20191229171933,8# (size)24\r
// 12-30 01:19:33.861 6492-6492/com.enqualcomm.support I/ICSrv.protocolAPIHelper: found cmd keyid=BP00 ,keyname=BP00 , IWBP00,20191229171933,8\r
if (msg.length>=3) {\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
+// Set Datetime 20200505112734\r
+// Set TimeZone 8\r
+\r
}else{\r
log("handleBP00","format Error");\r
}\r
package com.enqualcomm.support.utils;\r
\r
+import android.app.AlarmManager;\r
+import android.content.Context;\r
+import android.provider.Settings;\r
+import android.text.format.DateFormat;\r
+\r
import java.text.ParseException;\r
import java.text.SimpleDateFormat;\r
import java.util.Calendar;\r
import java.util.Date;\r
import java.util.Locale;\r
+import java.util.TimeZone;\r
\r
public class TimeUtil {\r
public static String getLocalTime() { return getLocalTime(System.currentTimeMillis()); }\r
\r
\r
\r
- public static void parseDatetiime(String datetimeStr){\r
+ public static Date parseDatetiime(String datetimeStr){\r
\r
SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);//输入的被转化的时间格式\r
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//需要转化成的时间格式\r
SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmssSSS");\r
+ SimpleDateFormat df3 = new SimpleDateFormat("yyyyMMddHHmmss");\r
Date date1 = null;\r
try {\r
- date1 = dff.parse(datetimeStr);\r
+ date1 = df3.parse(datetimeStr);\r
+ return date1;\r
} catch (ParseException e) {\r
e.printStackTrace();\r
+ return null;\r
}\r
- String str1 = df1.format(date1);\r
- String str2 = df2.format(date1);\r
+// String str1 = df1.format(date1);\r
+// String str2 = df2.format(date1);\r
\r
}\r
\r
return dateStr;\r
}\r
\r
+ public static boolean is24Hour(Context mContext){\r
+ return DateFormat.is24HourFormat(mContext);\r
+ }\r
+\r
+ public static void set24Hour(Context mContext,boolean _is24Hour){\r
+ if (_is24Hour) {\r
+ android.provider.Settings.System.putString(mContext.getContentResolver(),\r
+ android.provider.Settings.System.TIME_12_24, "24");\r
+ }else{\r
+ android.provider.Settings.System.putString(mContext.getContentResolver(),\r
+ android.provider.Settings.System.TIME_12_24, "12");\r
+ }\r
+ }\r
+\r
+ public static boolean isTimeZoneAuto(Context mContext){\r
+ try {\r
+ return android.provider.Settings.Global.getInt(mContext.getContentResolver(),\r
+ android.provider.Settings.Global.AUTO_TIME_ZONE) > 0;\r
+ } catch (Settings.SettingNotFoundException e) {\r
+ e.printStackTrace();\r
+ return false;\r
+ }\r
+ }\r
+ public static void setAutoTimeZone(Context mContext,int checked){\r
+ android.provider.Settings.Global.putInt(mContext.getContentResolver(),\r
+ android.provider.Settings.Global.AUTO_TIME_ZONE, checked);\r
+ }\r
+\r
+ public static boolean isDateTimeAuto(Context mContext){\r
+ try {\r
+ return android.provider.Settings.Global.getInt(mContext.getContentResolver(),\r
+ android.provider.Settings.Global.AUTO_TIME) > 0;\r
+ } catch (Settings.SettingNotFoundException e) {\r
+ e.printStackTrace();\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public static void setAutoDateTime(Context mContext,int checked){\r
+ android.provider.Settings.Global.putInt(mContext.getContentResolver(),\r
+ android.provider.Settings.Global.AUTO_TIME, checked);\r
+ }\r
+\r
+\r
+ public static void setSysDateTime(Context mContext,Date datetime,int timezone){\r
+\r
+\r
+ String timezone_name="";\r
+ if(timezone>0) {\r
+ timezone_name=String.format("GMT+%1$02d:00", Math.abs(timezone));\r
+\r
+ }else{\r
+ timezone_name=String.format("GMT-%1$02d:00", Math.abs(timezone));\r
+ }\r
+ TimeZone tz = TimeZone.getTimeZone(timezone_name);\r
+ ICLogger.i("====set timezone "+tz.getDisplayName());\r
+ Calendar c = Calendar.getInstance();\r
+ c.setTime(datetime);\r
+ if (is24Hour(mContext)){\r
+ c.add(Calendar.HOUR_OF_DAY, timezone);//24小时制\r
+ }else{\r
+ c.add(Calendar.HOUR, timezone);//12小时制\r
+ }\r
+ c.setTimeZone(tz);\r
+ long when = c.getTimeInMillis();\r
+ ICLogger.i("====set time "+c.toString());\r
+ if(when / 1000 < Integer.MAX_VALUE){\r
+ ((AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE)).setTime(when);\r
+ }\r
+ }\r
+\r
+ public static void setSysTime(Context mContext,int hour,int minute,int secounds){\r
+ Calendar c = Calendar.getInstance();\r
+ c.set(Calendar.HOUR_OF_DAY, hour);\r
+ c.set(Calendar.MINUTE, minute);\r
+ c.set(Calendar.SECOND, secounds);\r
+ c.set(Calendar.MILLISECOND, 0);\r
+\r
+ long when = c.getTimeInMillis();\r
+ ICLogger.i("====set time "+c.toString());\r
+ if(when / 1000 < Integer.MAX_VALUE){\r
+ ((AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE)).setTime(when);\r
+ }\r
+ }\r
+\r
+ // 获取 “GMT+08:00”对应的时区\r
+// TimeZone china = TimeZone.getTimeZone("GMT+:08:00");\r
+ // 获取 “中国/重庆”对应的时区\r
+// TimeZone chongqing = TimeZone.getTimeZone("Asia/Chongqing");\r
+\r
+ public static void setTimeZone(String timeZone){\r
+ final Calendar now = Calendar.getInstance();\r
+ TimeZone tz = TimeZone.getTimeZone(timeZone);\r
+ now.setTimeZone(tz);\r
+ }\r
+ public static void setTimeZone(int timeZone){\r
+ final Calendar now = Calendar.getInstance();\r
+ timeZone--;\r
+ String timezone_name="";\r
+ if(timeZone>0) {\r
+ timezone_name=String.format("GMT+%1$02d:00", Math.abs(timeZone));\r
+\r
+ }else{\r
+ timezone_name=String.format("GMT-%1$02d:00", Math.abs(timeZone));\r
+ }\r
+ ICLogger.i("====set timezone "+timezone_name);\r
+ TimeZone tz = TimeZone.getTimeZone(timezone_name);\r
+ now.setTimeZone(tz);\r
+ TimeZone.setDefault(tz);\r
+ }\r
+ public static String getDefaultTimeZone(){\r
+ return TimeZone.getDefault().getDisplayName();\r
+ }\r
}\r
\r