From 809ec920a5097ad18d8e21d4c903d53966654366 Mon Sep 17 00:00:00 2001 From: Li ZongYing Date: Sun, 11 Feb 2024 10:42:00 +0800 Subject: [PATCH] get time online --- .../java/com/lizongying/mytv/InfoFragment.kt | 4 ++ .../java/com/lizongying/mytv/MainActivity.kt | 15 ++++++ .../main/java/com/lizongying/mytv/TVList.kt | 4 +- .../main/java/com/lizongying/mytv/Utils.kt | 50 ++++++++++-------- app/src/main/res/drawable/bingtuan.png | Bin 0 -> 17086 bytes 5 files changed, 50 insertions(+), 23 deletions(-) create mode 100644 app/src/main/res/drawable/bingtuan.png diff --git a/app/src/main/java/com/lizongying/mytv/InfoFragment.kt b/app/src/main/java/com/lizongying/mytv/InfoFragment.kt index 7da7dcc..258a9af 100644 --- a/app/src/main/java/com/lizongying/mytv/InfoFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/InfoFragment.kt @@ -43,6 +43,10 @@ class InfoFragment : Fragment() { .load(R.drawable.xinjiang) .into(binding.infoLogo) + "兵团卫视" -> Glide.with(this) + .load(R.drawable.bingtuan) + .into(binding.infoLogo) + else -> Glide.with(this) .load(tvViewModel.logo.value) .into(binding.infoLogo) diff --git a/app/src/main/java/com/lizongying/mytv/MainActivity.kt b/app/src/main/java/com/lizongying/mytv/MainActivity.kt index f9ed1e4..6bb76e4 100644 --- a/app/src/main/java/com/lizongying/mytv/MainActivity.kt +++ b/app/src/main/java/com/lizongying/mytv/MainActivity.kt @@ -18,7 +18,12 @@ import android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION import android.view.WindowManager import android.widget.Toast import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.lifecycleScope import com.lizongying.mytv.models.TVViewModel +import kotlinx.coroutines.CoroutineStart +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.launch import java.security.MessageDigest @@ -44,6 +49,16 @@ class MainActivity : FragmentActivity() { private var versionName = "" + init { + lifecycleScope.launch(Dispatchers.IO) { + val utilsJob = async(start = CoroutineStart.LAZY) { Utils.init() } + + utilsJob.start() + + utilsJob.await() + } + } + override fun onCreate(savedInstanceState: Bundle?) { Log.i(TAG, "onCreate") super.onCreate(savedInstanceState) diff --git a/app/src/main/java/com/lizongying/mytv/TVList.kt b/app/src/main/java/com/lizongying/mytv/TVList.kt index 9f4bdde..6eeb17a 100644 --- a/app/src/main/java/com/lizongying/mytv/TVList.kt +++ b/app/src/main/java/com/lizongying/mytv/TVList.kt @@ -91,8 +91,8 @@ object TVList { 0, "央视频道", "https://resources.yangshipin.cn/assets/oms/image/202306/741515efda91f03f455df8a7da4ee11fa9329139c276435cf0a9e2af398d5bf2.png?imageMogr2/format/webp", - "600001802", - "2022574301", + "600108442", + "2013693901", "600001802", true, mustToken = true diff --git a/app/src/main/java/com/lizongying/mytv/Utils.kt b/app/src/main/java/com/lizongying/mytv/Utils.kt index a4ae56a..ab095a7 100644 --- a/app/src/main/java/com/lizongying/mytv/Utils.kt +++ b/app/src/main/java/com/lizongying/mytv/Utils.kt @@ -1,55 +1,63 @@ package com.lizongying.mytv import android.content.res.Resources -import android.os.SystemClock -import android.util.Log import android.util.TypedValue import com.google.gson.Gson import com.lizongying.mytv.api.TimeResponse -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import java.io.IOException import java.text.SimpleDateFormat import java.util.Date import java.util.Locale object Utils { + private var between: Long = 0 + fun getDateFormat(format: String): String { - return SimpleDateFormat(format, Locale.CHINA).format(Date()) + return SimpleDateFormat( + format, + Locale.CHINA + ).format(Date(System.currentTimeMillis() - between)) } fun getDateTimestamp(): Long { - return Date().time / 1000 + return (System.currentTimeMillis() - between) / 1000 } - - init { - CoroutineScope(Dispatchers.Default).launch { - updateTimestampFromServer() + suspend fun init() { + var currentTimeMillis: Long = 0 + try { + currentTimeMillis = getTimestampFromServer() + } catch (e: Exception) { + println("Failed to retrieve timestamp from server: ${e.message}") } + between = System.currentTimeMillis() - currentTimeMillis } /** * 从服务器获取时间戳 * @return Long 时间戳 */ - private suspend fun updateTimestampFromServer() { - val currentTimeMillis = withContext(Dispatchers.IO) { + private suspend fun getTimestampFromServer(): Long { + return withContext(Dispatchers.IO) { val client = okhttp3.OkHttpClient.Builder() .connectTimeout(500, java.util.concurrent.TimeUnit.MILLISECONDS) .readTimeout(1, java.util.concurrent.TimeUnit.SECONDS).build() - client.newCall( - okhttp3.Request.Builder() - .url("https://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp") - .build() - ).execute().use { response -> - if (!response.isSuccessful) throw java.io.IOException("Unexpected code $response") - val string = response.body()?.string() - Gson().fromJson(string, TimeResponse::class.java).data.t.toLong() + val request = okhttp3.Request.Builder() + .url("https://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp") + .build() + try { + client.newCall(request).execute().use { response -> + if (!response.isSuccessful) throw IOException("Unexpected code $response") + val string = response.body()?.string() + Gson().fromJson(string, TimeResponse::class.java).data.t.toLong() + } + } catch (e: IOException) { + // Handle network errors + throw IOException("Error during network request", e) } } - SystemClock.setCurrentTimeMillis(currentTimeMillis) } fun dpToPx(dp: Float): Int { diff --git a/app/src/main/res/drawable/bingtuan.png b/app/src/main/res/drawable/bingtuan.png new file mode 100644 index 0000000000000000000000000000000000000000..4a40962549a2358135f3bdd702fd07fea2510f23 GIT binary patch literal 17086 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