2016-05-25 19 views
0

Ich benutze die systemMusicPlayer, um Songs in einer App abzuspielen.Anhalten der Audiodatei zum Abspielen einer anderen Audiodatei

Wenn ein Benutzer noiseButton auf der Ansicht Aktueller drückt, wird er pausiert die systemMusicPlayer Song Audiodatei für 10 Sekunden, um die noiseButton Audiodatei zu spielen und dann nach oben auf der systemMusicPlayer Song Audiodatei auswählen zurück.

Ich bin in der Lage, die systemMusicPlayer Song Audio-Datei zu erhalten zu pausieren und dann abholen zurück nach 10 Sekunden, aber ich bin nicht in der Lage, die noiseButton zu spielen den Klang in den 10 Sekunden zu erhalten.

  • Ich weiß, dass die noiseButton Audiodatei
  • Ich bin NSLog geht vor und nach der Methode funktioniert, die die noiseButton Datei

Ich bin nicht sicher spielen, was ich fehle?

Hier ist mein Code:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    musicPlayer = [MPMusicPlayerController systemMusicPlayer]; 
    [self registerMediaPlayerNotifications]; 

    // Construct URL to sound file 
    NSString *path = [NSString stringWithFormat:@"%@/background-music-aac.caf", [[NSBundle mainBundle] resourcePath]]; 
    NSURL *soundUrl = [NSURL fileURLWithPath:path]; 

    // Create audio player object and initialize with URL to sound 
    _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil]; 
} 

- (void)willPlayClip { 
    [NSTimer scheduledTimerWithTimeInterval:10.0 
            target:self 
            selector:@selector(willPlayMusicInTenSeconds:) 
            userInfo:nil 
            repeats:NO]; 
} 

- (void)willPlayMusicInTenSeconds:(NSTimer *)timer { 
    NSLog(@"Get ready to Play noise sound"); 
    [_audioPlayer play]; 
    NSLog(@"Play noise sound"); 

    [musicPlayer play]; 
    NSLog(@"Start playing again"); 
} 

Und der Code innerhalb der noiseButton für, wenn er gedrückt wird:

if ([musicPlayer playbackState] == MPMusicPlaybackStatePlaying) { 
    [musicPlayer pause]; 
    NSLog(@"Paused!"); 
    [self willPlayClip]; 
} else { 
    NSLog(@"Already paused"); 
} 

Antwort

1

Welche AudioSession Kategorie setzen Sie? Wenn Sie nicht, sind zu dieser Dokumentation:

Audio Session Categories

Ich glaube, dass Sie das gewünschte Verhalten bekommen sollten, wenn Sie Ihre Sitzung AVAudioSessionCategoryAmbient gesetzt:

Die Kategorie für eine Anwendung, in der Die Soundwiedergabe ist nicht primär - das heißt, Ihre App kann erfolgreich mit ausgeschaltetem Sound verwendet werden.

Diese Kategorie eignet sich auch für Apps mit "Mitspielen", z. B. ein virtuelles Piano, das ein Benutzer spielt, während die Musik-App spielt. Wenn Sie diese Kategorie verwenden, wird Audio aus anderen Apps mit Ihrem Audio gemischt. Ihr Audio wird durch die Bildschirmsperre und den Silent-Schalter (auf dem iPhone als Ring/Silent-Schalter bezeichnet) stummgeschaltet.

Geben Sie einen Versuch, wenn Sie nicht bereits sind.

+0

Süße Ich werde das heute überprüfen – SRMR