首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kotlin中不带间隙地循环MediaPlayer?

如何在Kotlin中不带间隙地循环MediaPlayer?
EN

Stack Overflow用户
提问于 2022-01-21 18:10:42
回答 1查看 66关注 0票数 0

我想要循环播放没有间隙的音乐。

一开始。我用了.islooping,但音乐之间有差距

然后我找到了一种在音乐之间不露声色的方法。

但我不能让他们循环。

请解决这个问题

代码语言:javascript
复制
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val music1 = MediaPlayer.create(this, R.raw.sound1)
        val music2 = MediaPlayer.create(this, R.raw.sound1)

        val musicBtn: ImageButton = findViewById(R.id.button)
        musicBtn.setOnClickListener {
            if (music1.isPlaying or music2.isPlaying) {
                music1.pause()
                music2.pause()
            } else {
                music1.start()
                music1.setNextMediaPlayer(music2)
            }
        }

    }
}

我试过用计时器。

然而,在播放第二首音乐之前,出现了一个错误。

在这里输入图像描述

代码语言:javascript
复制
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        var timer = Timer()
        val fire1 = MediaPlayer.create(this, R.raw.fire1)
        val fire2 = MediaPlayer.create(this, R.raw.fire2)
        val fireVol: SeekBar = findViewById(R.id.fireseek)
        fireVol.visibility = View.INVISIBLE


        val rainBtn4: ImageButton = findViewById(R.id.button)
        rainBtn4.setOnClickListener {
            val TT : TimerTask = object : TimerTask() {
                override fun run() {
                    fire1.start()
                    fire1.setNextMediaPlayer(fire2)
                }
            }
            if (fireVol.isVisible) {
                timer.cancel()
                timer = Timer()
                fire1.pause()
                fire2.pause()
                fireVol.visibility = View.INVISIBLE

            } else {
                timer.schedule(TT, 0,100)
                fireVol.visibility = View.VISIBLE
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-21 19:33:17

注意:,这可能不是一个很好的方法,但它有效。你可以添加

setOnCompletionListener

一个媒体播放器开始另一个媒体播放器。就像这样;

val btnPlay = findViewById(R.id.btnPlay) val mediaPlayer = MediaPlayer.create(this,R.raw.music_one) val mediaPlayer2 = MediaPlayer.create(this,R.raw.music_two) btnPlay.setOnClickListener { mediaPlayer.start() } mediaPlayer.setOnCompletionListener { mediaPlayer2.start() }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70805801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档