MPMoviePlayerViewController становится черным, когда входит в фон - PullRequest
5 голосов
/ 01 декабря 2011

У меня проблема с MPMoviePlayerViewController, когда приложение переходит в фоновый режим, а затем я снова запускаю его или перехожу в другое представление. У меня есть фильм, который играет на заднем плане моего меню, вот мой код:

КОД EIDTED:

    -(void)viewDidLoad {
        [self moviePlayer2];
    } 

   - (void) moviePlayer2 {



    NSString *path = [[NSBundle mainBundle] pathForResource:@"cloud" ofType:@"mp4"];
    player = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];
    player.view.userInteractionEnabled = YES;    
    player.moviePlayer.repeatMode = YES;
    player.moviePlayer.scalingMode = MPMovieScalingModeFill;
    player.moviePlayer.controlStyle = MPMovieControlStyleNone;

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(moviePlayBackStateChange:) 
                                                 name:MPMoviePlayerPlaybackStateDidChangeNotification
                                               object:[player moviePlayer]];

     [[player moviePlayer] play];

    [self.view addSubview:player.view]; 

}


-(void) moviePlayBackStateChange: (NSNotification *) note {

    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackStateDidChangeNotification object:[player moviePlayer]];

    [[player moviePlayer] play];

    //[player release];
    NSLog(@"FINISHED");
}

спасибо.

Ответы [ 2 ]

3 голосов
/ 10 декабря 2011

Я думаю, вам может понадобиться добавить коды ниже:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(moviePlayBackStateChange:) 
                                                 name:MPMoviePlayerPlaybackStateDidChangeNotification
                                               object:[player moviePlayer]];

и обработайте состояние фильма в методе moviePlayBackStateChange. Фильм будет приостановлен во время воспроизведения фильма, и приложение войдет в фоновый режим, поэтому необходимо возобновить воспроизведение фильма, как показано ниже, когда приложение вернется из фона. Если нет, фильм будет сохранять состояние паузы. Вот почему ваше приложение становится черным.

[[player moviePlayer] play];

тогда фильм продолжит воспроизводиться. добавление двух методов, которые вы должны вызывать, когда приложение переходит в фоновый режим и возвращается из фона:

-(void) pauseMovieInBackGround
{
   [player moviePlayer] pause];
   [player.view removeFromSuperview];
}
-(void) resumeMovieInFrontGround
{
   [self.view addSubview:player.view];
   [[player moviePlayer] play];
}

Надеюсь, это поможет тебе, парень.

1 голос
/ 01 декабря 2011

Попробуйте изменить это:

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:[player moviePlayer]];
[player release];

На это:

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:[player moviePlayer]];
[movieController.view removeFromSuperview];
[player release];

Проверьте, работает ли это: D

...