diff --git a/HISTORY.md b/HISTORY.md index 3d36febb..d6f18f38 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,10 @@ ## 更新日志 +### v1.9.0(通用) + +* 减少视频播放失败情况 +* 全面屏手机居中显示 + ### v1.8.8(通用) * 样式优化 diff --git a/app/src/main/java/com/lizongying/mytv/ChannelFragment.kt b/app/src/main/java/com/lizongying/mytv/ChannelFragment.kt index 0a8fb7ac..5bec0bea 100644 --- a/app/src/main/java/com/lizongying/mytv/ChannelFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/ChannelFragment.kt @@ -43,7 +43,7 @@ class ChannelFragment : Fragment() { binding.main.layoutParams.width = application.shouldWidthPx() binding.main.layoutParams.height = application.shouldHeightPx() - (activity as MainActivity).fragmentReady("ChannelFragment") + (activity as MainActivity).fragmentReady(TAG) return binding.root } diff --git a/app/src/main/java/com/lizongying/mytv/InfoFragment.kt b/app/src/main/java/com/lizongying/mytv/InfoFragment.kt index 5d3c9527..f3698256 100644 --- a/app/src/main/java/com/lizongying/mytv/InfoFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/InfoFragment.kt @@ -59,7 +59,7 @@ class InfoFragment : Fragment() { _binding!!.root.visibility = View.GONE - (activity as MainActivity).fragmentReady("InfoFragment") + (activity as MainActivity).fragmentReady(TAG) return binding.root } diff --git a/app/src/main/java/com/lizongying/mytv/MainActivity.kt b/app/src/main/java/com/lizongying/mytv/MainActivity.kt index 1f433a32..55cb15e3 100644 --- a/app/src/main/java/com/lizongying/mytv/MainActivity.kt +++ b/app/src/main/java/com/lizongying/mytv/MainActivity.kt @@ -17,6 +17,7 @@ import android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN import android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION import android.view.WindowManager import android.widget.Toast +import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.lifecycle.lifecycleScope import com.lizongying.mytv.models.TVViewModel @@ -65,6 +66,13 @@ class MainActivity : FragmentActivity(), Request.RequestListener { 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_FULLSCREEN) window.decorView.systemUiVisibility = @@ -89,28 +97,32 @@ class MainActivity : FragmentActivity(), Request.RequestListener { .hide(mainFragment) .hide(errorFragment) // .hide(loadingFragment) + .hide(timeFragment) .commit() } gestureDetector = GestureDetector(this, GestureListener()) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - val connectivityManager = - getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - connectivityManager.registerDefaultNetworkCallback(object : - ConnectivityManager.NetworkCallback() { - override fun onAvailable(network: Network) { - super.onAvailable(network) - Log.i(TAG, "net ${Build.VERSION.SDK_INT}") - if (this@MainActivity.isNetworkConnected) { - Log.i(TAG, "net isNetworkConnected") - ready++ - } - } - }) - } else { - Log.i(TAG, "net ${Build.VERSION.SDK_INT}") - ready++ - } +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { +// val connectivityManager = +// getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager +// connectivityManager.registerDefaultNetworkCallback(object : +// ConnectivityManager.NetworkCallback() { +// override fun onAvailable(network: Network) { +// super.onAvailable(network) +// Log.i(TAG, "net ${Build.VERSION.SDK_INT}") +// if (this@MainActivity.isNetworkConnected) { +// Log.i(TAG, "net isNetworkConnected") +// ready++ +// } +// } +// }) +// } else { +// Log.i(TAG, "net ${Build.VERSION.SDK_INT}") +// ready++ +// } + + showTime() + mainFragment.changeMenu() } fun showInfoFragment(tvViewModel: TVViewModel) { @@ -211,6 +223,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener { handler.removeCallbacks(hideSetting) handler.postDelayed(hideSetting, delayHideSetting) showTime() + mainFragment.changeMenu() } fun settingNeverHide() { @@ -238,20 +251,37 @@ class MainActivity : FragmentActivity(), Request.RequestListener { fun fragmentReady(tag: String) { ready++ Log.i(TAG, "ready $tag $ready ") - if (ready == 8) { + if (ready == 7) { mainFragment.fragmentReady() - showTime() } } private fun showTime() { - Log.i(TAG, "showTime ${SP.time}") if (SP.time) { - timeFragment.show() + showFragment(timeFragment) } else { - timeFragment.hide() + hideFragment(timeFragment) + } + } + + private fun showFragment(fragment: Fragment) { + if (!fragment.isHidden) { + return } - mainFragment.changeStyle() + + 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 { @@ -326,6 +356,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener { if (settingFragment.isVisible) { settingFragment.dismiss() showTime() + mainFragment.changeMenu() } } diff --git a/app/src/main/java/com/lizongying/mytv/MainFragment.kt b/app/src/main/java/com/lizongying/mytv/MainFragment.kt index 4d842514..7c196b6c 100644 --- a/app/src/main/java/com/lizongying/mytv/MainFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/MainFragment.kt @@ -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) { for (i in rowList) { if (i is RecyclerView) { diff --git a/app/src/main/java/com/lizongying/mytv/PlayerFragment.kt b/app/src/main/java/com/lizongying/mytv/PlayerFragment.kt index aba69133..cfb3f882 100644 --- a/app/src/main/java/com/lizongying/mytv/PlayerFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/PlayerFragment.kt @@ -93,7 +93,7 @@ class PlayerFragment : Fragment(), SurfaceHolder.Callback { }) } }) - (activity as MainActivity).fragmentReady("PlayerFragment") + (activity as MainActivity).fragmentReady(TAG) return _binding!!.root } @@ -154,7 +154,7 @@ class PlayerFragment : Fragment(), SurfaceHolder.Callback { } companion object { - private const val TAG = "PlaybackVideoFragment" + private const val TAG = "PlayerFragment" } override fun surfaceCreated(holder: SurfaceHolder) { diff --git a/app/src/main/java/com/lizongying/mytv/TimeFragment.kt b/app/src/main/java/com/lizongying/mytv/TimeFragment.kt index 7feca63d..c92f9e81 100644 --- a/app/src/main/java/com/lizongying/mytv/TimeFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/TimeFragment.kt @@ -40,23 +40,20 @@ class TimeFragment : Fragment() { binding.main.layoutParams.width = application.shouldWidthPx() binding.main.layoutParams.height = application.shouldHeightPx() - (activity as MainActivity).fragmentReady("TimeFragment") + (activity as MainActivity).fragmentReady(TAG) return binding.root } - override fun onResume() { - super.onResume() - if (view?.visibility == View.VISIBLE) { + override fun onHiddenChanged(hidden: Boolean) { + super.onHiddenChanged(hidden) + if (!hidden) { handler.removeCallbacks(showRunnable) handler.postDelayed(showRunnable, 0) + } else { + handler.removeCallbacks(showRunnable) } } - override fun onPause() { - super.onPause() - handler.removeCallbacks(showRunnable) - } - private val showRunnable: Runnable = Runnable { run { if (_binding == null) { @@ -67,17 +64,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() { handler.removeCallbacks(showRunnable) super.onDestroyView() diff --git a/app/src/main/java/com/lizongying/mytv/requests/Request.kt b/app/src/main/java/com/lizongying/mytv/requests/Request.kt index 2cba48ac..e4c5e8a6 100644 --- a/app/src/main/java/com/lizongying/mytv/requests/Request.kt +++ b/app/src/main/java/com/lizongying/mytv/requests/Request.kt @@ -119,7 +119,9 @@ object Request { if (!tvModel.getTV().mustToken) { fetchAuth(tvModel, cookie) } else { -// TODO + val err = "错误" + Log.e(TAG, "$title $err") + tvModel.setErrInfo(err) } } } else { @@ -144,7 +146,9 @@ object Request { if (!tvModel.getTV().mustToken) { fetchAuth(tvModel, cookie) } else { -// TODO + val err = "错误" + Log.e(TAG, "$title $err") + tvModel.setErrInfo(err) } } } else { @@ -171,7 +175,9 @@ object Request { if (!tvModel.getTV().mustToken) { fetchAuth(tvModel, cookie) } else { -// TODO + val err = "错误" + Log.e(TAG, "$title $err") + tvModel.setErrInfo(err) } } } else { @@ -241,19 +247,30 @@ object Request { if (needToken && tvModel.tokenYSPRetryTimes < tvModel.tokenYSPRetryMaxTimes) { tvModel.tokenYSPRetryTimes++ tvModel.needGetToken = true - fetchVideo(tvModel) -// fetchAuth(tvModel) + if (needAuth) { + fetchAuth(tvModel) + } else { + fetchVideo(tvModel) + } } else { if (!tvModel.getTV().mustToken) { - fetchVideo(tvModel, cookie) -// fetchAuth(tvModel, cookie) + if (needAuth) { + fetchAuth(tvModel, cookie) + } else { + fetchVideo(tvModel, cookie) + } } else { -// TODO + val err = "错误" + Log.e(TAG, "$title $err") + tvModel.setErrInfo(err) } } } else { - fetchVideo(tvModel, cookie) -// fetchAuth(tvModel, cookie) + if (needAuth) { + fetchAuth(tvModel, cookie) + } else { + fetchVideo(tvModel, cookie) + } } } else { val err = "结果错误" @@ -274,19 +291,30 @@ object Request { if (needToken && tvModel.tokenYSPRetryTimes < tvModel.tokenYSPRetryMaxTimes) { tvModel.tokenYSPRetryTimes++ tvModel.needGetToken = true - fetchVideo(tvModel) -// fetchAuth(tvModel) + if (needAuth) { + fetchAuth(tvModel) + } else { + fetchVideo(tvModel) + } } else { if (!tvModel.getTV().mustToken) { - fetchVideo(tvModel, cookie) -// fetchAuth(tvModel, cookie) + if (needAuth) { + fetchAuth(tvModel, cookie) + } else { + fetchVideo(tvModel, cookie) + } } else { -// TODO + val err = "错误" + Log.e(TAG, "$title $err") + tvModel.setErrInfo(err) } } } else { - fetchVideo(tvModel, cookie) -// fetchAuth(tvModel, cookie) + if (needAuth) { + fetchAuth(tvModel, cookie) + } else { + fetchVideo(tvModel, cookie) + } } } else { val err = "其他错误" @@ -303,19 +331,30 @@ object Request { if (needToken && tvModel.tokenYSPRetryTimes < tvModel.tokenYSPRetryMaxTimes) { tvModel.tokenYSPRetryTimes++ tvModel.needGetToken = true - fetchVideo(tvModel) -// fetchAuth(tvModel) + if (needAuth) { + fetchAuth(tvModel, cookie) + } else { + fetchVideo(tvModel, cookie) + } } else { if (!tvModel.getTV().mustToken) { - fetchVideo(tvModel, cookie) -// fetchAuth(tvModel, cookie) + if (needAuth) { + fetchAuth(tvModel, cookie) + } else { + fetchVideo(tvModel, cookie) + } } else { -// TODO + val err = "错误" + Log.e(TAG, "$title $err") + tvModel.setErrInfo(err) } } } else { - fetchVideo(tvModel, cookie) -// fetchAuth(tvModel, cookie) + if (needAuth) { + fetchAuth(tvModel, cookie) + } else { + fetchVideo(tvModel, cookie) + } } } else { val err = "状态错误"