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 5da3e34..0000000 Binary files a/vidiDinKey and /dev/null differ