2

我正在使用 iPhone 4S 玩 AirPlay,但遇到了一些麻烦。我已经将我的 Apple TV 2 更新到了最新版本(我认为是 4.4.3?我忘记了,它在另一个房间,我懒得去检查)并且我在使用 Xcode 4.2 Build 4D199 时在我的 4S 上安装了 iOS 5.0 . 我编写了一个简单的 UIView 应用程序,它尝试在可用时在第二个屏幕上绘图。这是我的 viewDidLoad 中的内容:

- (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 Out 时,此代码在模拟器中工作,尽管如果我在调试时启用 TV Out,它总是崩溃。在模拟器的硬件菜单中启用 TV out 后,我​​必须重新启动应用程序。重新启动时,我在第二个屏幕上看到第二个屏幕 UILabel。在 iPhone 4S 上,如果我使用运行任务栏中的 AirPlay 控件一直到左侧启用 AirPlay,我才能完成这项工作。您会注意到,我在启动时向视图添加了一个 MPVolumeView 组件,我尝试使用它来连接我的 Apple TV,但无济于事。

如果我使用应用程序内 MPVolumeView,我可以成功断开与 Apple TV 的连接,但是当我再次使用它并选择 Apple TV 重新连接时,我没有收到 UIScreenDidConnectNotification。我再次看到第二个屏幕的唯一时间是启用镜像。如果我连接任何一个 AirPlay 控件,我只会计算 1 个屏幕并且永远不会收到通知。此外,每次启用镜像时,我都会在控制台日志中看到:

Could not find mapped image ColorOnGrayShadow_AirPlay.png

这似乎被打破了,我想知道其他人在这方面的经验。当我学习新事物时,我会继续玩弄和更新这篇文章。

4

1 回答 1

5

MPVolumeView 的路由菜单只能控制进入 AppleTV 的音频流。这是您尝试做的一个工作示例: https ://github.com/quellish/AirplayDemo/

“ColorOnGrayShadow_AirPlay.png”日志消息对于 iOS 5 来说是正常的。不幸的是,使用 Airplay 连接的 AppleTV 作为外部显示器需要镜像,并且您无法从应用程序内部激活它。用户必须遵循以下说明:

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

于 2012-01-27T00:57:29.287 回答