Ich möchte wissen, wenn mein AVAudioRecorder
nicht verfügbar ist (z. B. wenn Musik beginnt zu spielen).iOS AVAudioSession Unterbrechungsbenachrichtigung funktioniert nicht wie erwartet
Da audioRecorderEndInterruption
mit iOS 9 veraltet sein wird, konzentriere ich mich auf die Unterbrechungsbenachrichtigung AVAudioSession
(aber beide funktionieren nicht wie erwartet).
Das Problem ist, dass die Unterbrechungsbenachrichtigung nie aufgerufen wird, wenn die App im Vordergrund war und bleibt, wenn die Unterbrechung auftritt.
ZB: Der Benutzer startet und hört Musik auf, ohne die Anwendung in den Hintergrund zu stellen.
Um alle Unterbrechungen zu erfassen Ich verwende:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioSessionWasInterrupted:) name:AVAudioSessionInterruptionNotification object:nil];
...
- (void)audioSessionWasInterrupted:(NSNotification *)notification {
if ([notification.name isEqualToString:AVAudioSessionInterruptionNotification]) {
NSLog(@"Interruption notification");
if ([[notification.userInfo valueForKey:AVAudioSessionInterruptionTypeKey] isEqualToNumber:[NSNumber numberWithInt:AVAudioSessionInterruptionTypeBegan]]) {
NSLog(@"InterruptionTypeBegan");
} else {
NSLog(@"InterruptionTypeEnded");
}
}
}
I InterruptionTypeBegan
erhalten wie erwartet, aber InterruptionTypeEnded
nicht, wenn die App ist noch im Vordergrund (dh es wird erst die App aufgerufen werden genannt befindet sich im Hintergrund und zurück in den Vordergrund).
Wie kann ich die Benachrichtigung InterruptionTypeEnded
erhalten, wenn die Unterbrechung auftritt, während die App im Vordergrund ist?
Dieser Link kann Ihnen helfen: - http://stackoverflow.com/questions/23586056/audio-interruption-when-ios-application-is-recording-in-background –
Aus der Apple-Dokumentation: "Es gibt keine Garantie Bei einer beginnenden Unterbrechung kommt es zu einem Ende der Unterbrechung. Ihre App muss wissen, dass sie in den Vordergrundzustand wechseln muss oder dass der Benutzer eine Wiedergabetaste drückt. In beiden Fällen müssen Sie festlegen, ob Ihre App die Audiositzung erneut aktivieren soll. – Fennelouski