Frage

Zur Zeit, wenn das Video auf einem externen Display vom iPad ausgibt, bewegt sie die Kontrollen und alle auf dem externen Display. Dies ist nicht sinnvoll, weil man den Film nicht kontrollieren kann, während die Kontrollen auf dem externen Display sind. Hier sind einige Code-Schnipsel aus unserer App.

Dies ist der Bildschirm 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 versucht, auch 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];

Zur Zeit der zweiten Implementierung bis hin zum Hinzufügen von sowohl der self.view und der external_window es das Video auf dem externen Display zeigt (mit Kontrollen) und der iPad-Bildschirm sieht aus wie nichts passiert außer der Statusleiste verschwindet, wenn der Film Kontrollen ausgeblendet. Ich habe auch versucht, die moviePlayer.view nur self.view hinzufügen und es wird etwas in der Art von „zeigt Inhalte auf tv“ Nachricht flackern, bevor sie dann den Film auf dem iPad spielen geht. Derzeit wird das Video durch Drücken einer Taste gestartet. Unter Verwendung des Simulators und die TV-Out-Option, da es zu debuggen einfacher ist. Xcode Version 3.2.5 und die neueste Version von iOS auf einem Gerät. Wie kann dieses Problem behoben werden? Es sollte wie die YouTube-App auf dem iPad verhalten.

War es hilfreich?

Lösung

Der einfache Weg, dies zu tun ist mit einem UIWebView. Es wird automatisch den externen Monitor erkennen und dort das Video angezeigt werden, während der Standard-Steuerelemente für die Wiedergabe auf dem Gerät zu halten.

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]];      
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top