我正在使用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
这似乎被打破,我想知道别人的经验一直在这个领域。当我学习新事物时,我会继续玩弄并更新这篇文章。
我在与MPVolumeView不给另一个屏幕完全相同的问题。我有一个问题让内容进入第二台显示器,但事实证明,这是因为我没有保留窗口对象。不过,如果不需要使用镜像来实现这个功能,那就太好了。 – Jeff
嘿悬崖 - 任何想法如何控制另一个屏幕?我不知道如何做到这一点。谢谢! – TommyG
如果您的意思是通过AirPlay控制第二个屏幕,那么使用AirPlay的API访问第二个屏幕就是一个问题。你有一个参考它,然后你可以绘制或放置任何你想要的东西。 – Cliff