2016-04-20 19 views
0

ボタンを追加して、音声出力をApplle TVに送信したいと考えています。私は以下のコードを使用しますが、動作しません。私が間違っていることを助けることができますか?Apple TVにオーディオ出力を送信する方法は?

まず、私はその後、私はアップルにオーディオを切り替えるため、このメソッドを使用しAVAudioSessionCategorySoloAmbient(iOSの7と8のために接続したBluetooth機器を検索するために、私はこれをしなければならない。)

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

するAVAudioSessionのカテゴリを変更テレビ

- (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:iphoneは彼のApple TVに接続されているが、入力の

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

サイズは1です。私のサイズは2

答えて

0

に等しくない場合、なぜあなたは、あなたのオーディオのAirPlayを使って送信理解していない https://spin.atomicobject.com/2012/04/23/ios-mirroring-and-programmatic-airplay-selection/

+0

おかげでこのリンクを訪問するが、私は自分のコードのためのアドバイスを必要としてください、それはブルートゥース、earPeace、iphoneを扱います、iPhoneのスピーカーが、なぜ空気が再生されません。 – ondermerol

関連する問題