2013-09-17 2 views
8

Есть ли возможность получить объем микрофона в ios 7?Как получить объем микрофона в 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 не работает прошивкой 7

благодаря

ответ

14

Поместите эти строки перед тем как инициализировать AVAudioRecorder:

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

Спасибо Отлично;) – Loa

+0

Спасибо, что действительно помог мне! – perborin

+0

Это замечательно, за исключением того, что он нарушил мои другие звуковые эффекты:/ – FaddishWorm

Смежные вопросы