2011-01-06 52 views
3

當前從iPad輸出視頻到外部顯示器時,它將控件和全部控件移到外部顯示器。這是沒有用的,因爲當控件位於外部顯示器上時無法控制電影。這裏是我們的應用程序的一些代碼片段。如何使用iPad上的控件在外部顯示器上輸出視頻?

這是屏幕設置代碼:(稱爲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]; 
} 

這是MPMoviePlayerViewController的創建:

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

我也有一個的MPMoviePlayerController並且也已經嘗試這樣的:

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

當前在第二個實現中,addi同時在self.view和external_window中,它將在外部顯示器上顯示視頻(帶有控件),iPad屏幕看起來像沒有任何事情發生,除了當電影控件淡出時狀態欄消失。我也嘗試將moviePlayer.view添加到self.view中,然後在iPad上播放電影之前,它會閃爍顯示「在電視上顯示內容」消息的效果。目前該視頻是通過按下按鈕啓動的。使用模擬器和TV Out選項更容易調試。 Xcode版本3.2.5和實際設備上的最新iOS版本。這怎麼解決?它的行爲應該像iPad上的YouTube應用程序一樣。

回答

2

執行此操作的簡單方法是使用UIWebView。它會自動檢測外接顯示器,並在那裏顯示視頻,同時保持設備上的標準播放控制。

下面是一些示例代碼:

- (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

輝煌,正是我一直在尋找。儘管6個月前沒有其他人發佈解決方案,這太糟糕了。 – Kaili 2011-07-01 20:38:43

相關問題