iOS 6以降、これに推奨されるアプローチはを使用することですAVAudioSession
(CベースのAudioSession
APIはiOS 7で非推奨になりました)。
let currentRoute = AVAudioSession.sharedInstance().currentRoute
currentRoute
を返します。これはAVAudioSessionRouteDescription
、2つのプロパティを持つ非常に単純なクラスです:inputs
とoutputs
。これらはそれぞれ、のオプションの配列でAVAudioSessionPortDescriptions
あり、現在のルートについて必要な情報を提供します。
if let outputs = currentRoute?.outputs as? [AVAudioSessionPortDescription] {
// Usually, there will be just one output port (or none), but let's play it safe...
if let airplayOutputs = outputs.filter { $0.portType == AVAudioSessionPortAirPlay } where !airplayOutputs.isEmpty {
// Connected to airplay output...
} else {
// Not connected to airplay output...
}
}
ここportType
で役立つ情報です...ライン入力/出力、内蔵スピーカー、Bluetooth LE、ヘッドセットマイクなど、各入力/出力ポートタイプを説明する定数についてはAVAudioSessionPortDescription
ドキュメントを参照してください。AVAudioSessionPort...
また、にサブスクライブすることにより、ルート変更に適切に応答することを忘れないでくださいAVAudioSessionRouteChangeNotification
。