在iphone真机上测的数据始始终没有变化, 在模拟器上是可以的,折腾了半天,终于搜索找到解决方法,在代码中添加

[[AVAudioSession sharedInstance]setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];

1. 开发环境xocde5.1.1 , IOS sdk7.1

2.  引入框架:AVFoundation.framework

3.  部分源码如下:

#import "MicBlowViewController.h"@implementation MicBlowViewController- (void)viewDidLoad
{[super viewDidLoad];/* 必须添加这句话,否则在模拟器可以,在真机上获取始终是0  */[[AVAudioSession sharedInstance]setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];/* 不需要保存录音文件 */NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,[NSNumber numberWithInt: 2], AVNumberOfChannelsKey,[NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey,nil];NSError *error;recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];if (recorder){[recorder prepareToRecord];recorder.meteringEnabled = YES;[recorder record];levelTimer = [NSTimer scheduledTimerWithTimeInterval: 1 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];}else{NSLog(@"%@", [error description]);}}/* 该方法确实会随环境音量变化而变化,但具体分贝值是否准确暂时没有研究 */
- (void)levelTimerCallback:(NSTimer *)timer {[recorder updateMeters];float   level;                // The linear 0.0 .. 1.0 value we need.float   minDecibels = -80.0f; // Or use -60dB, which I measured in a silent room.float   decibels    = [recorder averagePowerForChannel:0];if (decibels < minDecibels){level = 0.0f;}else if (decibels >= 0.0f){level = 1.0f;}else{float   root            = 2.0f;float   minAmp          = powf(10.0f, 0.05f * minDecibels);float   inverseAmpRange = 1.0f / (1.0f - minAmp);float   amp             = powf(10.0f, 0.05f * decibels);float   adjAmp          = (amp - minAmp) * inverseAmpRange;level = powf(adjAmp, 1.0f / root);}/* level 范围[0 ~ 1], 转为[0 ~120] 之间 */dispatch_async(dispatch_get_main_queue(), ^{[_textLabel setText:[NSString stringWithFormat:@"%f", level*120]];});
}- (void)dealloc {[levelTimer release];[recorder release];[_textLabel release];[_cLabel release];[super dealloc];
}@end

IOS 通过麦克风检测声音分贝相关推荐

  1. 基于单片机声音分贝采集和显示控制系统设计(毕业设计资料)

    016[毕设课设]基于单片机声音分贝采集和显示控制系统设计,实时检测声音分贝大小,并可以通过手动设定分贝报警范围,当超过设定范围时则发生声光报警.包括的电路有声光报警电路,传感器采集电路,显示电路,温 ...

  2. android麦克风无声音,刺激战场麦克风怎么没有声音 听不到声音怎么解决

    在绝地求生刺激战场中,麦克风没有声音怎么办?有什么解决方法?安卓版和iOS版的解决方法有什么不同?有些玩家不知道麦克风为什么没有声音,接下来跟着趣趣手游网小编一起来看看吧. 麦克风没声音解决方法 麦克 ...

  3. 音视频开发(36)---麦克风阵列声音定位解决方案

    麦克风阵列声音定位解决方案 噪声源定位简介 噪声源定位意义 噪声源识别是指在同时有许多噪声源或包含许多振动发生部件的复杂声源情况下,为了确定各个声源或振动部件的声辐射的性能,区分噪声源,并根据他们对于 ...

  4. 麦克风阵列声音定位简介

    麦克风阵列声音定位简介 一般来说,基于麦克风阵列的声源定位算法划分为三类:一是基于波束形成的方法:二是基于高分辨率谱估计的方法:三是基于声达时延差(TDOA)的方法. 波束形成(Beamforming ...

  5. 麦克风阵列声音定位简介【转】

    麦克风阵列声音定位简介 一般来说,基于麦克风阵列的声源定位算法划分为三类:一是基于波束形成的方法:二是基于高分辨率谱估计的方法:三是基于声达时延差(TDOA)的方法. 波束形成(Beamforming ...

  6. 5.15-19采集麦克风的声音信号

    类似微信,当按下按钮后开始接收信号,接收信号后调用DLL文件,得到一段字符串,进而进行命令词识别,命令词即可操纵机器人模型使之产生动作. 开辟缓冲区,从设备接收信号,放大,增加分贝,然后生成*.wav ...

  7. Android 声音分贝控制锁屏demo实现

    标题demo实现总体逻辑: 1. 声明权限 2. 声明,注册 receiver,接收注册设别管理器结果 3. 完成注册APP为设备管理器 4. 录音权限申请 5. 编写类文件,实现业务逻辑 OK,我们 ...

  8. 语音 声波转换 java_语音输入声波动画。AVAudioRecorder+三角函数,实现根据声音分贝控制振幅声波动画...

    前言:很久没写东西了,最近项目需要用到语音识别,需要做一个输入语音,根据声音的分贝大小,控制波纹振幅的动画,看了别人的轮子,感觉效果不错.最近比较咸鱼就自己摸索着大概模仿实现了一下.代码并不复杂请耐心 ...

  9. 如何用arduino去检测声音大小?

    arduino是一款小巧,方便上手的开关电子硬件开发板,可以实现很多有趣的电子硬件产品. arduino本身只是一块裸机主板,所以如果想要实现某些功能就需要使用它的适配软件arduino IDE来对它 ...

最新文章

  1. Shell练习-统计出每个IP的访问量有多少?
  2. MTK 添加自定义PMS权限 Patch
  3. vue子组件改变父组件的值
  4. Linux网络编程 | 并发模式:半同步/半异步模式、领导者/追随者模式
  5. c语言变量ppt,C语言程序设计-变量.ppt
  6. 算法面试题汇总(更新中)
  7. 如何使用cURL一次测量请求和响应时间?
  8. CentOS系统基本设置
  9. 众多时间时钟Flash动画素材一键即可获取
  10. python平方根_如何在Python中找到平方根?
  11. 头条号想过新手,但指数却一直达不到650,该怎么过新手?
  12. android 9.0 10.0 去掉音量键+Power键组合键的屏幕截图功能
  13. 飞思卡尔 I.MX6Q-高分辨率(1080P)视频采集编码
  14. 注释(单行注释、多行注释、文档注释)
  15. 用户模块跳转、sso单点登录、跨域访问
  16. 基于beaglebone的rtems4.12源码编译生成image镜像并烧入sd卡
  17. 四层高速dsp开发板制作5——预布局与精确布局
  18. 什么是单臂路由器?如何配置单臂路由?
  19. CREO工程图设计 2D出图 图纸设计视频教程
  20. 郑清 - 日常作息表(2020-01)

热门文章

  1. ecmall widgets 挂件开发详解
  2. testbed笔记:生成测试代码编译出现error: reference to ‘ ‘ is ambiguous
  3. python3主函数返回值_Python 详解基本语法_函数_返回值
  4. php tcp 粘包,TCP 粘包拆包
  5. SMART S7-200PLC控制步进电机转动 step7开发环境 步进电机选择
  6. r语言 面板数据回归_面板数据估计的R实现
  7. 几个指标(同比,环比,定期比)(转载)
  8. 如果列出10以内自然数中3或5的倍数,则包括3,5,6,9。那么这些数字的和为23。要求计算得出任意正整数n以内中3或5的倍数的自然数之和。
  9. 带式运输机传动装置二级同轴式圆柱齿轮减速器课程设计(说明书+ CAD图纸)
  10. 2022-4-15 基于单片机的超声波测距报警