iOS Apps Developer's Note

Audio Session Top

13. オーディオ入出力の選択ルール

Audio Sessionをアクティベートすると、アプリがリクエストした構成に合わせてオーディオの入出力が利用できるようになる。
しかし、実際にどのオーディオ入力、オーディオ出力が選ばれるのかはシステムが決定し、AudioRouteChangeの通知で知らされるだけである。
ではシステムはどのように、オーディオの入出力を選択するのだろうか。

iOS機器で利用可能なオーディオ入出力はすでにリストアップして説明した。
それを思い出しながら、物理的な特徴をまとめてみよう。

iOS機器の持つオーディオ入出力は次の3つに分類できると思う。
  • 本体内蔵
  • 無線接続
  • 有線接続

さらに有線接続は、
  • ヘッドホンジャック
  • ドックコネクタ/Lightningコネクタ
に分かれる。
有線で何も接続していなく、無線の設定もしていなければ、本体内蔵のオーディオ入出力が使用される。
本体内蔵の入力とはマイクのことだが、iPod touch 3gen以前にはマイクが無いため、これらの機種では入力の無い状態がありうる。
反対に、複数のマイクを持つ機種もあるがカテゴリやモードに合わせて最適なものが1つ選ばれるので、本体内蔵オーディオ入力は1つということにしておこう。
本体内蔵の出力とは、iPhoneに関してはレシーバーもあるが、全機種共通のものといえばスピーカーだ。
後で細かく触れるが、レシーバーが使えるカテゴリとモードは限定的なので、基本的にはスピーカーということになる。

有線での接続には2種類あった。
ヘッドホンジャックとドックコネクタ/Lightningコネクタだ。
ドックコネクタとLightningコネクタはどちらかしか付いていないので、両者をまとめてコネクタという名称を使おう。
ヘッドホンジャックとコネクタには同時に接続ができる。
有線接続した時にどの入出力が使用されるかは、「後挿し優先」(Last in wins)というルールがある。
何もつないでいなければ、本体のマイクとスピーカーで、ヘッドホンをつないだ場合、スピーカーがヘッドホンに切り替わる。
この時、マイク付きヘッドホンだと、本体のマイクからヘッドホンのマイク、本体のスピーカーからヘッドホンに切り替わる。
この状態で、コネクタにLine-Out用のケーブルを挿したり、USB Audioをつなげたりすると、後からつなげた方に切り替わる。
ヘッドホンジャックとコネクタ両方につながっている状態で、後から挿した方、つまり現在選択されている方を抜くと、もう一方の有線接続に切り替わる。
反対に先につないでいた方、つまり現在選択されていない方を抜いても変わらない。
当然両方とも抜いたら本体のマイクとスピーカーに戻るだけである。
これが「後挿し優先」ルールである。

無線での接続にはAirPlayとBluetoothがあった。BluetoothにはさらにHFPとA2DPプロファイルの2種類があった。
WiFi環境下にAirPlay対応機器がつながっている場合、AirPlayをサポートしたカテゴリ+モードであれば、ボリュームスライダーの横にルート選択用のボタンが 表示される。
同様に、ペアリングされたBluetooth機器があった場合もルート選択用のボタンが表示される。
もちろん、BluetoothのHFPやA2DPプロファイルをサポートしたカテゴリ+モードの場合についてである。
無線の場合は「挿す」わけではないので「後挿し優先」ルールは無くルート選択用ボタンでユーザーが選ぶことができる。
ルート選択ボタンに表示される「選択肢」は「後挿し優先」で決定した本体の入出力と使用可能な無線系のリストである。
ただし、カテゴリ+モードがサポートしていない入出力は除外される。

次からは実際に各カテゴリとオプション、モードの組み合わせとその時に使用できるオーディオ入出力を調べた結果を説明しよう。

PrevNext