耳机按钮在iOS应用程序的辅助视图中无法识别

时间:2013-07-22 06:33:25

标签: iphone ios avaudioplayer headset

我有一个iOS应用,可以使用RadioKit SDK来播放音乐。在标签栏控制器的不同视图之间切换时音频播放正常,但是当插入耳机并且用户正在查看其中一个辅助标签视图时(应用程序启动时总共有5个,主要用于其他4个) )如果他们试图点击播放/暂停按钮,应用程序无法识别该操作。如果正在播放,它将不会暂停,如果它暂停,它将无法播放。但是,该应用可识别耳机的音量变化。

无论应用是在视野中,还是在后台,或者设备是否已锁定,此行为都是一致的。

我做了一些沉重的搜索,似乎无法解决这个问题。感谢您的帮助,谢谢!

iOS版本6.1.3
iOS SDK版本6.1
xCode版本4.6.3

1 个答案:

答案 0 :(得分:1)

您想收听-(void)remoteControlReceivedWithEvent:(UIEvent *)event

建立基础UIViewController,让我们称之为BaseViewController并添加以下内容:

-(void)remoteControlReceivedWithEvent:(UIEvent *)event {    

    if (event.type == UIEventTypeRemoteControl) {

        switch(event.subtype) {
            case UIEventSubtypeRemoteControlTogglePlayPause:

                break;
            case UIEventSubtypeRemoteControlPlay:

                break;
            case UIEventSubtypeRemoteControlPause:

                break;
            case UIEventSubtypeRemoteControlStop:

                break;
            default:
                break;

        }
    }
    else{
        [super remoteControlReceivedWithEvent:event];
    }
}

此外,您还希望在基类中包含以下内容,以便您可以实际接收任何远程控制事件。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    UIApplication *application = [UIApplication sharedApplication];
    if ([application respondsToSelector:@selector(beginReceivingRemoteControlEvents)]) {
        [application beginReceivingRemoteControlEvents];
    }

    [self becomeFirstResponder];

}

最后让所有UIViewControllers成为BaseViewController的子类。