Domanda

Al momento, quando l'output video a un display esterno da iPad, si muove i controlli e tutto per il display esterno. Questo non è utile perché non si può controllare il film mentre i controlli sono sul display esterno. Ecco alcuni frammenti di codice da nostra app.

Questo è il codice di installazione dello schermo: (un metodo chiamato 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];
}

Questa è la creazione del MPMoviePlayerViewController:

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

Ho anche un MPMoviePlayerController e provato anche questo:

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

Al momento con il 2 ° implementazione, aggiungendo sia al self.view e external_window mostrerà il video sul display esterno (con controlli) e gli sguardi dello schermo iPad come non stia succedendo niente altro che la barra di stato scompare quando il film controlli fade out. Ho anche provato ad aggiungere il moviePlayer.view ad appena self.view e lampeggerà qualcosa per l'effetto di "visualizzazione di contenuto in tv" messaggio prima che poi procede a riprodurre il filmato sul iPad. Attualmente il video viene lanciato premendo un tasto. Utilizzando il simulatore e l'opzione TV Out come è più facile eseguire il debug. Xcode versione 3.2.5 e l'ultima versione di iOS su un dispositivo vero e proprio. Come si puo aggiustare? Dovrebbe comportarsi come l'app YouTube su iPad.

È stato utile?

Soluzione

Il modo più semplice per farlo è con un UIWebView. Si rileva automaticamente il monitor esterno, e visualizzare il video lì, mantenendo i controlli di riproduzione standard sul dispositivo.

Ecco alcuni esempi di codice:

- (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]];      
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top