关于AudioRecorder录音获取音量的问题

头发还没秃a 头发还没秃a 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

while (isPrepared) {
int bytes = mRecorder.read(buffer, 0, bufferSize);
if (bytes > 0) {
ringBuffer.write(buffer, bytes);
}

// //取得音量
long v = 0;
// 将 buffer 内容取出,进行平方和运算
for (int i = 0; i < buffer.length; i++) {
v += buffer[i] * buffer[i];
}
float f = (int) (Math.abs((int)(v /(float)bytes)/10000) >> 1);
logger.i("AudioManager : f = " +f);
// // 平方和除以数据总长度,得到音量大小。
// double mean = v / (double) bytes;
// double volume = 10 * Math.log10(mean);
// logger.i("AudioManager : 总长度:" + mean);
// logger.i("AudioManager : 分贝值:" + volume);
}


我的代码是上面那样子的,获取音量时,使用float f = (int) (Math.abs((int)(v /(float)bytes)/10000) >> 1);的话,获取到的值永远为0,使用注释掉的方法的话,分贝值一直等于34.xxxxxx,我的代码哪里出问题了?(方法都是网上找的)
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
头发还没秃a
Android 80,490 成员 91,375 内容