如何在iOS 7中获取麦克风音量?

8
有没有在iOS7中获取麦克风音量的方法?
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中可行的东西,在iOS7中无法使用

谢谢

1个回答

14

在初始化 AVAudioRecorder 之前,请将这些行放置:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive:YES error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:nil];

这很棒,但它破坏了我的其他音效 :/ - ddoor
@FaddishWorm 将音频会话类别设置为 AVAudioSessionCategoryPlayAndRecord。根据文档,"此类别适用于同时录制和播放,以及仅录制和播放但不同时进行的应用程序"。 - albertamg
有人知道这个能否在iOS 6及以下版本上安全使用吗? - newenglander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接