xiongzhu vor 1 Jahr
Ursprung
Commit
8ec3c051e4

+ 28 - 0
app/src/main/java/com/example/modifier/Global.kt

@@ -5,9 +5,11 @@ import android.content.Intent
 import android.os.Build
 import android.util.Log
 import androidx.core.content.ContextCompat
+import com.example.modifier.http.KtorClient
 import com.example.modifier.model.TelephonyConfig
 import com.example.modifier.utils.RcsHackTool
 import com.google.gson.Gson
+import io.ktor.client.request.head
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.launch
@@ -17,7 +19,11 @@ import org.apache.commons.io.IOUtils
 import org.apache.commons.lang3.StringUtils
 import java.io.File
 import java.io.FileWriter
+import java.time.ZoneId
+import java.time.ZonedDateTime
+import java.time.format.DateTimeFormatter
 import java.util.Base64
+import java.util.Locale
 
 object Global {
     @JvmField
@@ -442,4 +448,26 @@ object Global {
         val context = Utils.getContext()
         context.sendBroadcast(intent)
     }
+
+    @JvmStatic
+    suspend fun syncTime() {
+        try {
+            Log.i("Modifier", "syncTime: start")
+            val response = KtorClient.head("http://www.baidu.com")
+            val dateHeader = response.headers["Date"]
+            val date = ZonedDateTime.parse(
+                dateHeader,
+                DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH)
+            )
+            // convert to Asia/Shanghai
+            val dateInZone = date.withZoneSameInstant(ZoneId.of("Asia/Shanghai"))
+            Log.i("Modifier", "syncTime: ${dateInZone.format(DateTimeFormatter.ISO_DATE_TIME)}")
+            Utils.runAsRoot(
+                "setprop persist.sys.timezone Asia/Shanghai",
+                "date '${dateInZone.format(DateTimeFormatter.ofPattern("MMddHHmmyyyy.ss"))}'"
+            )
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
 }

+ 1 - 0
app/src/main/java/com/example/modifier/MainActivity.kt

@@ -31,6 +31,7 @@ class MainActivity : AppCompatActivity() {
         val controller = navHostFragment.navController
         setupWithNavController(mBinding.nav, controller)
         CoroutineScope(Dispatchers.IO).launch {
+            Global.syncTime()
             if (!Settings.canDrawOverlays(this@MainActivity)) {
                 Utils.enableOverlay()
             }