带有圆形ProgressBar的媒体播放器

时间:2018-08-31 11:42:34

标签: java android kotlin kotlin-android-extensions kotlin-extension

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

var media55 :MediaPlayer
var progressBar55 :ProgressBar

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

我想当我启动媒体播放器时,进度栏随媒体播放器一起前进

2 个答案:

答案 0 :(得分:0)

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

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()以开始更新密码,并在完成后通过调用handler.removeCallbacksAndMessages(null)删除处理程序回调

答案 1 :(得分:0)

我希望它会帮助您

  

使用处理程序

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

为此只需创建函数

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

在您的代码中调用此函数

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