AVAudioRecorder funktioniert nicht mehr, wenn auf dem iPhone 5s mit iOS 7 in / dev / null geschrieben wird

Ich habe eine App, die den Hintergrund-Audiopegel überwacht, ohne in eine Datei aufzunehmen. Ich benutze den Trick, nach / dev / null zu schreiben, um dies zu erreichen.

Dieser Code hat auf dem iPhone 3GS mit iOS 6, iPhone 4 mit iOS 6 und iOS 7 sowie im Simulator mit iOS 7 und iPhone Retina (4-Zoll-64-Bit) funktioniert.

Wenn ich es jedoch auf einem echten iPhone 5s versuche, scheint der Recorder einen Moment lang Audio aufzunehmen und stirbt dann lautlos ab.

Dies ist der Code:

    // 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]);
}

Irgendwelche Ideen, was los sein könnte?

Könnte jemand eine Problemumgehung vorschlagen? Das Schreiben in eine echte Datei funktioniert, aber ich möchte keinen Speicherplatz auf dem Gerät ausfüllen, nur um Audio zu überwachen. Gibt es eine Möglichkeit, in einen kleinen Dateipuffer zu schreiben, der sich nur in Luft auflöst? Mein eigenes / dev / null effektiv implementieren?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage