2016-04-20 75 views
0

我想添加一個按鈕將音頻輸出發送到Applle TV。我使用下面的代碼,但它不起作用。你能幫助我做錯什麼嗎?如何將音頻輸出發送到Apple TV?

首先我改變AVAudioSession類別是AVAudioSessionCategorySoloAmbient(用於針對iOS 7和8搜索所連接的藍牙設備,我必須這樣做。)

AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
[audioSession setCategory:AVAudioSessionCategorySoloAmbient error:&err]; 

然後我用這個方法用於切換音頻蘋果電視

- (BOOL)switchAirPlay:(BOOL)onOrOff 
{ 
    NSError* audioError = nil; 
    BOOL changeResult = NO; 
    if (onOrOff) { 
     self.bipAudioSessionManagerDeviceCurrent = Device_AppleTV; 

     AVAudioSessionPortDescription* airplayPort = [self airplayAudioDevice]; 
     changeResult = [[AVAudioSession sharedInstance] setPreferredInput:airplayPort error:&audioError]; 
    } else { 
     AVAudioSessionPortDescription* airplayPort = [self airplayAudioDevice]; 
     changeResult = [[AVAudioSession sharedInstance] setPreferredInput:airplayPort error:&audioError]; 
    } 

    if (audioError) { 
     DDLogError(@"Apple TV error, audioSession: %@ %zd %@", [audioError domain], [audioError code], [[audioError userInfo] description]); 
    } 

    if (!changeResult) { 
     DDLogError(@"Apple TV error, audioSession: %@ %zd %@", [audioError domain], [audioError code], [[audioError userInfo] description]); 
    } 

    return changeResult; 
} 

- (AVAudioSessionPortDescription*)airplayAudioDevice { 
    NSArray* builtinRoutes = @[AVAudioSessionPortAirPlay]; 
    return [self audioDeviceFromTypes:builtinRoutes]; 
} 

- (AVAudioSessionPortDescription*)audioDeviceFromTypes:(NSArray*)types { 
    NSArray* routes = [[AVAudioSession sharedInstance] availableInputs]; 
    for (AVAudioSessionPortDescription* route in routes) { 
     if ([types containsObject:route.portType]) { 
      return route; 
     } 
    } 
    return nil; 
} 

編輯1:
根據https://developer.apple.com/library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionBasics/AudioSessionBasics.html的AVAudioSessionCategoryAmbient類支持AirPlay的文檔。

編輯2:

NSArray *inputs = [[AVAudioSession sharedInstance] availableInputs]; 

的輸入大小爲1,雖然iPhone連接到他的Apple TV。我不明白爲什麼大小不等於2

回答

相關問題