Android:创建一个可循环的音调

时间:2012-08-29 20:45:12

标签: java android audio

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

首先我只使用整数值作为音调,因为这意味着我可以使用1秒,它应该正确循环。但是仍有一些频率无法正常循环。

其次我以为我只能计算1个正弦波周期,然后循环。但是我发现了that is not a viable approach

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

1 个答案:

答案 0 :(得分: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();