AVAudioRecorder перестает работать при записи в / dev / null на iPhone 5s с iOS 7

У меня есть приложение, которое отслеживает фоновый уровень звука без записи в файл. Я использую трюк записи в / dev / null для достижения этой цели.

Этот код работал на iPhone 3GS с iOS 6, iPhone 4 с iOS 6 и iOS 7, а также на симуляторе с iOS 7 и iPhone Retina (4-дюймовый 64-разрядный).

Однако, когда я пытаюсь сделать это на настоящем iPhone 5s, диктофон на мгновение перехватывает звук, а затем тихо умирает.

Это код:

    // Inititalize the audio

NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
                          [NSNumber numberWithFloat: 44100.0],                 AVSampleRateKey,
                          [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
                          [NSNumber numberWithInt: 1],                         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: 0.03 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
    //        peakLevelTimer = [NSTimer scheduledTimerWithTimeInterval: 2.0 target: self selector: @selector(peakLevelTimerCallback:) userInfo: nil repeats: YES];
} else {
    NSLog(@"There was an error setting up the recorder.");        
    NSLog([error description]);
}

Есть идеи, что может происходить?

Кто-нибудь может предложить обходной путь? Запись в реальный файл работает, но я не хочу заполнять место на устройстве только для мониторинга звука. Есть ли способ записи в небольшой файловый буфер, который просто испаряется? Реализовать мой собственный / dev / null, эффективно?

Ответы на вопрос(2)

Ваш ответ на вопрос