mirror of
https://github.com/streamyfin/streamyfin.git
synced 2025-08-20 18:37:18 +02:00
Improve performance of android version
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package expo.modules.vlcplayer
|
package expo.modules.vlcplayer
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
@@ -34,6 +36,15 @@ class VlcPlayerView(context: Context, appContext: AppContext) : ExpoView(context
|
|||||||
private var externalTrack: Map<String, String>? = null
|
private var externalTrack: Map<String, String>? = null
|
||||||
var hasSource: Boolean = false
|
var hasSource: Boolean = false
|
||||||
|
|
||||||
|
private val handler = Handler(Looper.getMainLooper())
|
||||||
|
private val updateInterval = 1000L // 1 second
|
||||||
|
private val updateProgressRunnable = object : Runnable {
|
||||||
|
override fun run() {
|
||||||
|
updateVideoProgress()
|
||||||
|
handler.postDelayed(this, updateInterval)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
setupView()
|
setupView()
|
||||||
}
|
}
|
||||||
@@ -99,15 +110,18 @@ class VlcPlayerView(context: Context, appContext: AppContext) : ExpoView(context
|
|||||||
fun play() {
|
fun play() {
|
||||||
mediaPlayer?.play()
|
mediaPlayer?.play()
|
||||||
isPaused = false
|
isPaused = false
|
||||||
|
handler.post(updateProgressRunnable) // Start updating progress
|
||||||
}
|
}
|
||||||
|
|
||||||
fun pause() {
|
fun pause() {
|
||||||
mediaPlayer?.pause()
|
mediaPlayer?.pause()
|
||||||
isPaused = true
|
isPaused = true
|
||||||
|
handler.removeCallbacks(updateProgressRunnable) // Stop updating progress
|
||||||
}
|
}
|
||||||
|
|
||||||
fun stop() {
|
fun stop() {
|
||||||
mediaPlayer?.stop()
|
mediaPlayer?.stop()
|
||||||
|
handler.removeCallbacks(updateProgressRunnable) // Stop updating progress
|
||||||
}
|
}
|
||||||
|
|
||||||
fun seekTo(time: Int) {
|
fun seekTo(time: Int) {
|
||||||
@@ -172,6 +186,7 @@ class VlcPlayerView(context: Context, appContext: AppContext) : ExpoView(context
|
|||||||
println("onDetachedFromWindow")
|
println("onDetachedFromWindow")
|
||||||
super.onDetachedFromWindow()
|
super.onDetachedFromWindow()
|
||||||
mediaPlayer?.stop()
|
mediaPlayer?.stop()
|
||||||
|
handler.removeCallbacks(updateProgressRunnable) // Stop updating progress
|
||||||
|
|
||||||
media?.release()
|
media?.release()
|
||||||
mediaPlayer?.release()
|
mediaPlayer?.release()
|
||||||
@@ -189,7 +204,9 @@ class VlcPlayerView(context: Context, appContext: AppContext) : ExpoView(context
|
|||||||
MediaPlayer.Event.Buffering,
|
MediaPlayer.Event.Buffering,
|
||||||
MediaPlayer.Event.EndReached,
|
MediaPlayer.Event.EndReached,
|
||||||
MediaPlayer.Event.EncounteredError -> updatePlayerState(event)
|
MediaPlayer.Event.EncounteredError -> updatePlayerState(event)
|
||||||
MediaPlayer.Event.TimeChanged -> updateVideoProgress()
|
MediaPlayer.Event.TimeChanged -> {
|
||||||
|
// Do nothing here, as we are updating progress every 1 second
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user