2011-01-06 8 views
3

Momentan werden beim Ausgeben von Video auf ein externes Display vom iPad die Bedienelemente und alle auf das externe Display bewegt. Dies ist nicht nützlich, da Sie den Film nicht steuern können, während sich die Steuerelemente auf dem externen Display befinden. Hier sind einige Code-Snippets aus unserer App. Wie kann ich Video auf dem externen Display mit den Kontrollen auf dem iPad ausgeben?

ist die Bildschirmfläche Setup-Code: (A Methode namens 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]; 
} 

Dies ist die Schaffung des MPMoviePlayerViewController:

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

Ich habe auch einen MPMoviePlayerController und habe auch schon versucht, diese:

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

Derzeit mit der 2. Implementierung, addi Sowohl in der Selbstansicht als auch im externen Fenster wird das Video auf dem externen Bildschirm (mit Steuerelementen) angezeigt und der iPad-Bildschirm sieht aus, als ob nichts passiert, außer dass die Statusleiste verschwindet, wenn der Film ausgeblendet wird. Ich habe auch versucht, die moviePlayer.view nur zu self.view hinzufügen und es wird etwas flackern, um die Wirkung von "Inhalt im Fernsehen anzeigen" Nachricht, bevor es dann fortfährt, den Film auf dem iPad zu spielen. Momentan wird das Video per Knopfdruck gestartet. Verwenden des Simulators und der TV-Out-Option, da es einfacher zu debuggen ist. Xcode Version 3.2.5 und die neueste Version von iOS auf einem tatsächlichen Gerät. Wie kann das behoben werden? Es sollte sich wie die Youtube-App auf dem iPad verhalten.

Antwort

2

Der einfache Weg dazu ist mit einem UIWebView. Es erkennt automatisch den externen Monitor und zeigt das Video dort an, während die Standard-Wiedergabesteuerung auf dem Gerät bleibt.

Hier ist ein Beispielcode:

- (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]];  
} 
+0

Brilliant, genau das, was ich suchte. Obwohl es schade ist, dass niemand vor 6 Monaten eine Lösung gepostet hat, lol. – Kaili

+0

dies funktioniert nicht in iOS9 – Chris

Verwandte Themen