没有为MPMoviePlayer调用iphone remoteevent通知

时间:2012-06-01 03:30:53

标签: iphone mpmovieplayercontroller mpmovieplayer uievent

我在视图控制器中使用MPMoviePlayer。在viewwillappear我在做

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

但是当我点击播放器上的下一首曲目或之前的曲目按钮时,-(void)remoteControlReceivedWithEvent:(UIEvent *)event无法随时调用。

我还在viewwillappear

中包含了以下代码
NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];

让我知道可能是什么问题?或者给我一个示例或一些示例代码,我们可以通知UIEventSubtypeRemoteControlNextTrackUIEventSubtypeRemoteControlPreviousTrack个事件。

1 个答案:

答案 0 :(得分:-1)

在我的appdelegate中我有..

NSError *myErr;
NSError *activationError;
AVAudioSession *session = [AVAudioSession sharedInstance];

if( [session setCategory:AVAudioSessionCategoryPlayback error:&myErr] ) {
    if( [UIApplication instancesRespondToSelector: @selector (beginReceivingRemoteControlEvents)] ) {
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    }

    [session setDelegate: self];

    if( ![session setActive: YES error: &activationError] ) {
        NSLog(@"Audio Session error %@, %@- unable to setActive", activationError, [activationError userInfo]);
        return false;
    }
}
else    {
    NSLog(@"Audio Session error %@, %@ - unable to setCategory", myErr, [myErr userInfo]);
    return false;
}

然后在我的ViewController中我有..

- (BOOL) canBecomeFirstResponder {
    return YES;
}

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

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

    if (receivedEvent.type == UIEventTypeRemoteControl) {

        switch (receivedEvent.subtype) {

            case UIEventSubtypeRemoteControlPlay:
                break;

            case UIEventSubtypeRemoteControlPause:
                break;

            case UIEventSubtypeRemoteControlStop:
                break;

            case UIEventSubtypeRemoteControlTogglePlayPause:
                break;

            case UIEventSubtypeRemoteControlNextTrack:
                break;

            case UIEventSubtypeRemoteControlPreviousTrack:
                break;

            case UIEventSubtypeRemoteControlBeginSeekingBackward:
                break;

            case UIEventSubtypeRemoteControlEndSeekingBackward:
                break;

            case UIEventSubtypeRemoteControlBeginSeekingForward:
                break;

            case UIEventSubtypeRemoteControlEndSeekingForward:
                break;

            default:
                break;
        }
    }
}

希望这会有所帮助。