Improve performance of android version

This commit is contained in:
Alex Kim
2024-12-07 06:35:25 +11:00
parent 39f86a9eb1
commit 832a717585

View File

@@ -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
}
} }
} }