带有圆形 ProgressBar 的媒体播放器

Media player with circular ProgressBar

我想将我的媒体播放器连接到进度条这是我的代码:

var media55 :MediaPlayer
var progressBar55 :ProgressBar

        progressBar55=findViewById(R.id.progressBar)
        media55 = MediaPlayer()
        media55.setDataSource("SONG URL HERE")
        media55.prepare()

我想要当我启动媒体播放器时进度条随媒体播放器一起进步

在 class 范围内定义处理程序。

private val handler = Handler()

然后将 ProgressBar 最大值设置为 MediaPlayer 数据源的持续时间。

progressBar55.max = media55.duration

最后添加一个 Runnable 对象以每隔 X 毫秒在 ProgressBar 上设置进度。

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

当您 运行 您的音频时,您应该调用 statusChecker.run() 开始更新 porgress,完成后通过调用 handler.removeCallbacksAndMessages(null)

删除处理程序回调

希望对您有所帮助

Using Handler

private lateinit var mHandler: Handler
private lateinit var mRunnable:Runnable

Just Create Function For This

fun startedSong()
{
mRunnable = Runnable {
                // Do something here
    if(media55.isPlaying)
    {
       progressBar55.progress=media55.currentPosition
    }
}
                // Schedule the task to repeat after 1 second
                mHandler.postDelayed(
                        mRunnable, // Runnable
                        1000 // Delay in milliseconds
                )
}

Call This Function In Your Code

    progressBar55=findViewById(R.id.progressBar)
    media55 = MediaPlayer()
    media55.setDataSource("SONG URL HERE")
    media55.prepare()
    progressBar55.max=media55.duration
    mHandler = Handler()
    startedSong()