我已经看过,但是找不到访问音频输出路线的方法,所以我可以检测音频是否通过AirPlay发出。

这是我在iOS 5.0文档中找到的内容

kAudioSessionOutputRoute_AirPlay

讨论



我找不到获取对kAudioSession_AudioRouteKey_Outputs数组的访问的方法。

谢谢

最佳答案

即使Bassem似乎找到了解决方案,为了完成起见,这还是如何检测当前输出路径是否为AirPlay的方法:

- (BOOL)isAirPlayActive{
    CFDictionaryRef currentRouteDescriptionDictionary = nil;
    UInt32 dataSize = sizeof(currentRouteDescriptionDictionary);
    AudioSessionGetProperty(kAudioSessionProperty_AudioRouteDescription, &dataSize, &currentRouteDescriptionDictionary);
    if (currentRouteDescriptionDictionary) {
        CFArrayRef outputs = CFDictionaryGetValue(currentRouteDescriptionDictionary, kAudioSession_AudioRouteKey_Outputs);
        if (outputs) {
            if(CFArrayGetCount(outputs) > 0) {
                CFDictionaryRef currentOutput = CFArrayGetValueAtIndex(outputs, 0);
                CFStringRef outputType = CFDictionaryGetValue(currentOutput, kAudioSession_AudioRouteKey_Type);
                return (CFStringCompare(outputType, kAudioSessionOutputRoute_AirPlay, 0) == kCFCompareEqualTo);
            }
        }
    }

    return NO;
}

请记住,您必须#import <AudioToolbox/AudioToolbox.h>并链接到AudioToolbox框架。

10-06 09:00