Android AudioRecord PCM获取DB

时间:2016-10-25 08:32:53

标签: android pcm android-audiorecord

到目前为止:

byte data[] = new byte[recBufSize];
read = audioRecord.read(data, 0, recBufSize);
long v = 0;
for (int i = 0; i < data.length; i++) {
    v += Math.abs(data[i]);
}
double mean = v / (double) read;
final double volume = 20 * Math.log10(mean);

某些设备按预期工作,但在其他设备上运行时,vmeanvolume的值不会发生变化。

我想获得一个值来确定用户是否在说话。

这个演示一台设备上面可以如期运行,体积在不说话和说话时候波动比较大,但是再另外一些设备上基本上就没有什么波动。

翻译:

在此演示中,当音量在一台设备上运行时,音量要么静音要么非常大,但在不同的设备上,基本没有其他波动。

1 个答案:

答案 0 :(得分:0)

如果没有声音,您的变量(&#34; v&#34;,&#34;意思是&#34;,&#34; volumn&#34;)等于零。我猜你没有录音的许可。

首先,请检查您是否在清单文件中有音频记录权限。

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

如果测试的设备运行Marshmallow,则需要在运行时请求权限: https://developer.android.com/training/permissions/requesting.html