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 の変更は AudioSessionAddPropertyListenerkAudioSessionProperty_AudioRouteChange を登録しておけば監視できる。

by typester / at 2010-11-23T09:16:00 / iphone · audio · AudioSession / Comment