设置节拍器计时器以在每个给定的时间间隔(例如:500 毫秒)精确播放声音

问题描述 投票:0回答:0

我正在制作节拍器应用程序。我希望它能在循环中精确计数 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()
android-studio kotlin timertask metronome
© www.soinside.com 2019 - 2024. All rights reserved.