在surfaceDestroyed裡面呼叫pause

This commit is contained in:
Raymond Yang 2023-03-08 13:37:26 +08:00
parent 975e2eba79
commit c9ca4156aa
5 changed files with 9 additions and 28 deletions

View File

@ -68,26 +68,6 @@ class MainActivity : AppCompatActivity() {
offscreenPageLimit = 100 offscreenPageLimit = 100
setPageTransformer(null) setPageTransformer(null)
registerOnPageChangeCallback(object: ViewPager2.OnPageChangeCallback() { registerOnPageChangeCallback(object: ViewPager2.OnPageChangeCallback() {
private var oldPage = 0
override fun onPageScrollStateChanged(state: Int) {
super.onPageScrollStateChanged(state)
/*if (state == ViewPager2.SCROLL_STATE_DRAGGING) {
oldPage = currentPage
splitVideoViewAdapter.stop(currentPage)
}
if (state == ViewPager2.SCROLL_STATE_IDLE && currentPage == oldPage) {
splitVideoViewAdapter.play(currentPage)
}*/
//Log.d("Split", "oldPage: $oldPage, currentPage: $currentPage")
}
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels)
//Log.d("Split", "onPageScrolled: $currentPage")
}
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
super.onPageSelected(position) super.onPageSelected(position)
currentPage = position currentPage = position
@ -133,7 +113,7 @@ class MainActivity : AppCompatActivity() {
private fun reloadVideoViews(list: List<List<Device>>?) = MainScope().launch { private fun reloadVideoViews(list: List<List<Device>>?) = MainScope().launch {
binding.viewPager.setCurrentItem(0, false) binding.viewPager.setCurrentItem(0, false)
for (i in 0 until splitVideoViewAdapter.itemCount) { for (i in 0 until splitVideoViewAdapter.itemCount) {
splitVideoViewAdapter.stop(i) splitVideoViewAdapter.pause(i)
} }
//delay(oldSplitMode * Constants.CONF_DELAY_BASE_MILLIS) //delay(oldSplitMode * Constants.CONF_DELAY_BASE_MILLIS)
delay((oldSplitMode * 100) + Constants.CONF_DELAY_BASE_MILLIS) delay((oldSplitMode * 100) + Constants.CONF_DELAY_BASE_MILLIS)

View File

@ -206,7 +206,7 @@ class SplitViewFragment : Fragment() {
for (index in data.indices) { for (index in data.indices) {
videoViews[index].stopRetryCount() videoViews[index].stopRetryCount()
if (!videoViews[index].isPlaying || videoViews[index].isLoading) continue if (!videoViews[index].isPlaying || videoViews[index].isLoading) continue
videoViews[index].stop() videoViews[index].pause()
//delay(300) //delay(300)
} }
}.start() }.start()

View File

@ -109,11 +109,11 @@ class VideoView : ConstraintLayout, GstCallback {
gstLibrary.play() gstLibrary.play()
} }
fun stop() { fun pause() {
if (data == null) return if (data == null) return
isPlaying = false isPlaying = false
if (this::gstLibrary.isInitialized) { if (this::gstLibrary.isInitialized) {
gstLibrary.stop() gstLibrary.pause()
} }
} }

View File

@ -41,11 +41,11 @@ class VideoViewAdapter(
notifyDataSetChanged() notifyDataSetChanged()
} }
fun stop(index: Int) { fun pause(index: Int) {
stop(fragments[index]) pause(fragments[index])
} }
private fun stop(fragment: SplitViewFragment) { private fun pause(fragment: SplitViewFragment) {
fragment.stopAll() fragment.stopAll()
} }

View File

@ -31,7 +31,7 @@ class GstLibrary(context: Context) : Closeable, SurfaceHolder.Callback {
nativePlay() nativePlay()
} }
fun stop() { fun pause() {
if (!isInit) return if (!isInit) return
nativePause() nativePause()
} }
@ -139,6 +139,7 @@ class GstLibrary(context: Context) : Closeable, SurfaceHolder.Callback {
override fun surfaceDestroyed(holder: SurfaceHolder) { override fun surfaceDestroyed(holder: SurfaceHolder) {
Log.d("$TAG+$tag", "Surface destroyed") Log.d("$TAG+$tag", "Surface destroyed")
pause()
releaseSurface() releaseSurface()
isInit = false isInit = false
} }