问题
一旦按下按钮,我一直在尝试在我正在开发的应用程序上实现双哔声。
问题是,我没能做到完全正确。有时声音重叠,有时它们播放得比他们应该的更快。
我想播放任意音调,任意暂停/延迟,然后再次播放音调。
OBS:我已经看到一些使用MediaPlayer
orRingtone
类的解决方案,但这个问题是关于如何ToneGenerator
仅使用而不使用TONE_PROP_BEEP2
orTONE_PROP_ACK
音调来实现这一点。
到目前为止我尝试过的
首先,我尝试调用该startTone()
方法两次,但很快我发现声音是同时播放的。
button.setOnClickListener {
val toneG = ToneGenerator(AudioManager.STREAM_ALARM, 100)
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200)
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200)
}
然后我尝试以Handler
两种方式使用。
首先,我尝试使用其中两个:
button.setOnClickListener {
val toneG = ToneGenerator(AudioManager.STREAM_ALARM, 100)
val handler = Handler()
handler.postDelayed({
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200)
}, 50)
handler.postDelayed({
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200)
}, 350)
}
其次,我也尝试过Thread.sleep()
:
button.setOnClickListener {
val toneG = ToneGenerator(AudioManager.STREAM_ALARM, 100)
val handler = Handler()
handler.postDelayed({
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200)
Thread.sleep(100)
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200)
}, 50)
}
两种想法都“有点”奏效。但是在第一次按下按钮时,哔哔声听起来很有趣,因为它们播放得太快了,有时甚至重叠。
我第二次按 时Button
,音调播放正确。