2013-03-15 4 views
6

Ich habe eine Anforderung, dass Kopfhörer Play/Pause Taste Ereignisse im Vordergrund zu behandeln. Wie auch immer ich bin in der Lage das gleiche Szenario im Hintergrund mit dem Code untenWie können wir Kopfhörer spielen/Pause Taste Ereignisse im Vordergrund in ios

if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){ 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; 
    [self becomeFirstResponder]; 
    NSLog(@"Responds!"); 
} 

Bitte helfen Sie mit einer Erklärung oder Beispielcode, wenn möglich zu behandeln. Ich habe viel geforscht, aber keine Hilfe.

Antwort

10

Sie müssen diese Kriterien überprüfen:

  1. Bearbeiten Sie Ihre info.plist zu schreiben vor, dass Sie tun, Audio (UIBackgroundModes) im Hintergrund sowie Vordergrund.
  2. Implementieren Sie diese Funktion:

    - (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent 
    { 
        if (theEvent.type == UIEventTypeRemoteControl) 
        { 
        switch(theEvent.subtype) { 
        case UIEventSubtypeRemoteControlTogglePlayPause: 
          //Insert code 
          break; 
         case UIEventSubtypeRemoteControlPlay: 
          //Insert code 
          break; 
         case UIEventSubtypeRemoteControlPause: 
          // Insert code 
          break; 
         case UIEventSubtypeRemoteControlStop: 
          //Insert code. 
          break; 
         default: 
          return; 
        } 
        } 
    } 
    

... offensichtlich, ersetzen Sie den "// einfügen Code" mit dem, was Funktionalität relevent in Ihrer Anwendung ist.

3> Schließlich, um für die obige Funktion aufgerufen werden, legen Sie diese in Ihrem viewDidAppear Veranstaltung:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    if ([self canBecomeFirstResponder]) { 
     [self becomeFirstResponder]; 
    } 

auch auf diesen Link finden Sie hier: http://www.sagorin.org/2011/11/29/ios-playing-audio-in-background-audio/

+0

Dank für Ihre Antwort, aber ich bin in der Lage, die Ereignisse im Hintergrund zu behandeln auch habe ich die UIBackgroundModes in plist hinzugefügt, aber ich habe keine Idee über die Behandlung von Vordergrundereignissen. Ich habe versucht, die erwähnte Methode auszulösen '- (void) remoteControlReceivedWithEvent: (UIEvent *) theEvent' aber kein Glück. Kannst du mir bitte erklären, wie wir in Plist Vordergrundschlüssel hinzufügen können. –

+0

Super..es hat für mich funktioniert ..! – JgdGuy

+0

Wenn Sie nach 2 Minuten auf die Kopfhörer-Taste drücken, wird die Musik-App gestartet und der vorherige Ton abgespielt. –

9

Es gibt eine andere Art und Weise zu implementieren Player-Steuerung über Kopfhörer. Verwenden Sie MPRemoteCommandCenter tooglePlayPauseCommand. Apple documentation

[[MPRemoteCommandCenter sharedCommandCenter].togglePlayPauseCommand addTarget:self action:@selector(onTooglePlayPause)]; 
4

Die schnelle 2-Version für slobodans Lösung:

MPRemoteCommandCenter.sharedCommandCenter().togglePlayPauseCommand.addTarget(self, action: #selector(togglePlayStop(_:))); 
Verwandte Themen