🔊
AVAudioSessionの設定で何が変わるのか?
AVAudioSession
はiOS、tvOS、およびwatchOSアプリケーションにおけるオーディオの管理において中心的な役割を果たします。このブログでは、AVAudioSession
の基本的な概要、デフォルトのオーディオセッションの挙動、カテゴリの設定方法、利用可能なオーディオセッションカテゴリ、さらにMode
の詳細について解説します。
AVAudioSession
の概要
AVAudioSession
を利用することで、アプリケーションはオーディオの一般的な性質をOSに伝え、オーディオハードウェアとの相互作用を効率的に管理できます。これにより、OSはユーザーのオーディオ体験を最適化し、他のアプリケーションやシステム機能との干渉を最小限に抑えることができます。
AVAudioSessionの初期状態は?
iOS、tvOS、watchOSアプリには、初期状態で以下の特徴を持つデフォルトのオーディオセッションが設定されています:
- オーディオ再生はサポートされているが、録音は許可されていない。
- アプリがオーディオを再生すると、他のバックグラウンドオーディオは消音される。
- iOSデバイスのリング/サイレントスイッチがサイレントモードに設定されている場合、アプリのオーディオは消音される。
- iOSデバイスがロックされている場合、アプリのオーディオは消音される。
オーディオセッションカテゴリの設定
アプリケーションのニーズに合わせて、デフォルトのオーディオセッションの挙動を変更することができます。これを行うためには、オーディオセッションカテゴリを設定します。以下の六つのカテゴリが利用可能です:
-
ambient
: 背景音(雨音、エンジン音など)の再生に適しています。他の音楽とミックスされます。 -
soloAmbient
: 背景音の再生に適していますが、他の音楽は停止します。 -
playback
: 音楽トラックの再生に適しています。 -
record
: 音声の録音に適しています。 -
playAndRecord
: 音声の録音と再生に適しています。 -
multiRoute
: 複数のオーディオアクセサリや内蔵オーディオハードウェアを同時に利用する際に適しています。
AVAudioSession.Mode
の紹介
AVAudioSession.Mode
は、特定のオーディオシナリオに合わせてオーディオの挙動をさらに細かく設定するために使用されます。利用可能なモードは以下の通りです:
-
default
: デフォルトモードです。 -
voiceChat
: VoIP(Voice over IP)アプリケーションに適しています。適切なオーディオルートとシステムの信号処
理を利用します。
-
gameChat
: Game Kitが使用します。playAndRecord
カテゴリでのみ有効です。 -
videoRecording
: ビデオ録画に適しており、オーディオルーティングと信号処理が調整されます。 -
measurement
: システムの信号処理を最小限に抑え、入出力の音声を正確に測定するのに適しています。 -
moviePlayback
: 映画再生に最適化された信号処理を提供します。 -
videoChat
: ビデオチャットアプリケーションに適しており、適切なオーディオルートと信号処理を利用します。 -
spokenAudio
: スポークンオーディオ(例えばポッドキャストやオーディオブック)に適しています。 -
voicePrompt
: テキストから音声への変換を使用するアプリケーションに適しています。
サンプルコード
import AVFoundation
func configureAudioSession() {
let audioSession = AVAudioSession.sharedInstance()
do {
// オーディオセッションのカテゴリを 'playback' に設定
try audioSession.setCategory(.playback, mode: .moviePlayback, options: [])
print("Audio session is successfully configured.")
} catch {
print("Failed to configure the audio session: \(error)")
}
}
まとめ
AVAudioSession
は、アプリケーションがオーディオハードウェアとのやり取りを最適化し、ユーザーに適切なオーディオ体験を提供するための重要なツールです。適切なカテゴリとモードの設定を選択することで、アプリケーションはその機能や目的に応じたオーディオ挙動を実現できます。
Discussion