kAudioSessionCategory_PlayAndRecord のときの AudioRoute 文字列メモ
ドキュメントに載ってなくて、実際うごかしてみて文字列を知るという状況。 なので持ってない機種とかデバイスでどうなるのかわからないという問題があり不安。
ReceiverAndMicrophone
PlayAndRecord 時は iPhone ではデフォルトでこれになる模様。 通常のスピーカーではなく電話の受話口から音が出る。
HeadphonesAndMicrophone
ヘッドフォンさしたとき。
SpeakerAndMicrophone
iPad とか(たぶん最新以外のiPod Touchも)のように受話口がない端末ではこれがデフォルトっぽい。
デフォルト以外のルートに設定する
スピーカーに強制的に変更するには AudioSessionSetProperty
でできる。
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(
kAudioSessionProperty_OverrideAudioRoute,
sizeof (audioRouteOverride),
&audioRouteOverride
);
他のルートに変更する方法は undocumented。
ただこのうわがきはすでに SpeakerAndMicrophone なところで実行するとおかしくなっちゃう。 AudioSessionSetProperty
するまえに AudioSessionGetProperty
で現在の値を確認するようにすること。
あと、AudioRoute の変更は AudioSessionAddPropertyListener
で kAudioSessionProperty_AudioRouteChange
を登録しておけば監視できる。