2011-11-26 72 views
2

我正在使用iPhone 4S玩AirPlay,我遇到了一些麻煩。我已將Apple TV 2更新至最新版本(4.4.3我認爲?我忘記了,它在另一個房間中,我懶得檢查),並且我在使用Xcode 4.2 Build 4D199時在我的4S上安裝了iOS 5.0 。我寫了一個簡單的UIView應用程序,試圖在可用時在第二個屏幕上繪製。下面是我在viewDidLoad中:如何使用iOS 5+ AirPlay作爲第二個屏幕

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.view addSubview:[[MPVolumeView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]]; 
    NSLog(@"Registering for screen connect events..."); 
    // Do any additional setup after loading the view, typically from a nib. 
    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(screenDidConnect:) 
    name:UIScreenDidConnectNotification 
    object:nil]; 
    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(screenDidDisconnect:) 
    name:UIScreenDidDisconnectNotification 
    object:nil]; NSLog(@"There are %i connected screens.", ScreenCount); 
    if (ScreenCount > 1) { 
     self.secondWindow = [self myScreenInit:[[UIScreen screens] objectAtIndex:1]]; 
     [self.secondWindow addSubview:[self createFullscreenViewForText:@"Second window" withSize:CGSizeMake(640, 480)]]; 
    } 
} 

這段代碼在模擬器中工作時,我讓TV輸出,雖然它總是崩潰,如果我讓TV輸出,而在調試。在模擬器的硬件菜單中啓用TV之後,我必須重新啓動應用程序。在重新啓動時,我在第二個屏幕上看到第二個屏幕UILabel。在iPhone 4S上,只有在運行任務欄中的AirPlay控件啓用AirPlay到左側時,我才能完成此項工作。你會注意到我已經在啓動時添加了一個MPVolumeView組件,我試圖用它來連接到我的Apple TV無濟於事。

如果我使用應用程序MPVolumeView,我可以成功從Apple TV斷開連接,但是當我再次使用它並選擇Apple TV重新連接時,我不會收到UIScreenDidConnectNotification。我再次看到第二個屏幕的唯一時間是啓用鏡像時。如果我與AirPlay控制器連接,則只能計數1個屏幕,並且不會收到通知。此外,每當我讓我鏡像看到在控制檯日誌:

Could not find mapped image ColorOnGrayShadow_AirPlay.png 

這似乎被打破,我想知道別人的經驗一直在這個領域。當我學習新事物時,我會繼續玩弄並更新這篇文章。

+0

我在與MPVolumeView不給另一個屏幕完全相同的問題。我有一個問題讓內容進入第二臺顯示器,但事實證明,這是因爲我沒有保留窗口對象。不過,如果不需要使用鏡像來實現這個功能,那就太好了。 – Jeff

+0

嘿懸崖 - 任何想法如何控制另一個屏幕?我不知道如何做到這一點。謝謝! – TommyG

+0

如果您的意思是通過AirPlay控制第二個屏幕,那麼使用AirPlay的API訪問第二個屏幕就是一個問題。你有一個參考它,然後你可以繪製或放置任何你想要的東西。 – Cliff

回答

5

MPVolumeView的路由菜單隻能控制去往AppleTV的音頻流。 這裏是你正在嘗試做一個工作示例: https://github.com/quellish/AirplayDemo/

的「ColorOnGrayShadow_AirPlay.png」日誌信息是正常的iOS 5.用的Airplay連接AppleTV的爲外部顯示器遺憾的是需要鏡像,你可以」 t從你的應用程序內部激活。用戶必須遵循以下步驟:

http://support.apple.com/kb/TS4085

+0

謝謝你。我通過試驗和錯誤學到了同樣的東西。事實上,用戶必須手動啓用鏡像才能工作。希望未來的更新能夠解決不明顯的問題。 – Cliff

+0

如果您在文檔上的bugreporter.apple.com上輸入簡短的增強請求,他們將能夠優先更新文檔以使其更清晰,以便需要鏡像。對這個問題提出的要求越多越好。 – quellish

+0

@quellish感謝您提供可運行的AirplayDemo。 – tobinjim

相關問題