在android耳机插孔中创建特定的方形信号

时间:2014-07-05 22:17:54

标签: android signals wave audiotrack

这是我第一次访问本网站。我一直在尝试这个项目,但尝试各种方法并混合不同的方法没有帮助,一些或其他错误只是让应用程序崩溃。

我的代码要求是特定的,我需要传递两个0和1的数组,以相同的频率在耳机插孔左右声道上创建方形信号,我希望数组只播放一次,并且即使设备(Android手机)没有检测到连接的耳机,也可以在耳机插孔(左右分开)上播放。上传的数组和频率选择可通过函数进行更改。

我知道我在这里要求很多,但我已经尝试了一个多月了,我只是被封锁了。 即使我得到上述每个功能的具体指导,我也会做这项工作。

三江源。

1 个答案:

答案 0 :(得分:0)

我建议您使用AudioTrack在PCM 16bit和立体声中播放音频(另请参阅WAV规范),信号范围从-1到+1。 您还需要一个循环播放阵列的线程。

对于频率 f ,您有 f = 1 / T 的简单公式,其中 T 是期间,考虑到采样率。

void setFreq(float f)
{
  x = 1.0f/(samplerate/f)
}

下面的代码将在循环内连续运行以生成特定频率的方波信号,AudioTrack将通过数组缓冲区(byte []或short [])将其吃掉:

output = phase  < 0.5f ? 1.0f : -1.0f;
phase = phase + x;
if (phase > 1.0f)
   phase = 0.0f;