我正在开发一个应用程序,该应用程序通过 MPMoviePlayerViewController 将 10 秒的预览视频显示到启用了 airplay 的设备。用户通过 MPVolumeView 提供的系统操作表选择一个启用了 airplay 的设备,然后我们启动 MPMoviePlayerViewController。
我可以在 10 秒后以编程方式停止电影播放器,但我还想“强制”更改路线,以便设备不会认为路线仍然处于活动状态(并且用户不需要在以后每次选择其他路线之前先取消选择该路线)。通过使用以下代码,我已经能够最初实现所需的路由更改,假设我有一个指向共享 AVAudioSession 实例的强指针:
NSError *activationError = nil;
AVAudioSession *session = [AVAudioSession sharedInstance];
self.audioSession = session;
[self.audioSession setActive:YES error: &activationError];
[self.audioSession setCategory:AVAudioSessionCategoryPlayAndRecord
error: nil];
[self.audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
[self.audioSession setCategory:AVAudioSessionCategorySoloAmbient
error: nil];
根据 Apple 的文档,我在覆盖 overrideOutputAudioPort 之前将类别设置为 PlayAndRecord,然后尝试将类别 BACK 设置为其默认值(SoloAmbient)。不幸的是,每次用户点击 MPVolumeView 按钮并选择路线时,设备都会为启用了 airplay 的设备打开镜像,并且不会根据需要使用 MPMoviePlayerController。
关于为什么默认打开镜像和/或如何在不使用不推荐使用的方法的情况下实现上述预期效果的任何想法?
提前致谢。