我想要循环播放没有间隙的音乐。
一开始。我用了.islooping,但音乐之间有差距
然后我找到了一种在音乐之间不露声色的方法。
但我不能让他们循环。
请解决这个问题
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)
}
}
}
}我试过用计时器。
然而,在播放第二首音乐之前,出现了一个错误。
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
}
}
}
}发布于 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() }
https://stackoverflow.com/questions/70805801
复制相似问题