如何在 iOS 7 中获得麦克风音量?
Posted
技术标签:
【中文标题】如何在 iOS 7 中获得麦克风音量?【英文标题】:how to get mic volume in ios 7? 【发布时间】:2013-09-17 15:31:55 【问题描述】:在 ios 7 中有获取麦克风音量的视图吗?
NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];
NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
[NSNumber numberWithInt: 0], AVNumberOfChannelsKey,
[NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey,
nil];
NSError *error;
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
if (recorder)
//recorder.delegate = self;
[recorder prepareToRecord];
recorder.meteringEnabled = TRUE;
[recorder record];
levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.1 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
else
NSLog(@"");// mic error message
- (void)levelTimerCallback:(NSTimer *)timer
[recorder updateMeters];
const double ALPHA = 0.05;
double peakPowerForChannel = pow(10, (ALPHA * [recorder averagePowerForChannel:0]));
db = 20* log10(peakPowerForChannel);
db += taraturaDb;
db = db < 0 ? 0 : db;
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
if (lowPassResults < 0.95)
NSLog(@"%f",db);
这在 iOS6 中有效,但在 iOS 7 中无效
谢谢
【问题讨论】:
【参考方案1】:在初始化 AVAudioRecorder 之前添加这些行:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive:YES error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:nil];
【讨论】:
谢谢,这对我很有帮助! 这很棒,只是它破坏了我的其他音效:/ @FaddishWorm 将音频会话类别设置为AVAudioSessionCategoryPlayAndRecord
。根据the documentation,“此类别适用于同时录制和播放,也适用于录制和播放但不同时进行的应用”
有人知道这是否也可以在 iOS 6 及更低版本中安全使用吗?以上是关于如何在 iOS 7 中获得麦克风音量?的主要内容,如果未能解决你的问题,请参考以下文章