我正在开发一款应用程序,通过MPMoviePlayerViewController向播放启用的设备显示10秒预览视频。用户通过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按钮并选择路线时,设备都会为启用该播放设备的设备启用镜像,并且不会根据需要使用MPMoviePlayerController。
关于为什么镜像会默认启用和/或如何在不使用弃用方法的情况下实现上述预期效果的任何想法?
提前致谢。