tankery / CircularSeekBar

Custom circular SeekBar (Circle, Semi-circle, and Ellipse) for Android
Apache License 2.0
368 stars 59 forks source link

Seek bar jumping backwards near end #25

Open kaori92 opened 4 years ago

kaori92 commented 4 years ago

Hello,

Great library! Just one issue, I noticed that sometimes near the end the seek bar is jumping backwards, I'm using it with MediaPlayer, here is my code:

fun setupSeekBar(audioSeekBar: CircularSeekBar) {
    audioSeekBar.setOnSeekBarChangeListener(object : CircularSeekBar.OnCircularSeekBarChangeListener {

        override fun onProgressChanged(seekBar: CircularSeekBar, progress: Float, b: Boolean) {
            logger.logError("progress: $progress max: ${seekBar.max}")
        }

        override fun onStartTrackingTouch(seekBar: CircularSeekBar) {
            model.getMediaPlayer().seekTo(seekBar.progress.toInt())
        }

        override fun onStopTrackingTouch(seekBar: CircularSeekBar) {}
    })
}

fun setupAudioProgressBar(progressBar: CircularSeekBar, handler: Handler) {
    progressBar.let {
        it.max = model.getMediaPlayer().duration.toFloat()
        val interval: Long = 100
        val statusChecker = object : Runnable {
            override fun run() {
                it.progress = model.getMediaPlayer().currentPosition.toFloat()
                handler.postDelayed(this, interval)
            }
        }

        statusChecker.run()
    }
}

and here are logs of progress and max: (in the beginning progress is always increasing) progress: 5112.0 max: 5400.0 progress: 5256.0 max: 5400.0 progress: 5328.0 max: 5400.0 progress: 5256.0 max: 5400.0

elonmasai7 commented 7 months ago

fun setupSeekBar(audioSeekBar: CircularSeekBar) { audioSeekBar.setOnSeekBarChangeListener(object : CircularSeekBar.OnCircularSeekBarChangeListener { override fun onProgressChanged(seekBar: CircularSeekBar, progress: Float, b: Boolean) { logger.logError("progress: $progress max: ${seekBar.max}")

    }

    override fun onStartTrackingTouch(seekBar: CircularSeekBar) {

    }

    override fun onStopTrackingTouch(seekBar: CircularSeekBar) {

    }
})

}

fun setupAudioProgressBar(progressBar: CircularSeekBar, handler: Handler) { val mediaPlayer = model.getMediaPlayer() progressBar.max = mediaPlayer.duration.toFloat()

val interval: Long = 100
val statusChecker = object : Runnable {
    override fun run() {
        val currentPosition = mediaPlayer.currentPosition.toFloat()
        progressBar.progress = currentPosition
        handler.postDelayed(this, interval)
    }
}

handler.post(statusChecker)

}