Erstens erlaubt AVAudioSession
mit anderen AVAudioSessions
zu arbeiten, werden Sie die Option AVAudioSessionCategoryOptionMixWithOthers
einrichten müssen, wenn es zu initialisieren:
NSError *sessionError = NULL;
BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
withOptions:AVAudioSessionCategoryOptionMixWithOthers
error:&sessionError];
if(!success) {
NSLog(@"Error setting category Audio Session: %@", [sessionError localizedDescription]);
}
Unterbrechungen zu behandeln (ein Anruf, Alarm, etc ..),
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleAudioSessionInterruption:)
name:AVAudioSessionInterruptionNotification
object:[AVAudioSession sharedInstance]];
die NSNotification wird carr: Sie sollten einen Beobachter für Unterbrechungen der NSNotificationCenter
, wo Sie in der Lage zu handhaben, die Aktivierung/Deaktivierung des AVAudioSession
bei Bedarf einrichten y die Art der Unterbrechung und Schlüssel:
- (void)handleAudioSessionInterruption:(NSNotification*)notification {
NSNumber *interruptionType = [[notification userInfo] objectForKey:AVAudioSessionInterruptionTypeKey];
NSNumber *interruptionOption = [[notification userInfo] objectForKey:AVAudioSessionInterruptionOptionKey];
switch (interruptionType.unsignedIntegerValue) {
case AVAudioSessionInterruptionTypeBegan:{
// • Audio has stopped, already inactive
// • Change state of UI, etc., to reflect non-playing state
NSLog(@"AVAudioSessionInterruptionTypeBegan");
} break;
case AVAudioSessionInterruptionTypeEnded:{
// • Make session active
// • Update user interface
// • AVAudioSessionInterruptionOptionShouldResume option
NSLog(@"AVAudioSessionInterruptionTypeEnded");
if (interruptionOption.unsignedIntegerValue == AVAudioSessionInterruptionOptionShouldResume) {
// Here you should continue playback.
}
} break;
default:
break;
}
}
Große Antwort! Aber leider hat das Problem nicht gelöst. Ich überprüfte die Protokolle Ich erhalte diesen Fehler: AVAudioSession.mm:692: - [AVAudioSession setActive: withOptions: error:]: Deaktiviert eine Audiositzung mit laufenden E/A. Vor dem Deaktivieren der Audiositzung sollten alle E/A angehalten oder angehalten werden. auch: AVAudioSession.mm:692: - [AVAudioSession setActive: withOptions: error:]: Deaktiviert eine Audiositzung mit laufenden E/A. Vor dem Deaktivieren der Audiositzung sollten alle E/A angehalten oder angehalten werden. – saurabh2810
@ sabrabh2810 Das obige Beispiel behandelt Interrupts aus anderen Anwendungen. Sie erhalten den laufenden I/O-Fehler, weil ein anderer Teil der SAME-Anwendung den AV verwendet. Überprüfen Sie Ihre Klassen oder wenn Ihre Plugins hybrid sind. –