OK, hay muy pocas opciones para emular el video splash en iOS. Todo lo que podemos hacer es esperar hasta que la aplicación esté completamente cargada y luego crear el Reproductor multimedia y cargar el video en él.Emulando el video saliente en la aplicación iOS
he implementado con el código siguiente:
-(void) moviePlayBackDidFinish:(NSNotification*)notification
{
NSLog(@"Intro video stopped");
[mMoviePlayer release];
}
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NSURL* mMovieURL;
NSBundle *bundle = [NSBundle mainBundle];
if(bundle != nil)
{
NSString *moviePath = [bundle pathForResource:@"intro" ofType:@"mp4"];
if (moviePath)
{
mMovieURL = [NSURL fileURLWithPath:moviePath];
[mMovieURL retain];
}
}
mMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:mMovieURL];
[mMovieURL release];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:mMoviePlayer];
mMoviePlayer.controlStyle = MPMovieControlStyleNone;
[mMoviePlayer.backgroundView addSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Splash/background.png"]] autorelease]];
mMoviePlayer.scalingMode = MPMovieScalingModeFill;
[window addSubview:mMoviePlayer.view];
[mMoviePlayer setFullscreen:YES animated:NO];
[window makeKeyAndVisible];
[mMoviePlayer play];
<... other stuff ...>
}
Mi video es sólo 1 MB. Pero este código hace algo diferente de lo que me gustaría ver:
- En primer lugar, el usuario puede ver una pantalla de bienvenida estática durante unos segundos;
- Luego aparece una pantalla negra durante 1 o 2 segundos. Creo que esto está sucediendo porque el reproductor multimedia está cargado.
- Se inicia el video.
- Carga de la interfaz principal.
Como usted entiende, no me gusta la pausa con pantalla negra: se ve feo.
Por lo que puedo ver en el registro de mi consola, el problema es que el reproductor de medios está esperando hasta que el controlador de vista principal esté completamente cargado.
Algunas palabras sobre la vista principal: estoy escribiendo una aplicación para iPad y la vista principal consiste en varias subvistas con varias imágenes. Cada imagen y cada subvista en la vista principal carga algunos datos del servicio web de Internet a través de ASIHTTPRequest lib.
creo que Media Player está esperando para todas las conexiones iniciales a fin y sólo entonces se está empezando el video ...
¿Cómo puedo forzar el video para jugar antes de cargar vista principal? ¿O quizás puedo retrasar la carga del XIB principal?
Gracias, creo que es una mejor solución :) Aunque no puedo entender por qué el jugador espera todas las conexiones ... – WASD42