Java 带圆形进度条的媒体播放器
我想将我的媒体播放器连接到进度条这是我的代码:Java 带圆形进度条的媒体播放器,java,android,kotlin,kotlin-android-extensions,kotlin-extension,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() 我想在启动media
var media55 :MediaPlayer
var progressBar55 :ProgressBar
progressBar55=findViewById(R.id.progressBar)
media55 = MediaPlayer()
media55.setDataSource("SONG URL HERE")
media55.prepare()
我想在启动media player时,进度条与media player一起前进在类范围内定义处理程序
private val handler = Handler()
然后将ProgressBar最大值设置为MediaPlayer数据源的持续时间
progressBar55.max = media55.duration
最后,添加一个可运行对象,以每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)
删除处理程序回调,我希望它能帮助你
使用处理程序
只需为此创建函数
在代码中调用此函数
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()