我正在制作节拍器应用程序。我希望它能在循环中精确计数 4 个节拍,并在第一节拍上加上重音。
在我的模拟器上的 Android Studio 中,它工作正常,但在我的实际手机(Galaxy J3 - 2018,Android v9)上,时间间隔根本不稳定,非常随机。
我已经尝试过 Threads、Coroutines、Handlers,但似乎没有任何效果。我还查看了 Timer 对象,我试图在 Stack Overflow 上复制某人的代码并重构它,但没有成功
这是我到目前为止的代码(在模拟器上运行)
timer = 5000
timeSignatureTop = 4
accentPlayed = false
measureCount = 1
Thread {
while (!stopButtonPressed) {
Log.d("Thread running", "running")
if (!accentPlayed) {
mediaPlayerAccent!!.start()
measureCount++
accentPlayed = true
}
else if (measureCount < timeSignatureTop) {
mediaPlayerBeat!!.start()
measureCount++
}
else if (measureCount == timeSignatureTop) {
mediaPlayerBeat!!.start()
measureCount = 1
accentPlayed = false
}
Thread.sleep(timer.toLong())
}
Log.d("Thread stopped", "stopped")
return@Thread
}.start()