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 0000000..4a40962 Binary files /dev/null and b/app/src/main/res/drawable/bingtuan.png differ