AirPlay的音频输出路由

Bas*_*sem 5 audio audiotoolbox ios ios5

我看了但是找不到一种方法来访问音频输出路由,所以我可以检测音频是否通过AirPlay传出.

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

kAudioSessionOutputRoute_AirPlay
Run Code Online (Sandbox Code Playgroud)

讨论

这些字符串用作与kAudioSession_AudioRouteKey_Outputs数组关联的字典的kAudioSession_AudioRouteKey_Type键的值.

我找不到访问kAudioSession_AudioRouteKey_Outputs数组的方法.

谢谢

avf*_*avf 5

Even if Bassem seems to have found a solution, for completion's sake, here's how to detect whether the current output route is AirPlay or not:

- (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;
}
Run Code Online (Sandbox Code Playgroud)

Keep in mind that you have to #import <AudioToolbox/AudioToolbox.h> and link against the AudioToolbox framework.