mirror of
https://github.com/lizongying/my-tv.git
synced 2026-11-02 01:26:29 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b157f1eb28 | ||
|
|
2b172ae615 | ||
|
|
39e5cc7c1f |
+15
@@ -1,5 +1,20 @@
|
|||||||
## 更新日志
|
## 更新日志
|
||||||
|
|
||||||
|
### v1.9.4(通用)
|
||||||
|
|
||||||
|
* 修复默认时间不显示问题
|
||||||
|
* 设置页居中
|
||||||
|
* 频道号和时间对齐
|
||||||
|
|
||||||
|
### v1.9.2(通用)
|
||||||
|
|
||||||
|
* 修复一个重试的错误
|
||||||
|
|
||||||
|
### v1.9.0(通用)
|
||||||
|
|
||||||
|
* 减少视频播放失败情况
|
||||||
|
* 全面屏手机居中显示
|
||||||
|
|
||||||
### v1.8.8(通用)
|
### v1.8.8(通用)
|
||||||
|
|
||||||
* 样式优化
|
* 样式优化
|
||||||
|
|||||||
@@ -39,11 +39,12 @@ class ChannelFragment : Fragment() {
|
|||||||
binding.channel.layoutParams = layoutParams
|
binding.channel.layoutParams = layoutParams
|
||||||
|
|
||||||
binding.content.textSize = application.px2PxFont(binding.content.textSize)
|
binding.content.textSize = application.px2PxFont(binding.content.textSize)
|
||||||
|
binding.time.textSize = application.px2PxFont(binding.time.textSize)
|
||||||
|
|
||||||
binding.main.layoutParams.width = application.shouldWidthPx()
|
binding.main.layoutParams.width = application.shouldWidthPx()
|
||||||
binding.main.layoutParams.height = application.shouldHeightPx()
|
binding.main.layoutParams.height = application.shouldHeightPx()
|
||||||
|
|
||||||
(activity as MainActivity).fragmentReady("ChannelFragment")
|
(activity as MainActivity).fragmentReady(TAG)
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ class InfoFragment : Fragment() {
|
|||||||
|
|
||||||
_binding!!.root.visibility = View.GONE
|
_binding!!.root.visibility = View.GONE
|
||||||
|
|
||||||
(activity as MainActivity).fragmentReady("InfoFragment")
|
(activity as MainActivity).fragmentReady(TAG)
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
package com.lizongying.mytv
|
package com.lizongying.mytv
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.net.ConnectivityManager
|
|
||||||
import android.net.Network
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
@@ -17,6 +14,7 @@ import android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
|||||||
import android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
import android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.lizongying.mytv.models.TVViewModel
|
import com.lizongying.mytv.models.TVViewModel
|
||||||
@@ -33,7 +31,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
private val playerFragment = PlayerFragment()
|
private val playerFragment = PlayerFragment()
|
||||||
private val errorFragment = ErrorFragment()
|
private val errorFragment = ErrorFragment()
|
||||||
|
|
||||||
// private val loadingFragment = LoadingFragment()
|
private val loadingFragment = LoadingFragment()
|
||||||
private val mainFragment = MainFragment()
|
private val mainFragment = MainFragment()
|
||||||
private val infoFragment = InfoFragment()
|
private val infoFragment = InfoFragment()
|
||||||
private val channelFragment = ChannelFragment()
|
private val channelFragment = ChannelFragment()
|
||||||
@@ -65,6 +63,13 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
|
|
||||||
Request.setRequestListener(this)
|
Request.setRequestListener(this)
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
|
val lp = window.attributes
|
||||||
|
lp.layoutInDisplayCutoutMode =
|
||||||
|
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
|
||||||
|
window.setAttributes(lp)
|
||||||
|
}
|
||||||
|
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||||
window.decorView.systemUiVisibility =
|
window.decorView.systemUiVisibility =
|
||||||
@@ -78,7 +83,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
supportFragmentManager.beginTransaction()
|
val transaction = supportFragmentManager.beginTransaction()
|
||||||
.add(R.id.main_browse_fragment, playerFragment)
|
.add(R.id.main_browse_fragment, playerFragment)
|
||||||
.add(R.id.main_browse_fragment, errorFragment)
|
.add(R.id.main_browse_fragment, errorFragment)
|
||||||
// .add(R.id.main_browse_fragment, loadingFragment)
|
// .add(R.id.main_browse_fragment, loadingFragment)
|
||||||
@@ -88,29 +93,35 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
.add(R.id.main_browse_fragment, mainFragment)
|
.add(R.id.main_browse_fragment, mainFragment)
|
||||||
.hide(mainFragment)
|
.hide(mainFragment)
|
||||||
.hide(errorFragment)
|
.hide(errorFragment)
|
||||||
// .hide(loadingFragment)
|
|
||||||
.commit()
|
if (!SP.time) {
|
||||||
|
transaction.hide(timeFragment)
|
||||||
|
} else {
|
||||||
|
transaction.show(timeFragment)
|
||||||
|
}
|
||||||
|
|
||||||
|
transaction.commitNow()
|
||||||
}
|
}
|
||||||
gestureDetector = GestureDetector(this, GestureListener())
|
gestureDetector = GestureDetector(this, GestureListener())
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
val connectivityManager =
|
// val connectivityManager =
|
||||||
getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
// getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||||
connectivityManager.registerDefaultNetworkCallback(object :
|
// connectivityManager.registerDefaultNetworkCallback(object :
|
||||||
ConnectivityManager.NetworkCallback() {
|
// ConnectivityManager.NetworkCallback() {
|
||||||
override fun onAvailable(network: Network) {
|
// override fun onAvailable(network: Network) {
|
||||||
super.onAvailable(network)
|
// super.onAvailable(network)
|
||||||
Log.i(TAG, "net ${Build.VERSION.SDK_INT}")
|
// Log.i(TAG, "net ${Build.VERSION.SDK_INT}")
|
||||||
if (this@MainActivity.isNetworkConnected) {
|
// if (this@MainActivity.isNetworkConnected) {
|
||||||
Log.i(TAG, "net isNetworkConnected")
|
// Log.i(TAG, "net isNetworkConnected")
|
||||||
ready++
|
// ready++
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
} else {
|
// } else {
|
||||||
Log.i(TAG, "net ${Build.VERSION.SDK_INT}")
|
// Log.i(TAG, "net ${Build.VERSION.SDK_INT}")
|
||||||
ready++
|
// ready++
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun showInfoFragment(tvViewModel: TVViewModel) {
|
fun showInfoFragment(tvViewModel: TVViewModel) {
|
||||||
@@ -140,6 +151,14 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
.commit()
|
.commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun showLoadingFragment() {
|
||||||
|
showFragment(loadingFragment)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun hideLoadingFragment() {
|
||||||
|
hideFragment(loadingFragment)
|
||||||
|
}
|
||||||
|
|
||||||
fun showPlayerFragment() {
|
fun showPlayerFragment() {
|
||||||
if (playerFragment.isVisible) {
|
if (playerFragment.isVisible) {
|
||||||
return
|
return
|
||||||
@@ -210,7 +229,6 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
fun settingDelayHide() {
|
fun settingDelayHide() {
|
||||||
handler.removeCallbacks(hideSetting)
|
handler.removeCallbacks(hideSetting)
|
||||||
handler.postDelayed(hideSetting, delayHideSetting)
|
handler.postDelayed(hideSetting, delayHideSetting)
|
||||||
showTime()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun settingNeverHide() {
|
fun settingNeverHide() {
|
||||||
@@ -238,20 +256,37 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
fun fragmentReady(tag: String) {
|
fun fragmentReady(tag: String) {
|
||||||
ready++
|
ready++
|
||||||
Log.i(TAG, "ready $tag $ready ")
|
Log.i(TAG, "ready $tag $ready ")
|
||||||
if (ready == 8) {
|
if (ready == 7) {
|
||||||
mainFragment.fragmentReady()
|
mainFragment.fragmentReady()
|
||||||
showTime()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showTime() {
|
private fun showTime() {
|
||||||
Log.i(TAG, "showTime ${SP.time}")
|
|
||||||
if (SP.time) {
|
if (SP.time) {
|
||||||
timeFragment.show()
|
showFragment(timeFragment)
|
||||||
} else {
|
} else {
|
||||||
timeFragment.hide()
|
hideFragment(timeFragment)
|
||||||
}
|
}
|
||||||
mainFragment.changeStyle()
|
}
|
||||||
|
|
||||||
|
private fun showFragment(fragment: Fragment) {
|
||||||
|
if (!fragment.isHidden) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
supportFragmentManager.beginTransaction()
|
||||||
|
.show(fragment)
|
||||||
|
.commitNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun hideFragment(fragment: Fragment) {
|
||||||
|
if (fragment.isHidden) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
supportFragmentManager.beginTransaction()
|
||||||
|
.hide(fragment)
|
||||||
|
.commitNow()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onTouchEvent(event: MotionEvent?): Boolean {
|
override fun onTouchEvent(event: MotionEvent?): Boolean {
|
||||||
@@ -312,20 +347,19 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.i(TAG, "settingFragment ${settingFragment.isVisible}")
|
if (settingFragment.isVisible) {
|
||||||
if (!settingFragment.isVisible) {
|
return
|
||||||
settingFragment.show(supportFragmentManager, "setting")
|
|
||||||
settingDelayHide()
|
|
||||||
} else {
|
|
||||||
handler.removeCallbacks(hideSetting)
|
|
||||||
settingFragment.dismiss()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
settingFragment.show(supportFragmentManager, TAG)
|
||||||
|
settingDelayHide()
|
||||||
}
|
}
|
||||||
|
|
||||||
private val hideSetting = Runnable {
|
private val hideSetting = Runnable {
|
||||||
if (settingFragment.isVisible) {
|
if (settingFragment.isVisible) {
|
||||||
settingFragment.dismiss()
|
settingFragment.dismiss()
|
||||||
showTime()
|
showTime()
|
||||||
|
mainFragment.changeMenu()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -390,6 +424,11 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
}, 2000)
|
}, 2000)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun active() {
|
||||||
|
if (settingFragment.isVisible) {
|
||||||
|
settingDelayHide()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun onKey(keyCode: Int): Boolean {
|
fun onKey(keyCode: Int): Boolean {
|
||||||
Log.i(TAG, "keyCode $keyCode")
|
Log.i(TAG, "keyCode $keyCode")
|
||||||
@@ -480,6 +519,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
KeyEvent.KEYCODE_ENTER -> {
|
KeyEvent.KEYCODE_ENTER -> {
|
||||||
|
active()
|
||||||
switchMainFragment()
|
switchMainFragment()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -488,6 +528,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
KeyEvent.KEYCODE_DPAD_UP -> {
|
KeyEvent.KEYCODE_DPAD_UP -> {
|
||||||
|
active()
|
||||||
channelUp()
|
channelUp()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -496,6 +537,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
KeyEvent.KEYCODE_DPAD_DOWN -> {
|
KeyEvent.KEYCODE_DPAD_DOWN -> {
|
||||||
|
active()
|
||||||
channelDown()
|
channelDown()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -504,6 +546,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
KeyEvent.KEYCODE_DPAD_LEFT -> {
|
KeyEvent.KEYCODE_DPAD_LEFT -> {
|
||||||
|
active()
|
||||||
if (mainFragment.isHidden && !settingFragment.isVisible) {
|
if (mainFragment.isHidden && !settingFragment.isVisible) {
|
||||||
switchMainFragment()
|
switchMainFragment()
|
||||||
return true
|
return true
|
||||||
@@ -511,6 +554,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
KeyEvent.KEYCODE_DPAD_RIGHT -> {
|
KeyEvent.KEYCODE_DPAD_RIGHT -> {
|
||||||
|
active()
|
||||||
if (mainFragment.isHidden && !settingFragment.isVisible) {
|
if (mainFragment.isHidden && !settingFragment.isVisible) {
|
||||||
showSetting()
|
showSetting()
|
||||||
return true
|
return true
|
||||||
@@ -539,6 +583,12 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
|
|||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
Log.i(TAG, "onResume")
|
Log.i(TAG, "onResume")
|
||||||
super.onResume()
|
super.onResume()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResumeFragments() {
|
||||||
|
super.onResumeFragments()
|
||||||
|
mainFragment.changeMenu()
|
||||||
|
|
||||||
if (!mainFragment.isHidden) {
|
if (!mainFragment.isHidden) {
|
||||||
handler.postDelayed(hideMain, delayHideMain)
|
handler.postDelayed(hideMain, delayHideMain)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package com.lizongying.mytv
|
package com.lizongying.mytv
|
||||||
|
|
||||||
import android.content.res.Resources
|
|
||||||
import android.graphics.Color
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
@@ -162,8 +160,10 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
|
|||||||
if (tvViewModel.errInfo.value == "") {
|
if (tvViewModel.errInfo.value == "") {
|
||||||
(activity as? MainActivity)?.showPlayerFragment()
|
(activity as? MainActivity)?.showPlayerFragment()
|
||||||
(activity as? MainActivity)?.hideErrorFragment()
|
(activity as? MainActivity)?.hideErrorFragment()
|
||||||
|
(activity as? MainActivity)?.hideLoadingFragment()
|
||||||
} else {
|
} else {
|
||||||
(activity as? MainActivity)?.hidePlayerFragment()
|
(activity as? MainActivity)?.hidePlayerFragment()
|
||||||
|
(activity as? MainActivity)?.hideLoadingFragment()
|
||||||
(activity as? MainActivity)?.showErrorFragment(tvViewModel.errInfo.value.toString())
|
(activity as? MainActivity)?.showErrorFragment(tvViewModel.errInfo.value.toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,11 +205,11 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(activity as MainActivity).fragmentReady("MainFragment")
|
(activity as MainActivity).fragmentReady(TAG)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun changeStyle() {
|
fun changeMenu() {
|
||||||
if (SP.grid) {
|
if (SP.grid) {
|
||||||
for (i in rowList) {
|
for (i in rowList) {
|
||||||
if (i is RecyclerView) {
|
if (i is RecyclerView) {
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ class PlayerFragment : Fragment(), SurfaceHolder.Callback {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
(activity as MainActivity).fragmentReady("PlayerFragment")
|
(activity as MainActivity).fragmentReady(TAG)
|
||||||
return _binding!!.root
|
return _binding!!.root
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ class PlayerFragment : Fragment(), SurfaceHolder.Callback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "PlaybackVideoFragment"
|
private const val TAG = "PlayerFragment"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun surfaceCreated(holder: SurfaceHolder) {
|
override fun surfaceCreated(holder: SurfaceHolder) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.lizongying.mytv
|
package com.lizongying.mytv
|
||||||
|
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@@ -23,6 +24,11 @@ class SettingFragment : DialogFragment() {
|
|||||||
dialog?.window?.apply {
|
dialog?.window?.apply {
|
||||||
addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||||
decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
|
attributes.layoutInDisplayCutoutMode =
|
||||||
|
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
|
||||||
|
setAttributes(attributes)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.lizongying.mytv
|
package com.lizongying.mytv
|
||||||
|
|
||||||
import android.content.res.Resources
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
@@ -36,27 +35,32 @@ class TimeFragment : Fragment() {
|
|||||||
binding.time.layoutParams = layoutParams
|
binding.time.layoutParams = layoutParams
|
||||||
|
|
||||||
binding.content.textSize = application.px2PxFont(binding.content.textSize)
|
binding.content.textSize = application.px2PxFont(binding.content.textSize)
|
||||||
|
binding.channel.textSize = application.px2PxFont(binding.channel.textSize)
|
||||||
|
|
||||||
binding.main.layoutParams.width = application.shouldWidthPx()
|
binding.main.layoutParams.width = application.shouldWidthPx()
|
||||||
binding.main.layoutParams.height = application.shouldHeightPx()
|
binding.main.layoutParams.height = application.shouldHeightPx()
|
||||||
|
|
||||||
(activity as MainActivity).fragmentReady("TimeFragment")
|
if (SP.time) {
|
||||||
|
handler.removeCallbacks(showRunnable)
|
||||||
|
handler.postDelayed(showRunnable, 0)
|
||||||
|
} else {
|
||||||
|
handler.removeCallbacks(showRunnable)
|
||||||
|
}
|
||||||
|
|
||||||
|
(activity as MainActivity).fragmentReady(TAG)
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onHiddenChanged(hidden: Boolean) {
|
||||||
super.onResume()
|
super.onHiddenChanged(hidden)
|
||||||
if (view?.visibility == View.VISIBLE) {
|
if (!hidden) {
|
||||||
handler.removeCallbacks(showRunnable)
|
handler.removeCallbacks(showRunnable)
|
||||||
handler.postDelayed(showRunnable, 0)
|
handler.postDelayed(showRunnable, 0)
|
||||||
|
} else {
|
||||||
|
handler.removeCallbacks(showRunnable)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
|
||||||
super.onPause()
|
|
||||||
handler.removeCallbacks(showRunnable)
|
|
||||||
}
|
|
||||||
|
|
||||||
private val showRunnable: Runnable = Runnable {
|
private val showRunnable: Runnable = Runnable {
|
||||||
run {
|
run {
|
||||||
if (_binding == null) {
|
if (_binding == null) {
|
||||||
@@ -67,17 +71,6 @@ class TimeFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun show() {
|
|
||||||
view?.visibility = View.VISIBLE
|
|
||||||
handler.removeCallbacks(showRunnable)
|
|
||||||
handler.postDelayed(showRunnable, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun hide() {
|
|
||||||
view?.visibility = View.GONE
|
|
||||||
handler.removeCallbacks(showRunnable)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
handler.removeCallbacks(showRunnable)
|
handler.removeCallbacks(showRunnable)
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
|
|||||||
@@ -66,6 +66,10 @@ class TVViewModel(private var tv: TV) : ViewModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun changed(from: String) {
|
fun changed(from: String) {
|
||||||
|
retryTimes = 0
|
||||||
|
authYSPRetryTimes = 0
|
||||||
|
tokenYSPRetryTimes = 0
|
||||||
|
tokenFHRetryTimes = 0
|
||||||
_change.value = from
|
_change.value = from
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,9 @@ object Request {
|
|||||||
if (!tvModel.getTV().mustToken) {
|
if (!tvModel.getTV().mustToken) {
|
||||||
fetchAuth(tvModel, cookie)
|
fetchAuth(tvModel, cookie)
|
||||||
} else {
|
} else {
|
||||||
// TODO
|
val err = "错误"
|
||||||
|
Log.e(TAG, "$title $err")
|
||||||
|
tvModel.setErrInfo(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -144,7 +146,9 @@ object Request {
|
|||||||
if (!tvModel.getTV().mustToken) {
|
if (!tvModel.getTV().mustToken) {
|
||||||
fetchAuth(tvModel, cookie)
|
fetchAuth(tvModel, cookie)
|
||||||
} else {
|
} else {
|
||||||
// TODO
|
val err = "错误"
|
||||||
|
Log.e(TAG, "$title $err")
|
||||||
|
tvModel.setErrInfo(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -171,7 +175,9 @@ object Request {
|
|||||||
if (!tvModel.getTV().mustToken) {
|
if (!tvModel.getTV().mustToken) {
|
||||||
fetchAuth(tvModel, cookie)
|
fetchAuth(tvModel, cookie)
|
||||||
} else {
|
} else {
|
||||||
// TODO
|
val err = "错误"
|
||||||
|
Log.e(TAG, "$title $err")
|
||||||
|
tvModel.setErrInfo(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -241,19 +247,30 @@ object Request {
|
|||||||
if (needToken && tvModel.tokenYSPRetryTimes < tvModel.tokenYSPRetryMaxTimes) {
|
if (needToken && tvModel.tokenYSPRetryTimes < tvModel.tokenYSPRetryMaxTimes) {
|
||||||
tvModel.tokenYSPRetryTimes++
|
tvModel.tokenYSPRetryTimes++
|
||||||
tvModel.needGetToken = true
|
tvModel.needGetToken = true
|
||||||
fetchVideo(tvModel)
|
if (needAuth) {
|
||||||
// fetchAuth(tvModel)
|
fetchAuth(tvModel)
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!tvModel.getTV().mustToken) {
|
if (!tvModel.getTV().mustToken) {
|
||||||
fetchVideo(tvModel, cookie)
|
if (needAuth) {
|
||||||
// fetchAuth(tvModel, cookie)
|
fetchAuth(tvModel, cookie)
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel, cookie)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// TODO
|
val err = "错误"
|
||||||
|
Log.e(TAG, "$title $err")
|
||||||
|
tvModel.setErrInfo(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fetchVideo(tvModel, cookie)
|
if (needAuth) {
|
||||||
// fetchAuth(tvModel, cookie)
|
fetchAuth(tvModel, cookie)
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel, cookie)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
val err = "结果错误"
|
val err = "结果错误"
|
||||||
@@ -274,19 +291,30 @@ object Request {
|
|||||||
if (needToken && tvModel.tokenYSPRetryTimes < tvModel.tokenYSPRetryMaxTimes) {
|
if (needToken && tvModel.tokenYSPRetryTimes < tvModel.tokenYSPRetryMaxTimes) {
|
||||||
tvModel.tokenYSPRetryTimes++
|
tvModel.tokenYSPRetryTimes++
|
||||||
tvModel.needGetToken = true
|
tvModel.needGetToken = true
|
||||||
fetchVideo(tvModel)
|
if (needAuth) {
|
||||||
// fetchAuth(tvModel)
|
fetchAuth(tvModel)
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!tvModel.getTV().mustToken) {
|
if (!tvModel.getTV().mustToken) {
|
||||||
fetchVideo(tvModel, cookie)
|
if (needAuth) {
|
||||||
// fetchAuth(tvModel, cookie)
|
fetchAuth(tvModel, cookie)
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel, cookie)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// TODO
|
val err = "错误"
|
||||||
|
Log.e(TAG, "$title $err")
|
||||||
|
tvModel.setErrInfo(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fetchVideo(tvModel, cookie)
|
if (needAuth) {
|
||||||
// fetchAuth(tvModel, cookie)
|
fetchAuth(tvModel, cookie)
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel, cookie)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
val err = "其他错误"
|
val err = "其他错误"
|
||||||
@@ -303,19 +331,30 @@ object Request {
|
|||||||
if (needToken && tvModel.tokenYSPRetryTimes < tvModel.tokenYSPRetryMaxTimes) {
|
if (needToken && tvModel.tokenYSPRetryTimes < tvModel.tokenYSPRetryMaxTimes) {
|
||||||
tvModel.tokenYSPRetryTimes++
|
tvModel.tokenYSPRetryTimes++
|
||||||
tvModel.needGetToken = true
|
tvModel.needGetToken = true
|
||||||
fetchVideo(tvModel)
|
if (needAuth) {
|
||||||
// fetchAuth(tvModel)
|
fetchAuth(tvModel, cookie)
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel, cookie)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!tvModel.getTV().mustToken) {
|
if (!tvModel.getTV().mustToken) {
|
||||||
fetchVideo(tvModel, cookie)
|
if (needAuth) {
|
||||||
// fetchAuth(tvModel, cookie)
|
fetchAuth(tvModel, cookie)
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel, cookie)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// TODO
|
val err = "错误"
|
||||||
|
Log.e(TAG, "$title $err")
|
||||||
|
tvModel.setErrInfo(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fetchVideo(tvModel, cookie)
|
if (needAuth) {
|
||||||
// fetchAuth(tvModel, cookie)
|
fetchAuth(tvModel, cookie)
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel, cookie)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
val err = "状态错误"
|
val err = "状态错误"
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
@@ -10,22 +11,34 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
>
|
>
|
||||||
|
|
||||||
<FrameLayout
|
<RelativeLayout
|
||||||
android:id="@+id/channel"
|
android:id="@+id/channel"
|
||||||
android:layout_width="90dp"
|
android:layout_width="90dp"
|
||||||
android:layout_height="60dp"
|
android:layout_height="60dp"
|
||||||
android:layout_gravity="end|top"
|
android:layout_gravity="end|top"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="15dp"
|
||||||
android:layout_marginEnd="170dp">
|
android:layout_marginEnd="170dp"
|
||||||
|
android:gravity="end|bottom" >
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/content"
|
android:id="@+id/content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end|bottom"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:textSize="40sp" />
|
android:textSize="40sp"
|
||||||
</FrameLayout>
|
tools:text="99"
|
||||||
|
android:layout_alignBaseline="@+id/time"/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/time"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end|bottom"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textSize="32sp"
|
||||||
|
tools:text="12:34" />
|
||||||
|
</RelativeLayout>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -40,7 +40,6 @@
|
|||||||
android:id="@+id/check_version"
|
android:id="@+id/check_version"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="10dp"
|
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:text="@string/check_version"
|
android:text="@string/check_version"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
@@ -10,23 +11,35 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
>
|
>
|
||||||
|
|
||||||
<FrameLayout
|
<RelativeLayout
|
||||||
android:id="@+id/time"
|
android:id="@+id/time"
|
||||||
android:layout_width="100dp"
|
android:layout_width="120dp"
|
||||||
android:layout_height="40dp"
|
android:layout_height="60dp"
|
||||||
android:layout_gravity="end|top"
|
android:layout_gravity="end|top"
|
||||||
android:layout_marginTop="25dp"
|
android:layout_marginTop="15dp"
|
||||||
android:layout_marginEnd="50dp">
|
android:layout_marginEnd="50dp"
|
||||||
|
android:gravity="end|bottom" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/channel"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="end|bottom"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textSize="40sp"
|
||||||
|
tools:text="99"
|
||||||
|
android:layout_alignBaseline="@+id/content"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/content"
|
android:id="@+id/content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end|bottom"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:textSize="32sp" />
|
android:textSize="32sp"
|
||||||
</FrameLayout>
|
tools:text="12:34" />
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -6,5 +6,5 @@
|
|||||||
<string name="title_boot_startup">开机自启</string>
|
<string name="title_boot_startup">开机自启</string>
|
||||||
<string name="title_grid">频道列表采用网格样式</string>
|
<string name="title_grid">频道列表采用网格样式</string>
|
||||||
<string name="title_time">显示时间</string>
|
<string name="title_time">显示时间</string>
|
||||||
<string name="exit">退出</string>
|
<string name="exit">退出应用</string>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user