在android中录制audio时如何做Visualizer

我知道Visualizer使用android媒体播放器播放audio时显示一些波。

但是我想在录音的同时录制video,而录音时我想要显示基于用户语音节拍改变的线性波。

有没有可能在Android中做。

Solutions Collecting From Web of "在android中录制audio时如何做Visualizer"

通过每x毫秒调用MediaRecorder.getMaxAmplitude(),你会得到(从官方文档 ):

自上次调用此方法以来采样的最大绝对幅度。

那么,您可以实时处理此值以绘制graphics或更改某些视图属性。
不完美,但我希望它有助于=)

编辑:只要你知道,检索的价值将在所有的Android设备相同:介于0和32767之间。(我有超过10K用户的报告给我这个价值时,他们吹在麦克风)。

两件重要的事情:

  • 您需要将实时字节(从麦克风)转换为数字值才能绘制它们。
  • 由于您使用实时graphics,绘制这些点使用SurfaceView。

    将logging字节转换为数字值参考: Android:监听器logging声音,如果发生任何声音 ,你会看到variables“temp”保存audio的数值。

    绘图点这些数字值表示您的Y值,并以X(时间间隔)值(0,1,2 ..)的forms绘制。 使用SurfaceView eg ..,

//canvas.drawLine(previous X value,previous Y value,X,Y, paint); canvas.drawPoint(X,Y,paint); SurfaceHolder.unlockCanvasAndPost(canvas); 

您不必绘制所有值,为了提高效率,您可以使用您的条件过滤这些值,并绘制一定的时间间隔。

希望这可以帮助 :)

您可能需要使用AudioRecorder类而不是MediaRecorder。

检查AudioRecorder#read(…)将audio数据放到byte []的方法,而不是将其直接放到文件中。

为了在图表上显示更改,您将不得不分析数据(在PCM 8或16位链接中编码)并实时更新graphics。