From b4a2bf341093f3059727f5a6baf53fd1c5a1a331 Mon Sep 17 00:00:00 2001 From: Lindong Date: Tue, 27 Jan 2026 16:45:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Drelease=E6=B7=B7=E6=B7=86?= =?UTF-8?q?=E5=90=8E,=E7=A8=8B=E5=BA=8F=E8=BF=90=E8=A1=8C=E6=97=B6?= =?UTF-8?q?=E5=BA=8F=E5=BC=82=E5=B8=B8=E5=AF=BC=E8=87=B4=E5=B4=A9=E6=BA=83?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../features/version/VersionActivity.kt | 2 +- .../home/fragment/HomeItemFragment.kt | 168 ++++++++++-------- .../vididin/manager/helpers/BaseTaskHelper.kt | 4 + .../vididin/manager/helpers/BoxTaskHelper.kt | 1 + vidiDinKey | Bin 2706 -> 0 bytes 5 files changed, 97 insertions(+), 78 deletions(-) delete mode 100644 vidiDinKey diff --git a/app/src/main/java/com/gamedog/vididin/features/version/VersionActivity.kt b/app/src/main/java/com/gamedog/vididin/features/version/VersionActivity.kt index 2dc4658..e1a2061 100644 --- a/app/src/main/java/com/gamedog/vididin/features/version/VersionActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/features/version/VersionActivity.kt @@ -39,7 +39,7 @@ class VersionActivity : AppViewsActivity(), OnT // For Testing - val shouldShowDebug = true//BuildConfig.DEBUG + val shouldShowDebug = false//BuildConfig.DEBUG llTesting.isVisible = shouldShowDebug if (shouldShowDebug) { butCash.setOnClickListener { diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt index b3ea320..af24bc7 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/home/fragment/HomeItemFragment.kt @@ -30,6 +30,7 @@ import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.YouTubePlayerCallback import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.utils.loadOrCueVideo +import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.options.IFramePlayerOptions import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView import com.viddin.videos.free.databinding.VididinappFeatureHomeItemLayoutBinding as ViewBinding @@ -177,83 +178,88 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { layoutParam.gravity = Gravity.BOTTOM binding!!.playerContainer.addView(mPlayerView, layoutParam) lifecycle.addObserver(mPlayerView!!) - mPlayerView?.enableAutomaticInitialization = true + mPlayerView?.enableAutomaticInitialization = false + + val iFramePlayerOptions = IFramePlayerOptions.Builder(requireActivity()) + .controls(0) + .rel(0) + .ivLoadPolicy(3) + .ccLoadPolicy(1) + .build() + + mPlayerView!!.initialize(object : AbstractYouTubePlayerListener() { + override fun onReady(youTubePlayer: YouTubePlayer) { + mPlayer = youTubePlayer + val playerUiController = MyPlayerControlView(mPlayerView!!) + mPlayerView!!.setCustomPlayerUi(playerUiController.rootView) + + if (mPendingPlay) { + mPlayer?.loadVideo(mVideoData!!.id, mCurPlayedSecond) + } else if (mIsPreloading) { + mPlayer?.mute() + mPlayer?.loadVideo(mVideoData!!.id, mCurPlayedSecond) + } else { + mPlayer?.cueVideo(mVideoData!!.id, mCurPlayedSecond) + } + } + + override fun onCurrentSecond(youTubePlayer: YouTubePlayer, second: Float) { + super.onCurrentSecond(youTubePlayer, second) + mCurPlayedSecond = second + updateProgressbar() + } + + override fun onVideoDuration(youTubePlayer: YouTubePlayer, duration: Float) { + super.onVideoDuration(youTubePlayer, duration) + mTotalDuration = duration + mTickerTimer.setVideoInfo(mVideoData!!.id, (1000L * mTotalDuration).toLong()) + } + + override fun onStateChange( + youTubePlayer: YouTubePlayer, + state: PlayerConstants.PlayerState + ) { + when (state) { + PlayerConstants.PlayerState.PLAYING -> { + if (mIsPreloading) { + mPlayer?.pause() + } else { + togglePlayingState(true) + } + } + PlayerConstants.PlayerState.PAUSED -> { + if (mIsPreloading) { + // Do nothing or ensure mask is visible? + // togglePlayingState(false) sets mask visible. + togglePlayingState(false) + } else { + togglePlayingState(false) + } + } + PlayerConstants.PlayerState.UNKNOWN -> { + togglePlayingState(false) + } + PlayerConstants.PlayerState.UNSTARTED -> { + togglePlayingState(false) + } + PlayerConstants.PlayerState.ENDED -> { + togglePlayingState(false) + if (!mIsPreloading) { + mCurPlayedSecond = 0f + mPlayer?.loadVideo(mVideoData!!.id, 0f) + } + } + PlayerConstants.PlayerState.BUFFERING -> { + //binding?.circlePb?.isVisible = true + //showLoading(true) + } + PlayerConstants.PlayerState.VIDEO_CUED -> { + togglePlayingState(false) + } + } + } + }, true, iFramePlayerOptions) } - -// val playerUiController = MyPlayerControlView(mPlayerView!!) -// mPlayerView!!.setCustomPlayerUi(playerUiController.rootView) - mPlayerView!!.removeViews(1, mPlayerView!!.childCount - 1) - - mPlayerView!!.addYouTubePlayerListener(object : AbstractYouTubePlayerListener() { - override fun onReady(youTubePlayer: YouTubePlayer) { - mPlayer = youTubePlayer - - if (mPendingPlay) { - mPlayer?.loadVideo(mVideoData!!.id, mCurPlayedSecond) - } else if (mIsPreloading) { - mPlayer?.mute() - mPlayer?.loadVideo(mVideoData!!.id, mCurPlayedSecond) - } else { - mPlayer?.cueVideo(mVideoData!!.id, mCurPlayedSecond) - } - } - - override fun onCurrentSecond(youTubePlayer: YouTubePlayer, second: Float) { - super.onCurrentSecond(youTubePlayer, second) - mCurPlayedSecond = second - updateProgressbar() - } - - override fun onVideoDuration(youTubePlayer: YouTubePlayer, duration: Float) { - super.onVideoDuration(youTubePlayer, duration) - mTotalDuration = duration - mTickerTimer.setVideoInfo(mVideoData!!.id, (1000L * mTotalDuration).toLong()) - } - - override fun onStateChange( - youTubePlayer: YouTubePlayer, - state: PlayerConstants.PlayerState - ) { - when (state) { - PlayerConstants.PlayerState.PLAYING -> { - if (mIsPreloading) { - mPlayer?.pause() - } else { - togglePlayingState(true) - } - } - PlayerConstants.PlayerState.PAUSED -> { - if (mIsPreloading) { - // Do nothing or ensure mask is visible? - // togglePlayingState(false) sets mask visible. - togglePlayingState(false) - } else { - togglePlayingState(false) - } - } - PlayerConstants.PlayerState.UNKNOWN -> { - togglePlayingState(false) - } - PlayerConstants.PlayerState.UNSTARTED -> { - togglePlayingState(false) - } - PlayerConstants.PlayerState.ENDED -> { - togglePlayingState(false) - if (!mIsPreloading) { - mCurPlayedSecond = 0f - mPlayer?.loadVideo(mVideoData!!.id, 0f) - } - } - PlayerConstants.PlayerState.BUFFERING -> { - //binding?.circlePb?.isVisible = true - //showLoading(true) - } - PlayerConstants.PlayerState.VIDEO_CUED -> { - togglePlayingState(false) - } - } - } - }) } private fun sendPlayStopStatistic(isPlayStart: Boolean) { @@ -285,7 +291,15 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment() { // binding?.circlePb?.isVisible = false // } - binding?.ivMask?.isVisible = !mIsPlaying + if (mIsPlaying) { + // Delay hiding mask to prevent seeing loading controls + binding?.ivMask?.postDelayed({ + if (mIsPlaying) binding?.ivMask?.isVisible = false + }, 500) + } else { + binding?.ivMask?.isVisible = true + } + // Ensure playerContainer is visible when playing OR preloading (masked) binding?.playerContainer?.isVisible = mIsPlaying || mIsPreloading diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt index 6885195..6ac100f 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseTaskHelper.kt @@ -46,6 +46,10 @@ abstract class BaseTaskHelper { return mStateBean } + fun isReady(): Boolean { + return this::mStateBean.isInitialized + } + fun release() { NotifyMan.instance().unregister(mEventCallback) } diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt index 957824b..4a77a36 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt @@ -209,6 +209,7 @@ class BoxTaskHelper: BaseTaskHelper() { } fun getCurrentBoxStartTimeMs(): Long { + if (!isReady()) return 0L return mStateBean.boxList[mStateBean.currentBoxIndex].boxStartMs } diff --git a/vidiDinKey b/vidiDinKey deleted file mode 100644 index 5da3e34015421ab8ec393e29f8dbc122ab320e92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2706 zcma)8X*3j!8lD+rZOS&;%09?eW1m7vwz3b&pdnk9QX?5_7!1aieb-_8%p zOCF5llKD+b!f~v$|B_grf^n?nzv+_SC}KPIpA>`(2qNNG^?s8&aL+#p*5hy#{O{eY z5V#^3>K|BHJ6M<#ip;k-BUYCYFO%Dw1p>+OfPfNk2ph-0H-b1>0dP?^P8Ylh(1QgG zQ~>iVO756;S>$fd56kzXO2KR|x7>q_g%+6Wh*^&K}7qd)2p-BsT;kMBIPudd9s2 zztRtXemXX`@vmp@zkU(IXc(|MFMar!+`yJ6(T&rL$Ms zGA+n=-}x@2r3?~fKRR3hF!Ey(g)CogaBq+}Hz24U#B}_lj#aU={r+uCW+Bnr(&|`` zrFTgxmUN2tFqo|Sq_VE%o-NK!eE?S#4)g^No}z+>U{_kUoHflW!wpeklSvf}gD_(> zyTqzEPue0L8)`0!kDN2oTB?S*`X|ZGeWtFpw$m0BzqM`hRvK9gP*XQ-lC;zZ-PU_Oy%liKkl@DuH`_?_yE1T%U5r4OIt_^@$qh zMcZlfZ6A=rBu#auuQP+wg>lKQhspEn0|Ddwl<8CvA} zdEUFn;4&wbTh~JlOl6^I&pR}e`K!t=h{Di(SYxwBqHb$GCLt#Op zo3&iaA*s8#s4oP}gGYn>7IxwXBwO0IAnvrHn|PND{^#M}eJZ<}oY091jh^MvU5Z1^ zMcU#^t?Zid3U^ee3~sJPoRM8#3yKS`yve6;FXTwOaxlsND^#Wo~7{Q0aab%t=J5=O;K9Z*YSk#%Oosa`N~L-R=hZpf8EmE=Wt81U;Wr7dVW+X z{VJV1Pk*8V!q#R6cI1R?{JK7}P57jg*_rKO0HA{8s9ydsZ7>69Dmb`C;F#Y>vD8}hOQl2%UQKffanZJ-(JU7Wc zy6qS)#EBA?%%l3zzS`1Xgx7A@5mQn&ON;Vibcsv+l+)dCIUtOH^0^fdZQ9{{gi`UB z1s8yK7haGZ9y;8POdQJF#Avsiqcm5GBs~UA-6rmGzF0V#d}#<}h++yk`s*{p16gan z3!1gRZ#dYA{vb`F*?c$~KSlevOHfk`{Wb>tT)?Cjw(`(?#yruIryB-!nlG|>SyQS9 zS)te4KvE}@0}7{+q#;@+rw~@e!B&+CiZv9ro^qt&@ z_bS)mGJo2W6RIL4CIAQocmv%313!Q=z!%^F2!>1kZ9Ay~1@qZ@-}R7C(b7~$sKZs% z)#2yW;5hKDKPGlIA`XoFO<90|fZxOTZw2_j3Y%bKU$GYi3zk@-rk!hXC&*h^T__X@NF?a6fSroBoOAk8yge?Xz?LpZIPa3%0WV&VM;2|sLb%Lw|q8^>2 ztL^r^ImAEU4q*6O`-laCSb6g=)OVK3hyLZ_u2NA zkwQHOx*63gHlGC(zI=&8R);?g!av0@_*I;bWe@Ww8mi9JH3~Q(Xn1`TJh89zl zL^NN3YM@2;v1L1Zjg`i_opiu0Yiv69 z?N7d+&^ZL&_!5G~=UdUbtSz4)8PxQ&j#S*O|I$uF@zs8qBdWvkNxPv`Y=s6)U0%V= z8wC153FV}2HGL1QWy-RpiOz$)e&1+&$N@Q8$l_gMU6a89`}B`Fk8Jj(Z-T&~7+ux% z@hZoLlT?ZlOKoUcS@8Sqt-Gj}L6#WHW>9qLL;QFVr+(s2jQ0Ml?rkfc!Prm0_kzLG z>@L%-Hw$u7ygq(XI|fa5rWU@44;-tN57!B%$W<48cg^<0Z%Qaj)-9(z{PiVX52`e5 zCebyPA#~zIbcge*5nDz6P~$Devb=_op@DF>i0d?|D)toh?mg*#yC!ib*~>G|=XvGI zTYABctL2q2<#=cfU zk~$8SOGGZJV#^3`Gda*UzS5-;+f1a&9f?OC&T-?0DYm)aS$uXN{MC=@T*=xT8r4T5 z+amx50S7mStH6){`O`o^RsdMy!Nj!9OEd+RY!vZDp#D1k)x=I>R%ciP?xxsic+#i0 eVCX#i$#xlOMIRI5`ql1&JHGmLfXaVW%0B@QM(&mX