有谁知道该方法的返回单位是什么:
MediaRecorder.getMaxAmplitude();
Android MediaRecorder API 文档仅说明此方法返回自上次调用以来采样点的最大绝对幅度,但未指定单位。它是帕斯卡,毫帕斯卡还是其他?
经过自己和一些高校的详细搜索,得出了这个结论。据我所知,这个问题的答案还不完整,因此,我正在写自己对这个问题的答案。
MediaRecorder.getMaxAmplitude() 函数返回无符号 16 位整数值 (0-32767)。这些值可能是通过在 -32768 … +32767 上使用 abs() 来计算的,类似于正常的 CD 质量样本值。负幅度只是镜像,因此幅度始终为正。
这些值与任何具体的校准物理特性无关。因此,这些值只是 0-100%(该麦克风的最大电压范围)的电气输出的 16 位数字化。
麦克风将声压(帕斯卡)线性转换为电压。因此,api 报告的值与声压相关,但它们在使用的每个设备上都不同,并且在很大程度上取决于品牌、型号和特定设备(电路、放大器等)。这意味着在没有声压的情况下很难判断这些值将电话麦克风校准到可靠的声压计。
MediaRecorder.getMaxAmplitude()
值范围在 0 到 32,767之间
(注:32,767 是有符号整数的最大值)
单位不是标准的。
在我的应用程序中,我通常将任何大于 18000 的值视为“响亮”,约为最大值的 50%。
对于每个不同的设备或麦克风,测量单位会有所不同。如果您想知道,则必须针对校准的源或测量仪器测试每个特定的麦克风型号。