我正在尝试绘制一个窦波形(想想Siri),它会立即受到用户声音的影响。如果我能在Android上完全this完成{4}等设备的流动性,我会非常满意,所以非常感谢任何有用的信息。
现在,我了解如何使用MediaRecorder
以“tick”(reference)获取最大振幅,并且我可以将这些整数值中的多个存储在数组中作为{ {1}}正在录制和拾取音频,但我不知道如何将这个整数数组转换成我上面发布的Github项目。我也很感激,如果有人可以建议这个数组应该有多大,因为我想尽可能快地转储旧数据,以便快速制作动画并尽可能少地使用内存。
答案 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中的位置),消失效果的行越宽。 最后,绘制从最旧到最新的图形。