Pregunta

En la actualidad, cuando la salida de vídeo a una pantalla externa desde el iPad, que mueve los controles y todas a la pantalla externa. Esto no es útil porque no se puede controlar la película, mientras que los controles están en la pantalla externa. Éstos son algunos fragmentos de código de nuestra aplicación.

Este es el código de configuración de la pantalla: (A método llamado 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];
}

Se trata de la creación de la MPMoviePlayerViewController:

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

También tengo una MPMoviePlayerController y también han intentado esto:

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

En la actualidad con la segunda aplicación, añadir tanto al self.view y la external_window se mostrará el video en la pantalla externa (con los controles) y las miradas pantalla del iPad como no pasa nada que no sea la desaparición de la barra de estado cuando la película los controles se desvanecen. También he intentado añadir el moviePlayer.view sólo self.view y que va a parpadear algo en el sentido de "mostrar contenido en la televisión" mensaje antes de que se procede a reproducir la película en el IPAD. Actualmente el video se pone en marcha pulsando un botón. Utilizando el simulador y la opción de salida de TV, ya que es más fácil de depurar. Xcode versión 3.2.5 y la última versión de iOS en un dispositivo real. ¿Cómo se puede arreglar esto? Debe comportarse como la aplicación de YouTube en el iPad.

¿Fue útil?

Solución

La forma más fácil de hacerlo es con un UIWebView. Se detectará automáticamente el monitor externo y mostrar el vídeo allí, manteniendo los controles de reproducción estándar en el dispositivo.

A continuación, algunos ejemplos de código:

- (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]];      
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top