java - Android:创建可循环的铃声

标签 java android audio

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

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

其次,我认为我只能计算正弦波的 1 个周期,然后循环它。然而我发现that is not a viable approach

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

最佳答案

您可以创建一个线程,每隔一段时间(例如 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();

关于java - Android:创建可循环的铃声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186223/

相关文章:

java - 速度模板转换成java字符串

android - 将动态组件添加到 Android 中的自定义对话框

python - python 中的waveplay 等效命令

iphone - 使用AudioFileReadPackets通过Audio Queue访问原始音频数据

java - ExpandableListView 什么都不显示

java - 防弹 groovy 脚本嵌入

java - ParseServer I/O 失败导致应用程序部署问题

audio - 如何使用ffmpeg制作实时视频和音频流(不是VoD)?

java - 如何在此 smali 代码中返回静态结果

android - 如何在 Android 应用程序中绘制类似谷歌地图的多边形?