当在 MPMoviePlayerController 中启用 AirPlay 时,它会显示文本“此视频正在设备名称 上播放”。将 AirPlay 与 AVPlayer 一起使用时,是否可以通过编程方式获取设备名称?
最佳答案
从 iOS7 开始,currentRoute 的 AudioToolbox API 已弃用:
Apple 改为在 AudioSession 中为您提供 currentRoute API,这允许检索它的端口信息以及以一种很好的方式收听 audioRouteChangeNotification:
NSString* airplayName = [self activeAirplayOutputRouteName];
if (airplayName) {
//airplay is active
}
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioRouteHasChangedNotification:) name:AVAudioSessionRouteChangeNotification object:[AVAudioSession sharedInstance]];
(你要获取的是audioSession.currentRoute
的portDescription
的portType
):
- (NSString*)activeAirplayOutputRouteName
{
AVAudioSession* audioSession = [AVAudioSession sharedInstance];
AVAudioSessionRouteDescription* currentRoute = audioSession.currentRoute;
for (AVAudioSessionPortDescription* outputPort in currentRoute.outputs){
if ([outputPort.portType isEqualToString:AVAudioSessionPortAirPlay])
return outputPort.portName;
}
return nil;
}
- (void)audioRouteHasChangedNotification:(NSNotification*)notification
{
//do something
}
关于ios - 使用 AVPlayer 获取 AirPlay 设备的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044894/