Sfoglia il codice sorgente

增加同步服务器时区功能

weizhengliang 2 anni fa
parent
commit
0249d16768

+ 27 - 6
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -16,6 +16,7 @@ import android.text.TextUtils
 import android.util.Log
 import android.view.View
 import android.view.animation.AnimationUtils
+import com.alibaba.fastjson.JSON
 import com.alibaba.fastjson.JSONObject
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
@@ -1389,15 +1390,24 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
                         //AppUpdateHelper.restartApp(activity)
                     } else if (tcpModel.type == TcpType.TIME) {
                         if (tcpModel.action == TcpAction.TimeAction.SYNC) {
-                            val time = tcpModel.data.toString().toLong() * 1000
+                            var time = 0L
+                            var timeZone="Asia/Shanghai"
+                            if (canParseJson(tcpModel.data.toString())) {
+                                val json = JSON.parseObject(tcpModel.data.toString())
+                                time = json.getLong("time")*1000
+                                timeZone = json.getString("time_zone")
+                            } else {
+                                time = tcpModel.data.toString().toLong() * 1000
+                            }
+
                             try {
-                                AppUtil.setSystemTime(BaseApplication.appContext, time)
-                                Log.d("setTime", "set sys time1: $time")
+                                AppUtil.setSystemTime(BaseApplication.appContext, time, timeZone)
+                                Log.d("setTime", "set sys time1: $time, $timeZone")
                             } catch (e: Exception) {
                                 //"20211213:092314"
-                                val timeStr = TimeHandle.getDateTime(time, "yyyyMMdd.hhmmss")
-                                AppUtil.setSysTime(timeStr)
-                                Log.d("setTime", "set sys time2: $timeStr")
+                                val timeStr = TimeHandle.getDateTime(time, "yyyyMMdd.HHmmss")
+                                AppUtil.setSysTime(timeStr, timeZone)
+                                Log.d("setTime", "set sys time2: $timeStr, $timeZone")
                             }
                         }
                     }
@@ -1438,6 +1448,17 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
         }
     }
 
+    private fun canParseJson(str:String) : Boolean {
+        var result = false
+        try {
+            JSON.parseObject(str)
+            result=true
+        }catch (e:java.lang.Exception){
+            result=false
+        }
+        return result
+    }
+
     private fun startBroadcast() {
         if (TextUtils.isEmpty(broadcastChannelId)) {
             broadcastOn = false

+ 6 - 4
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/helper/AppUtil.java

@@ -15,12 +15,13 @@ public class AppUtil {
      *
      * @param time
      */
-    public static void setSysTime(String time) {
+    public static void setSysTime(String time, String timeZone) {
         try {
             Process process = Runtime.getRuntime().exec("su");
             if (null == process) return;
             DataOutputStream os = new DataOutputStream(process.getOutputStream());
-            os.writeBytes("setprop persist.sys.timezone Asia/Shanghai\n");
+            //os.writeBytes("setprop persist.sys.timezone Asia/Shanghai\n");
+            os.writeBytes("setprop persist.sys.timezone " + timeZone + "\n");
             if (android.os.Build.VERSION.SDK_INT >= 24) {//7.1以上的系统
                 String datetime = changeTimeForm(time); //20211213:092314  ------  051315372019.00
                 os.writeBytes("/system/bin/date " + datetime + " set\n");
@@ -84,9 +85,10 @@ public class AppUtil {
         }
     }
 
-    public static void setSystemTime(Context context, long timeMills) {
+    public static void setSystemTime(Context context, long timeMills, String timeZone) {
         AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
-        alarmManager.setTimeZone("Asia/Shanghai");
+        //alarmManager.setTimeZone("Asia/Shanghai");
+        alarmManager.setTimeZone(timeZone);
         alarmManager.setTime(timeMills);
     }
 }

+ 0 - 1
callingbed/src/main/res/layout/view_title_layout.xml

@@ -34,7 +34,6 @@
         android:layout_centerVertical="true"
         android:format12Hour="yyyy-MM-dd HH:mm EEEE"
         android:format24Hour="yyyy-MM-dd HH:mm EEEE"
-        android:timeZone="GMT+8"
         android:textColor="@color/main_color"
         android:textSize="@dimen/font_size_20" />
 

+ 3 - 3
common/src/main/code/com/wdkl/ncs/android/lib/utils/TimeHandle.kt

@@ -66,7 +66,7 @@ object TimeHandle {
     fun getDateTime(format: String): String {
         val date = Date(System.currentTimeMillis())
         val sdf = SimpleDateFormat(format)
-        sdf.timeZone = TimeZone.getTimeZone("GMT+8")
+        //sdf.timeZone = TimeZone.getTimeZone("GMT+8")
         return sdf.format(date)
     }
 
@@ -75,7 +75,7 @@ object TimeHandle {
         if (timeMillis > 0) {
             val date = Date(timeMillis)
             val sdf = SimpleDateFormat(format)
-            sdf.timeZone = TimeZone.getTimeZone("GMT+8")
+            //sdf.timeZone = TimeZone.getTimeZone("GMT+8")
             return sdf.format(date)
         }
         return "null"
@@ -88,7 +88,7 @@ object TimeHandle {
         val simpleDateFormat = SimpleDateFormat(pattern)
         var date: Date? = null
         try {
-            simpleDateFormat.timeZone = TimeZone.getTimeZone("GMT+8")
+            //simpleDateFormat.timeZone = TimeZone.getTimeZone("GMT+8")
             date = simpleDateFormat.parse(s)
 
             return date!!.time