如何在android中录制音频时使用Visualizer
我知道Visualizer在使用android媒体播放器播放音频时会显示一些波形 但我想在录制音频时显示Visualizer,也就是说,在录制时,我想显示线性波,它根据用户的声音节拍而变化如何在android中录制音频时使用Visualizer,android,visualizer,Android,Visualizer,我知道Visualizer在使用android媒体播放器播放音频时会显示一些波形 但我想在录制音频时显示Visualizer,也就是说,在录制时,我想显示线性波,它根据用户的声音节拍而变化 是否可以在android中执行此操作。每x毫秒调用一次MediaRecorder.getMaxAmpliance(),您将拥有(从): 自上次调用以来采样的最大绝对振幅 这个方法 然后,您可以实时处理该值以绘制图形或更改某些视图属性。 不完美,但我希望它能有所帮助=) 编辑:正如您所知,所有android设备
是否可以在android中执行此操作。每x毫秒调用一次MediaRecorder.getMaxAmpliance(),您将拥有(从): 自上次调用以来采样的最大绝对振幅 这个方法 然后,您可以实时处理该值以绘制图形或更改某些视图属性。
不完美,但我希望它能有所帮助=) 编辑:正如您所知,所有android设备的检索值都是相同的:介于0和32767之间。(我有超过10k的用户报告,当它们吹进话筒时,会给出这个值)。您可能需要使用类而不是MediaRecorder 检查AudioRecorder#read(…)方法,该方法将音频数据放入字节[],而不是直接放入文件
要显示图形上的更改,您必须分析数据(以PCM 8或16位编码)并实时更新图形。两件重要的事情:
- 您需要将活动字节(从mic)转换为数值,以便打印它们李>
- 因为您使用的是实时图形,所以要绘制这些点 使用SurfaceView 将录制字节转换为数值参考: 您将看到变量“temp”保存音频的数值 绘图点 这些表示Y值的数值以图形形式与递增的X(时间间隔)值(0,1,2..)相对应。使用SurfaceView 例如
希望这有帮助:)一个电平表就足够了,还是您需要每个频率电平?我需要至少一些拍数值来绘制一个图形,我自己使用图形Apiclot记录的字节随时间间隔的增加而增加。。请参阅下面的答案,以便指定输出文件。。可以跳过它吗?不可以,只需给记录器一个这样的文件:File cacheDir=getwriteablecachedir();samplePath=cacheDir.getAbsolutePath()+“/sample”;mRecorder.setOutputFile(samplePath);完成后删除它…@ShashankKumar:或者使用录音机。(无需文件)如何在Visualizer类中使用此方法,您是否可以详细解释或提供任何可以显示所有这些功能的示例代码
//canvas.drawLine(previous X value,previous Y value,X,Y, paint);
canvas.drawPoint(X,Y,paint);
SurfaceHolder.unlockCanvasAndPost(canvas);