fix some video playback issues on Android 7
This commit is contained in:
parent
012e091349
commit
baed126550
2 changed files with 19 additions and 16 deletions
|
@ -742,9 +742,7 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
|
||||||
|
|
||||||
private fun getCurrentFile() = File(getCurrentPath())
|
private fun getCurrentFile() = File(getCurrentPath())
|
||||||
|
|
||||||
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
|
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPageSelected(position: Int) {
|
override fun onPageSelected(position: Int) {
|
||||||
if (view_pager.offscreenPageLimit == 1) {
|
if (view_pager.offscreenPageLimit == 1) {
|
||||||
|
|
|
@ -20,7 +20,6 @@ import com.simplemobiletools.gallery.extensions.*
|
||||||
import com.simplemobiletools.gallery.helpers.MEDIUM
|
import com.simplemobiletools.gallery.helpers.MEDIUM
|
||||||
import com.simplemobiletools.gallery.models.Medium
|
import com.simplemobiletools.gallery.models.Medium
|
||||||
import kotlinx.android.synthetic.main.pager_video_item.view.*
|
import kotlinx.android.synthetic.main.pager_video_item.view.*
|
||||||
import java.io.IOException
|
|
||||||
|
|
||||||
class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSeekBarChangeListener {
|
class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSeekBarChangeListener {
|
||||||
private val CLICK_MAX_DURATION = 150
|
private val CLICK_MAX_DURATION = 150
|
||||||
|
@ -40,6 +39,7 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
private var mIsFragmentVisible = false
|
private var mIsFragmentVisible = false
|
||||||
private var mPlayOnPrepare = false
|
private var mPlayOnPrepare = false
|
||||||
private var mStoredShowExtendedDetails = false
|
private var mStoredShowExtendedDetails = false
|
||||||
|
private var wasInit = false
|
||||||
private var mStoredExtendedDetails = 0
|
private var mStoredExtendedDetails = 0
|
||||||
private var mCurrTime = 0
|
private var mCurrTime = 0
|
||||||
private var mDuration = 0
|
private var mDuration = 0
|
||||||
|
@ -71,6 +71,7 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
|
|
||||||
mIsFullscreen = activity.window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_FULLSCREEN == View.SYSTEM_UI_FLAG_FULLSCREEN
|
mIsFullscreen = activity.window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_FULLSCREEN == View.SYSTEM_UI_FLAG_FULLSCREEN
|
||||||
checkFullscreen()
|
checkFullscreen()
|
||||||
|
wasInit = true
|
||||||
|
|
||||||
return mView
|
return mView
|
||||||
}
|
}
|
||||||
|
@ -124,21 +125,21 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
|
|
||||||
initTimeHolder()
|
initTimeHolder()
|
||||||
checkExtendedDetails()
|
checkExtendedDetails()
|
||||||
|
initMediaPlayer()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setMenuVisibility(menuVisible: Boolean) {
|
override fun setMenuVisibility(menuVisible: Boolean) {
|
||||||
super.setMenuVisibility(menuVisible)
|
super.setMenuVisibility(menuVisible)
|
||||||
mIsFragmentVisible = menuVisible
|
if (mIsFragmentVisible && !menuVisible) {
|
||||||
if (menuVisible) {
|
pauseVideo()
|
||||||
if (mSurfaceView != null && mSurfaceHolder!!.surface.isValid) {
|
releaseMediaPlayer()
|
||||||
initMediaPlayer()
|
|
||||||
}
|
}
|
||||||
|
mIsFragmentVisible = menuVisible
|
||||||
|
if (menuVisible && wasInit) {
|
||||||
|
initMediaPlayer()
|
||||||
if (context?.config?.autoplayVideos == true) {
|
if (context?.config?.autoplayVideos == true) {
|
||||||
playVideo()
|
playVideo()
|
||||||
}
|
}
|
||||||
} else if (mIsPlaying) {
|
|
||||||
pauseVideo()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -351,6 +352,8 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
if (activity == null || !isAdded)
|
if (activity == null || !isAdded)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
initMediaPlayer()
|
||||||
|
|
||||||
mIsPlaying = !mIsPlaying
|
mIsPlaying = !mIsPlaying
|
||||||
if (mIsPlaying) {
|
if (mIsPlaying) {
|
||||||
playVideo()
|
playVideo()
|
||||||
|
@ -378,8 +381,9 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initMediaPlayer() {
|
private fun initMediaPlayer() {
|
||||||
if (mMediaPlayer != null)
|
if (mMediaPlayer != null || !mIsFragmentVisible) {
|
||||||
return
|
return
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
mMediaPlayer = MediaPlayer().apply {
|
mMediaPlayer = MediaPlayer().apply {
|
||||||
|
@ -389,9 +393,9 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
setOnVideoSizeChangedListener({ mediaPlayer, width, height -> setVideoSize() })
|
setOnVideoSizeChangedListener({ mediaPlayer, width, height -> setVideoSize() })
|
||||||
setOnPreparedListener { videoPrepared(it) }
|
setOnPreparedListener { videoPrepared(it) }
|
||||||
setAudioStreamType(AudioManager.STREAM_MUSIC)
|
setAudioStreamType(AudioManager.STREAM_MUSIC)
|
||||||
prepareAsync()
|
prepare()
|
||||||
}
|
}
|
||||||
} catch (e: IOException) {
|
} catch (e: Exception) {
|
||||||
releaseMediaPlayer()
|
releaseMediaPlayer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -441,7 +445,9 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun surfaceCreated(holder: SurfaceHolder) {
|
override fun surfaceCreated(holder: SurfaceHolder) {
|
||||||
|
mSurfaceHolder = holder
|
||||||
|
if (mIsFragmentVisible)
|
||||||
|
initMediaPlayer()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {
|
override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {
|
||||||
|
@ -462,7 +468,6 @@ class VideoFragment : ViewPagerFragment(), SurfaceHolder.Callback, SeekBar.OnSee
|
||||||
|
|
||||||
initMediaPlayer()
|
initMediaPlayer()
|
||||||
if (mMediaPlayer == null) {
|
if (mMediaPlayer == null) {
|
||||||
activity.toast(R.string.unknown_error_occurred)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue