34

私のアプリはマイクを使用してオーディオを出力するので、オーディオセッションを再生と録音のカテゴリに設定していますが、これによりAirplayが無効になっているようです。カテゴリをPlayに設定すると、Airplayは出力で正常に機能します(ただし、明らかに入力は機能しません)。

Airplayで出力する必要がある場合に備えて、スピーカーへの出力ルートをオーバーライドしてみましたが、喜びはありませんでした。

何か案は?

4

4 に答える 4

1

Audio Session Programming Guide から › カテゴリの操作 › AirPlay のカテゴリとモードの選択:

特定のカテゴリとモードのみが AirPlay をサポートします。次のカテゴリは、Airplay のミラー化されたバージョンとミラー化されていないバージョンの両方をサポートしています。

  • AVAudioSessionCategorySoloAmbient
  • AVAudioSessionCategoryAmbient
  • AVAudioSessionCategoryPlayback

このAVAudioSessionCategoryPlayAndRecordカテゴリは、ミラー化された Airplay のみをサポートします。

于 2016-11-21T03:28:22.563 に答える
0

このコードを試すことができます

// Set AVAudioSession
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

// Change the default output audio route
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
  sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);
于 2013-08-08T18:42:44.527 に答える
0

オーディオの行き先を変更したい場合は、AudioSessionSetProperty を呼び出し、オーディオの行き先を指定する定数を渡す必要があります。これらの定数は

kAudioSessionOverrideAudioRoute_None、オーディオをレシーバーにルーティングすることを指定します (レシーバーにルーティングする場合はエアプレイ)、または

kAudioSessionOverrideAudioRoute_Speaker は、オーディオが電話の下部にあるスピーカーにルーティングされる必要があることを指定します。

于 2013-05-30T20:07:41.547 に答える