gpt4 book ai didi

ios - iOS 是否提供任何功能来检测外部屏幕是 'hardwired' TV Out/HDMI 还是 'network' Airplay 显示器/设备?

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

我已经搜索了一段时间,想找到一种方法来确定 iOS 外部屏幕是通过电缆连接还是无线连接,但找不到任何明显的方法。

我看过非官方的 AirPlay 规范 HERE ,但看不到任何明显的检测方法。有谁知道这是否可以使用合法/“公共(public)”API 来完成。

最佳答案

是的,确实有办法。

在您应用的某处,创建一个 MPVolumeView 实例。在某些实例变量中坚持。您不必将它作为 subview 添加到任何东西,它只需要存在即可。

然后像这样订阅 MPVolumeViewWirelessRouteActiveDidChangeNotification:

  [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleWirelessRouteActiveDidChangeNotification:)
name:MPVolumeViewWirelessRouteActiveDidChangeNotification
object:nil];

添加这些方法来了解外部显示器的状态:

- (BOOL)isAirPlayConnected
{
return _volumeView.isWirelessRouteActive;
}

- (BOOL)isAirPlayMirroringActive
{
if ([self isAirPlayConnected]) {
NSArray *screens = [UIScreen screens];

if ([screens count] > 1) {
return [screens[1] mirroredScreen] == [UIScreen mainScreen];
}
}

return NO;
}

- (BOOL)isAirPlayPlaybackActive
{
return [self isAirPlayConnected] && ![self isAirPlayMirroringActive];
}

- (BOOL)isExternalPlaybackActive
{
if ([self isAirPlayPlaybackActive]) {
return YES;
} else {
NSArray *screens = [UIScreen screens];

if ([screens count] > 1) {
return [screens[1] mirroredScreen] != [UIScreen mainScreen];
}
}

return NO;
}

此外,您还可以检查 UIScreenDidConnectNotificationUIScreenDidDisconnectNotification 通知。有了所有这些,您就可以判断自己是否已连接到 AirPlay、AirPlay 镜像是否处于事件状态、AirPlay 播放(而非镜像)是否处于事件状态,或者您是否正在使用任何没有镜像的外部屏幕。

关于ios - iOS 是否提供任何功能来检测外部屏幕是 'hardwired' TV Out/HDMI 还是 'network' Airplay 显示器/设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986176/

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