如何在iOS中使用来自应用程序(而非控制面板)的AirPlay进行屏幕镜像?

时间:2014-04-29 05:24:11

标签: ios objective-c avaudioplayer airplay mpvolumeview

我正在使用MPVolumeView来显示AirPlay按钮。我需要通过镜像音频向Apple TV展示自定义壁纸。音频在Apple TV上正常播放,但壁纸图片未显示。我正在使用AVAudioController来播放音频。我已经检查了YouTube应用程序,其中屏幕镜像正在从视频播放应用程序中运行。是否可以使用AVAudioController在应用内屏蔽镜像?

帮我解决这个问题。提前谢谢。

4 个答案:

答案 0 :(得分:1)

不幸的是,当您在控制面板中启用AirPlay镜像时,与AirPlay关联的外部显示器将仅变为活动状态(并发布适当的通知)。似乎有no way to enable mirroring programmatically

MPVolumeView可以帮助用户将音频重定向到AirPlay扬声器,它与显示镜像无关。

答案 1 :(得分:0)

您可以在此处找到文档:https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/UsingExternalDisplay/UsingExternalDisplay.html

如果外部显示器可用,基本上是关于创建第二个UIWindow。在那里你可以展示你的壁纸,这是一个图像,我假设。应该很容易通过UIImageView将其放入第二个UIWindow

答案 2 :(得分:0)

您可以使用AVPlayer属性在应用内屏蔽镜像。

该属性是

@property (nonatomic) BOOL usesAirPlayVideoWhileAirPlayScreenIsActive NS_DEPRECATED_IOS(5_0, 6_0);

@property (nonatomic) BOOL usesExternalPlaybackWhileExternalScreenIsActive NS_AVAILABLE_IOS(6_0);.

usesAirPlayVideoWhileAirPlayScreenIsActiveusesExternalPlaybackWhileExternalScreenIsActive的默认值为NO。

如果usesAirPlayVideoWhileAirPlayScreenIsActive为NO,则

allowsAirPlayVideo无效。

如果usesExternalPlaybackWhileExternalScreenIsActive为NO,则allowsExternalPlayback无效。

答案 3 :(得分:0)

您需要侦听屏幕连接/断开连接通知:

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

[center addObserver:self selector:@selector(handleScreenDidConnectNotification:)
               name:UIScreenDidConnectNotification object:nil];
[center addObserver:self selector:@selector(handleScreenDidDisconnectNotification:)
               name:UIScreenDidDisconnectNotification object:nil];

在名称:UIScreenDidConnectNotification中,您将看到您的设备现在有2个屏幕,您可以进行设置。