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, эффективно?