给定整数幅度点,如何绘制平滑曲线?

时间:2015-03-25 12:13:36

标签: java android math

我正在尝试绘制一个窦波形(想想Siri),它会立即受到用户声音的影响。如果我能在Android上完全this完成{4}等设备的流动性,我会非常满意,所以非常感谢任何有用的信息。

现在,我了解如何使用MediaRecorder以“tick”(reference)获取最大振幅,并且我可以将这些整数值中的多个存储在数组中作为{ {1}}正在录制和拾取音频,但我不知道如何将这个整数数组转换成我上面发布的Github项目。我也很感激,如果有人可以建议这个数组应该有多大,因为我想尽可能快地转储旧数据,以便快速制作动画并尽可能少地使用内存。

1 个答案:

答案 0 :(得分:0)

EMy aproach如下:你可以存储最后5个值(在你的例子中,它一次显示大约5-6行)。

然后,对于这5个值中的每个值: 取最大振幅值作为参考,并用它来计算当前值的百分比。使用该百分比以及sin(x)Math.sin函数来平滑曲线:

示例:

MAX_AMPL:1200 CURR_VALUE:240 - > MAX_AMPL的20%

使用android绘图原语Drwaing on android绘制f(x)=(CURR_VALUE / MAX_VALUE)Math.Sin(x) 如果您在0和2Pi之间绘制函数,我认为您将获得与示例中相同数量的波。

值越近(值ArrayList中的位置),消失效果的行越宽。 最后,绘制从最旧到最新的图形。