我知道在 Android Media Player 播放音频时可以使用 Visualizer 显示一些波形。
但是我想在录制音频时显示 Visualizer,也就是说,在录制过程中,我想显示根据用户语音节奏变化的线性波形。
这在 Android 上可行吗?
我知道在 Android Media Player 播放音频时可以使用 Visualizer 显示一些波形。
但是我想在录制音频时显示 Visualizer,也就是说,在录制过程中,我想显示根据用户语音节奏变化的线性波形。
这在 Android 上可行吗?
通过每 x 毫秒调用您的 MediaRecorder.getMaxAmplitude(), (从官方文档):
自上次调用此方法以来采样的最大绝对振幅。
然后,您可以实时处理此值以绘制图形或更改某些视图属性。
不完美,但希望对您有所帮助 =)
编辑:知道了这一点,检索到的值在所有 Android 设备上都相同:在 0 和 32767 之间。(当用户吹麦克风时,我收到了超过 10k 的报告给出了这个数值)。
两个重要的事情:
由于您使用实时图表,因此要绘制这些点,请使用SurfaceView。
将录制的音频字节转换为数字值 参考: Android:如果发生任何声音,则使用监听器记录声音 在其中您将看到变量“temp”保存了您的音频的数值。
绘制点 这些表示您Y值的数字值会随着时间间隔的增加(0、1、2..)作为图表的X坐标轴进行绘制。使用SurfaceView 例如..,
//canvas.drawLine(previous X value,previous Y value,X,Y, paint);
canvas.drawPoint(X,Y,paint);
SurfaceHolder.unlockCanvasAndPost(canvas);
你不需要绘制所有的值,为了效率,你可以使用条件过滤这些值,然后绘制一定时间间隔内的数据。