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

头发还没秃a 2016-09-14 02:08:42

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,我的代码哪里出问题了?(方法都是网上找的)
...全文
567 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
开发者_android 2016-09-23
  • 打赏
  • 举报
回复
值问题,你就找值呗,你看v和bytes的值有没有问题呀,然后再看整个计算表达式的算法有没有问题。
头发还没秃a 2016-09-23
  • 打赏
  • 举报
回复
没人知道么
头发还没秃a 2016-09-21
  • 打赏
  • 举报
回复
来人啊,救命啊
头发还没秃a 2016-09-18
  • 打赏
  • 举报
回复
引用 5 楼 pengguohua1988 的回复:
[quote=引用 4 楼 zhumj_zhumj 的回复:] [quote=引用 3 楼 pengguohua1988 的回复:] (int) (Math.abs((int)(v /(float)bytes)/10000) >> 1); 把前面的int强转去掉看下结果
其实我主要用的是第二种方法,第一种方法我觉得不太靠谱[/quote] 你不是在问为啥这里获取的分贝有问题吗[/quote] 是啊,但是我网上找到有两种方法,第一种是取绝对值,第二种是求平均值,但是我这里两种方法都有问题啊,绝对值的方法强转不管是int还是float取到的值都是零,第二种方法取到的值基本都是34.xxxxxx,不管有没有说话都是
MR__P 2016-09-14
  • 打赏
  • 举报
回复
引用 4 楼 zhumj_zhumj 的回复:
[quote=引用 3 楼 pengguohua1988 的回复:] (int) (Math.abs((int)(v /(float)bytes)/10000) >> 1); 把前面的int强转去掉看下结果
其实我主要用的是第二种方法,第一种方法我觉得不太靠谱[/quote] 你不是在问为啥这里获取的分贝有问题吗
头发还没秃a 2016-09-14
  • 打赏
  • 举报
回复
引用 3 楼 pengguohua1988 的回复:
(int) (Math.abs((int)(v /(float)bytes)/10000) >> 1); 把前面的int强转去掉看下结果
其实我主要用的是第二种方法,第一种方法我觉得不太靠谱
MR__P 2016-09-14
  • 打赏
  • 举报
回复
(int) (Math.abs((int)(v /(float)bytes)/10000) >> 1); 把前面的int强转去掉看下结果
头发还没秃a 2016-09-14
  • 打赏
  • 举报
回复
引用 1 楼 Ecstatic 的回复:
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 权限写没写 http://blog.csdn.net/greatpresident/article/details/38402147
肯定写了啊,不然怎么录音
ecstatic 2016-09-14
  • 打赏
  • 举报
回复
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 权限写没写 http://blog.csdn.net/greatpresident/article/details/38402147

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧