10. Audio Sessionのカテゴリオプション
Audio Sessionのカテゴリを設定するメソッドにはオプション無しのsetCategory:error:メソッドと
オプション付きのsetCategory:withOptions:error:メソッドがある。
後者のメソッドでは4種類のオプションを独立して指定することができる。
しかし、これもカテゴリとモードの組み合わせのように全てが有効なわけではない。
まずは4種類のオプションを列記してみよう。
では、それぞれがどのようなものかを説明しよう。
次に、Audio Sessionのカテゴリとオプション、モードの設定についてみていこう。
後者のメソッドでは4種類のオプションを独立して指定することができる。
しかし、これもカテゴリとモードの組み合わせのように全てが有効なわけではない。
まずは4種類のオプションを列記してみよう。
- MixWithOthers
- DuckOthers
- AllowBluetooth
- DefaultToSpeaker
では、それぞれがどのようなものかを説明しよう。
- MixWithOthersバックグラウンドでオーディオが使用されているとき、アプリのオーディオがそのオーディオを止めてオーディオ環境を独占するか、 バックグラウンドのオーディオを止めずにミックスして出力させるか、を指定する。
このオプションが指定されていたら、バックグラウンドのオーディオを止めずにミックスする。
使用可能なカテゴリはPlaybackカテゴリとPlayAndRecordカテゴリである。
Ambientカテゴリで設定してもエラーにはならないが、そもそもAmbientカテゴリは暗黙にこのオプションを設定している。
- DuckOthersMixWithOthersと似たような作用があるが、バックグラウンドのオーディオの音量を少げ下げてミックスするところが異なる。
使用可能なカテゴリはMixWithOthersオプションと同じく、PlaybackカテゴリとPlayAndRecordカテゴリ、Ambientカテゴリである。
- AllowBluetoothBluetoothを使えるようにするかどうかで、このオプションが指定されていれば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のカテゴリとオプション、モードの設定についてみていこう。