1

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];

何が問題になるのか教えてください。UIEventSubtypeRemoteControlNextTrackまたは、通知とUIEventSubtypeRemoteControlPreviousTrackイベントを実行できる例またはサンプルコードを教えてください。

4

1 に答える 1

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

お役に立てれば。

于 2012-07-05T11:54:24.270 に答える