Поставяне на видео на пауза при applicationWillResignActive и възпроизвеждане при applicationDidBecomeActive

Добре, моят код възпроизвежда филм на цял екран без контроли за потребителя (по същество кинематографичен). След като филмът приключи, моето NSNotification се задейства и зарежда изглед.

Въпреки това, когато потребителят натисне бутона за начало по време на един от тези филми, той спира, но няма начин да го накарам да възпроизведе отново, тъй като премахнах контролите. Опитах се да поставя [playerController play] и [playerController shouldAutoplay] в моя AppDelegate.m под applicationDidBecomeActive, но не е дефиниран там, така че не знае какво е playerController.

Може ли някой да ми помогне правилно да поставя на пауза и да пускам този видеоклип, ако потребител получи текст или натисне бутона за начало?

-(IBAction)playMovie:(id)sender {
NSString *movieUrl = [[NSBundle mainBundle] pathForResource:@"Initiate" ofType:@"m4v"]; playerController = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieUrl]];

[playerController.view setFrame: self.view.bounds];    
[self.view addSubview:playerController.view];
playerController.controlStyle = MPMovieControlStyleNone;
[playerController shouldAutoplay];
[playerController play];


[[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(playbackFinished:) 
                                           name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:playerController];
}
- (void)playbackFinished:(NSNotification*) notification {
 playerController = [notification object];
 [[NSNotificationCenter defaultCenter] 
 removeObserver:self
 name:MPMoviePlayerPlaybackDidFinishNotification
 object:playerController];


ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:viewController animated:YES];

РЕДАКТИРАНЕ:

Заглавка

//ViewController.h

@interface ViewController : UIViewController {
MPMoviePlayerController *playerController;
}

Внедряване

//ViewController.m
playerController = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieUrl]];

    AppDelegate *sharedAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    sharedAppDelegate.pointer = playerController;

person Sam    schedule 23.11.2011    source източник


Отговори (1)


когато внедрявате вашия плейър, изпратете всички необходими указатели на делегата на приложението:

AppDelegate *sharedAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
sharedAppDelegate.yourPointer = yourPlayer;

използвайте този метод от appDelegate.m:

- (void)applicationWillResignActive:(UIApplication *)application
{
    /*
     Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
     Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
     */
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    /*
     Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
     */
}
person SentineL    schedule 23.11.2011
comment
Как да направя връзката в заглавния файл на App Delegate? - person Sam; 30.11.2011
comment
Имам предвид показалец. точно както го направихте във вашия контролер за изглед, където вашият плейър стартира, но не е необходимо да го инициирате в AppDelegate - person SentineL; 30.11.2011
comment
Аз съм много нов в програмирането и не съм сигурен как да приложа това. Не знам какво да поставя в AppDelegate.h/m. Изпратих указателите към AppDelegate в моя Viewcontroller.m - person Sam; 30.11.2011
comment
Добре, редактирах публикацията си, за да покажа моя ViewController.h/m. Сега не съм сигурен какво да поставя в моя AppDelegate, за да направи нещо като [playerController stop]; - person Sam; 30.11.2011
comment
добавете MPMoviePlayerController *playerController; към AppDelegate.h. След това във вашия ViewController, точно след като стартирате MoviePlayerController: sharedAppDelegate.playerController = self.playerController;. След това направете каквото съжалявам в отговор. - person SentineL; 30.11.2011
comment