1

我一直在尝试生成音调(444 赫兹、1000 赫兹等),然后在 Android 中播放。我的第一次搜索给了我这个堆栈溢出问题。虽然这在给定持续时间的情况下效果很好,但我更愿意使持续时间无限(可循环)。

首先,我只使用整数值作为音调,因为这意味着我可以使用 1 秒并且它应该正确循环。然而,仍然有一些频率不能正确循环。

其次,我以为我只能计算正弦波的 1 个周期,然后循环。但是我发现这不是一个可行的方法

在给定任何频率的情况下,我如何生成可以循环播放的音调?

4

1 回答 1

0

您可以创建一个线程,每隔一段时间(例如 2 秒)运行您的音调:

private Runnable startSoundRunnable = new Runnable() {
  @Override
  public void run() {
    while (true) {
      try {
        toneGenerator.startTone(ToneGenerator.TONE_CDMA_ALERT_AUTOREDIAL_LITE, 2000);
        sleep(2000);
      } catch (Exception ex) {}
    }
  }
};

// Run thread
new Thread(startSoundRunnable).start();
于 2017-05-26T22:00:26.220 回答