Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can we handle headphone play/pause button events in foreground in ios

I have an requirement that to handle headphone play/pause button events in foreground. How ever I am able to handle the same scenario in background using the below code

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

Please help with an explanation or sample code if possible. I have done lots of research but no help.

like image 482
Santosh Gurram Avatar asked Mar 15 '13 04:03

Santosh Gurram


3 Answers

You must check this criteria:

  1. Edit your info.plist to stipulate that you do audio (UIBackgroundModes) in the background as well as foreground.
  2. Implement this function:

    - (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;
        }
      }
    }
    

...obviously, replace the "//insert code" with whatever functionality is relevent in your app.

3>Finally, in order for that above function to be called, insert this in your viewDidAppear event:

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

also please see this link: http://www.sagorin.org/2011/11/29/ios-playing-audio-in-background-audio/

like image 133
Banker Mittal Avatar answered Oct 13 '22 00:10

Banker Mittal


There is another way to implement player control from headphones. use MPRemoteCommandCenter tooglePlayPauseCommand. Apple documentation

[[MPRemoteCommandCenter sharedCommandCenter].togglePlayPauseCommand addTarget:self action:@selector(onTooglePlayPause)];
like image 44
slobodans Avatar answered Oct 13 '22 01:10

slobodans


The swift 2 version for slobodans solution:

MPRemoteCommandCenter.sharedCommandCenter().togglePlayPauseCommand.addTarget(self, action: #selector(togglePlayStop(_:)));
like image 23
SteMa Avatar answered Oct 12 '22 23:10

SteMa