gpt4 book ai didi

iOS 隔空播放 : my app is only notified of an external display when mirroring is ON?

转载 作者:可可西里 更新时间:2023-11-01 03:42:38 25 4
gpt4 key购买 nike

我正在尝试在我的应用中启用 AirPlay 支持。我不是在做视频;我想将外接显示器用作“第二显示器”。

这是我的问题:如果我从 AirPlay 按钮中选择“AppleTV”,我的应用程序不会收到通知。我的应用程序唯一一次收到通知是当我离开我的应用程序时,转到操作系统级别的 AirPlay 按钮,在那里选择“AppleTV”并打开镜像。如果我关闭镜像,我的应用就会被告知外部显示器已消失。

所以:

  1. 为什么我的应用程序在我选择外部显示器时没有收到通知在我的应用程序中?
  2. 为什么我的应用会收到通知打开镜像时的外部显示器...而不是之前?我显然误会了什么,但打开镜像似乎应该通知我的应用程序外部显示器已消失(而不是现在可用,因为操作系统现在应该使用该外部显示器进行镜像。)

下面的代码示例。在此先感谢您的帮助!

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.

// Is there already an external screen?
if (UIScreen.screens.count > 1)]
{
[self prepareExternalScreen:UIScreen.screens.lastObject];
}

// Tell us when an external screen is added or removed.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(externalScreenDidConnect:) name:UIScreenDidConnectNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(externalScreenDidDisconnect:) name:UIScreenDidDisconnectNotification object:nil];

self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;

// Add AirPlay control to view controller.
MPVolumeView* airplayButtonView = [[MPVolumeView alloc] init];
airplayButtonView.frame = CGRectMake(300, 300, 50, 50);
airplayButtonView.backgroundColor = [UIColor blackColor];
airplayButtonView.showsVolumeSlider = NO;
airplayButtonView.showsRouteButton = YES;

[self.viewController.view addSubview:airplayButtonView];


[self.window makeKeyAndVisible];

return YES;
}

#pragma mark - External screen handling

- (void)externalScreenDidConnect:(NSNotification*)notification
{
[self prepareExternalScreen:notification.object];
}

- (void)externalScreenDidDisconnect:(NSNotification*)notification
{
// Don't need these anymore.
self.externalWindow = nil;
}

- (void)prepareExternalScreen:(UIScreen*)externalScreen
{
NSLog(@"PREPPING EXTERNAL SCREEN.");
self.viewController.view.backgroundColor = [UIColor blueColor];
CGRect frame = externalScreen.bounds;
self.externalWindow = [[UIWindow alloc] initWithFrame:frame];
self.externalWindow.screen = externalScreen;
self.externalWindow.hidden = NO;
self.externalWindow.backgroundColor = [UIColor redColor];
}

最佳答案

不幸的是,这是正确的。辅助显示器(播放屏幕)仅适用于镜像。

这是一个应用程序,展示了如何实现它: https://github.com/quellish/AirplayDemo

查看您的代码,当用户进入播放菜单并在您的应用处于事件状态时打开镜像时,您应该收到 UIScreenDidConnectNotification。 “Airplay Button”,无论是 MPVolumeView 还是电影 Controller ,都不控制镜像(因此不控制外部显示功能)。不幸的是,视频和音频输出与镜像是分开的,并且只能使用系统范围的镜像 UI 打开或关闭镜像。

底线:您无法从您的应用内打开 AirPlay 屏幕。

关于iOS 隔空播放 : my app is only notified of an external display when mirroring is ON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9023806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com