iOS Apps Developer's Note

Audio Session Top

10. Audio Sessionのカテゴリオプション

Audio Sessionのカテゴリを設定するメソッドにはオプション無しのsetCategory:error:メソッドと オプション付きのsetCategory:withOptions:error:メソッドがある。
後者のメソッドでは4種類のオプションを独立して指定することができる。
しかし、これもカテゴリとモードの組み合わせのように全てが有効なわけではない。
まずは4種類のオプションを列記してみよう。
  • MixWithOthers
  • DuckOthers
  • AllowBluetooth
  • DefaultToSpeaker

では、それぞれがどのようなものかを説明しよう。
  • MixWithOthers
    バックグラウンドでオーディオが使用されているとき、アプリのオーディオがそのオーディオを止めてオーディオ環境を独占するか、 バックグラウンドのオーディオを止めずにミックスして出力させるか、を指定する。
    このオプションが指定されていたら、バックグラウンドのオーディオを止めずにミックスする。
    使用可能なカテゴリはPlaybackカテゴリとPlayAndRecordカテゴリである。
    Ambientカテゴリで設定してもエラーにはならないが、そもそもAmbientカテゴリは暗黙にこのオプションを設定している。
  • DuckOthers
    MixWithOthersと似たような作用があるが、バックグラウンドのオーディオの音量を少げ下げてミックスするところが異なる。
    使用可能なカテゴリはMixWithOthersオプションと同じく、PlaybackカテゴリとPlayAndRecordカテゴリ、Ambientカテゴリである。
  • AllowBluetooth
    Bluetoothを使えるようにするかどうかで、このオプションが指定されていればBluetoothがオーディオルートの選択肢に含まれる。
    ここでいうBluetoothとはBluetooth HFPのことである。
    PlayAndRecordカテゴリのVoiceChatモードとVideoChatモードではこのオプションは自動でセットされる。
    使用可能なカテゴリはRecordカテゴリとPlayAndRecordカテゴリである。
    Playbackカテゴリではこのオプションは設定できないが、Bluetooth A2DPがもともと使用可能になっている。
    MultiRouteカテゴリで設定してもエラーにはならなかったが無視されていた。
  • DefaultToSpeaker
    出力先のデフォルトをスピーカーにする、という名称そのままだが、考えてみればもともとのデフォルトはスピーカーではないということである。
    では本来のデフォルトとは何のことだろうか。
    ドキュメントに説明があるが、このオプションが意味するデフォルトとはBuilt-In Receiverのことである。
    前述したが、Built-In ReceiverはiPhoneにしか搭載されていない。したがって、iPod toudhやiPadでこのオプションに意味は無い。
    そもそもiPod touchやiPadにヘッドホン等をつなげなければデフォルトが内蔵スピーカーになっているからだ。
    使用可能なカテゴリはRecordカテゴリとPlayAndRecordカテゴリのみである。
    MultiRouteカテゴリで設定してもエラーにはならなかったが無視されていた。

次に、Audio Sessionのカテゴリとオプション、モードの設定についてみていこう。

PrevNext