Question

À l'heure actuelle lors de la sortie vidéo à un écran externe de l'iPad, il déplace les commandes et tous à l'écran externe. Ce n'est pas utile, car vous ne pouvez pas contrôler le film tandis que les commandes sont sur l'écran externe. Voici quelques extraits de code de notre application.

Ceci est le code de configuration d'écran: (Une méthode appelée setupExternalScreen)

if ([[UIScreen screens] count] > 1) {
    external_disp = [[UIScreen screens] objectAtIndex:1];
    [external_disp setCurrentMode:[[external_disp availableModes] objectAtIndex:0]];
    self.external_window = [[UIWindow alloc] init];
    external_window.screen = external_disp;
    [external_window makeKeyAndVisible];
}

Ceci est la création du MPMoviePlayerViewController:

[self setupExternalScreen]; //Calls the code above
MPMoviePlayerViewController *mpv = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[self presentMoviePlayerViewControllerAnimated:mpv];

J'ai aussi un MPMoviePlayerController et ont également essayé ceci:

self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerDidFinish:) name:MPMoviePlayerDidExitFullscreenNotification object:[self moviePlayer]];
[self.view addSubview:moviePlayer.view];

if (!external_window) {
    [self setupExternalScreen];
}
if (external_window) {
    [external_window addSubview:moviePlayer.view];
} 
[moviePlayer setControlStyle:MPMovieControlStyleDefault];

[moviePlayer setFullscreen:YES];// animated:NO];

if (![moviePlayer isPreparedToPlay]) [moviePlayer prepareToPlay];
[moviePlayer play];

À l'heure actuelle avec la 2me, en ajoutant à la fois la self.view et l'external_window il affichera la vidéo sur l'écran externe (avec des commandes) et l'aspect de l'écran iPad comme rien ne se passe autre que la disparition de la barre d'état lorsque le film contrôles effacent. J'ai aussi essayé d'ajouter le moviePlayer.view juste self.view et clignoteront quelque chose à l'effet du message « sur l'affichage du contenu TV » avant qu'il procède alors à lire le film sur l'iPad. Actuellement, la vidéo est lancée en appuyant sur un bouton. En utilisant le simulateur et l'option TV comme il est plus facile à déboguer. Version Xcode 3.2.5 et la dernière version d'iOS sur un périphérique réel. Comment cela peut-il être fixé? Il doit se comporter comme l'application YouTube sur iPad.

Était-ce utile?

La solution

La façon facile de le faire est avec un UIWebView. Il détecte automatiquement le moniteur externe, et afficher la vidéo là-bas, tout en gardant les commandes de lecture standard sur l'appareil.

Voici quelques exemples de code:

- (void)embedInternalVideo:(CGRect)frame {
    NSBundle *bundle = [NSBundle mainBundle];
    NSString* html = @"<video src=\"sample_iPod.m4v\" width=640 height-480 controls autoplay></video>";
    if (videoView == nil) {  
        videoView = [[UIWebView alloc] initWithFrame:frame];  
        [self.view addSubview:videoView];  
    }  
    [videoView loadHTMLString:html baseURL:[bundle resourceURL]];      
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top