iOS 6以降、これに推奨されるアプローチはを使用することですAVAudioSession(CベースのAudioSessionAPIは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。