2011-11-26 110 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

相关问题