From cda19995b20875cbc9d1b091b48b102274ce4d37 Mon Sep 17 00:00:00 2001 From: Li ZongYing Date: Thu, 25 Jan 2024 15:12:47 +0800 Subject: [PATCH] optimize channel switch --- README.md | 15 +++++++- .../com/lizongying/mytv/ChannelFragment.kt | 34 ++++++++++--------- .../java/com/lizongying/mytv/MainFragment.kt | 9 +++-- 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 0295f82c..c7ed8eaf 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,20 @@ ## 更新日志 -### v1.4.4(安卓4专用) +### v1.4.7(高版本专用) + +* 修复部分用户cctv13播放过程中卡住的问题 +* 调整cctv的频道顺序 + +### v1.4.6(通用版) + +* 10以下频道不再需要先按0 + +### v1.4.5(高版本专用) + +* 数字选台配置 + +### v1.4.4(通用版) * 优化图标显示 * 增加换台反转 diff --git a/app/src/main/java/com/lizongying/mytv/ChannelFragment.kt b/app/src/main/java/com/lizongying/mytv/ChannelFragment.kt index 493cc78e..11542007 100644 --- a/app/src/main/java/com/lizongying/mytv/ChannelFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/ChannelFragment.kt @@ -2,7 +2,6 @@ package com.lizongying.mytv import android.os.Bundle import android.os.Handler -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -16,6 +15,7 @@ class ChannelFragment : Fragment() { private val handler = Handler() private val delay: Long = 3000 + private var channel = 0 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -28,37 +28,39 @@ class ChannelFragment : Fragment() { } fun show(tvViewModel: TVViewModel) { + handler.removeCallbacks(hideRunnable) + handler.removeCallbacks(playRunnable) binding.channelContent.text = tvViewModel.id.value.toString() - handler.removeCallbacks(removeRunnable) view?.visibility = View.VISIBLE - handler.postDelayed(removeRunnable, delay) + handler.postDelayed(hideRunnable, delay) } fun show(channel: String) { + this.channel = "${binding.channelContent.text}$channel".toInt() + handler.removeCallbacks(hideRunnable) + handler.removeCallbacks(playRunnable) if (binding.channelContent.text == "") { binding.channelContent.text = channel - handler.removeCallbacks(removeRunnable) view?.visibility = View.VISIBLE - handler.postDelayed(removeRunnable, delay) + handler.postDelayed(playRunnable, delay) } else { - val ch = "${binding.channelContent.text}$channel".toInt() - (activity as MainActivity).play(ch) - binding.channelContent.text = "" - view?.visibility = View.GONE + handler.postDelayed(playRunnable, 0) } } - override fun onResume() { - super.onResume() - handler.postDelayed(removeRunnable, delay) - } - override fun onPause() { super.onPause() - handler.removeCallbacks(removeRunnable) + handler.removeCallbacks(hideRunnable) + handler.removeCallbacks(playRunnable) + } + + private val hideRunnable = Runnable { + binding.channelContent.text = "" + view?.visibility = View.GONE } - private val removeRunnable = Runnable { + private val playRunnable = Runnable { + (activity as MainActivity).play(channel) binding.channelContent.text = "" view?.visibility = View.GONE } diff --git a/app/src/main/java/com/lizongying/mytv/MainFragment.kt b/app/src/main/java/com/lizongying/mytv/MainFragment.kt index 83a30d7d..b684d651 100644 --- a/app/src/main/java/com/lizongying/mytv/MainFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/MainFragment.kt @@ -15,6 +15,7 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.lizongying.mytv.Utils.dpToPx +import com.lizongying.mytv.Utils.getDateTimestamp import com.lizongying.mytv.databinding.RowBinding import com.lizongying.mytv.databinding.ShowBinding import com.lizongying.mytv.models.TVListViewModel @@ -31,13 +32,13 @@ class MainFragment : Fragment(), CardAdapter.ItemListener { private var _binding: ShowBinding? = null private val binding get() = _binding!! - private var request: Request = Request() + private var request = Request() var tvListViewModel = TVListViewModel() private var sharedPref: SharedPreferences? = null - private var lastVideoUrl: String = "" + private var lastVideoUrl = "" private val handler = Handler(Looper.getMainLooper()) private lateinit var mUpdateProgramRunnable: UpdateProgramRunnable @@ -226,6 +227,8 @@ class MainFragment : Fragment(), CardAdapter.ItemListener { this.itemPosition = itemPosition tvListViewModel.setItemPosition(itemPosition) tvListViewModel.getTVViewModel(itemPosition)?.changed() + } else { + Toast.makeText(context, "频道不存在", Toast.LENGTH_SHORT).show() } } } @@ -253,7 +256,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener { } fun updateProgram(tvViewModel: TVViewModel) { - val timestamp = Utils.getDateTimestamp() + val timestamp = getDateTimestamp() if (timestamp - tvViewModel.programUpdateTime > 60) { if (tvViewModel.program.value!!.isEmpty()) { tvViewModel.programUpdateTime = timestamp