无法处理背景音频的远程控制事件

时间:2011-05-27 19:06:14

标签: ios audio background

在我的音频播放器的视图控制器中,我添加了这个:

- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}

- (void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
    [self resignFirstResponder];
}

- (BOOL)canBecomeFirstResponder {
    return YES;
}

这会将播放器控件中的图标从iPod图标切换到我自己的应用程序,它还会将小回放图标放在状态栏中。

接下来,我将此添加到我的视图控制器以处理远程事件:

- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
    NSLog(@"REMOTE EVENT!");
    switch (event.subtype) {
        case UIEventSubtypeRemoteControlTogglePlayPause:
            [streamer pause];
            break;
        case UIEventSubtypeRemoteControlPlay:
            [streamer start];
            break;
        case UIEventSubtypeRemoteControlPause:
            [streamer pause];
            break;
        case UIEventSubtypeRemoteControlStop:
            [streamer stop];
            break;
        default:
            break;
    }
}

然而,这从未被调用过。我试着在应用程序运行时调出播放控件,我尝试回到主屏幕并点击一些播放控件,然后尝试了我的耳塞控件。一切都没有运气。

有没有人对我可能出错的地方有任何指示?

感谢。

3 个答案:

答案 0 :(得分:5)

你已经实现了错误的方法:而不是 - (void)viewWillAppear:(BOOL)动画它应该是 - (void)viewDidAppear:(BOOL)动画。

答案 1 :(得分:1)

之前我遇到过这个问题并发现在我的问题中,这是因为我的视图是一个子视图,父母正在捕捉远程事件。我将从AppDelegate开始并实现该方法,看看是否有任何东西被发送到AppDelegate,然后从那里追踪它。有可能是一个视图或viewController捕获事件而不是传递它。

答案 2 :(得分:0)

您确定要设置音频会话吗?使用AVAudioSession并在成为第一响应者之前将类别设置为AVAudioSessionCategoryPlayback。