iOSで音楽系のアプリを作るときのメモ
オーディオセッションAPI
iOSは、オーディオ動作をアプリケーションレベル、アプリケーション間レベル、およびデバイスレ ベルで、 オーディオセッションという概念を使って処理します。
とか。
セッションを使うには
- AVAudioSession Class (Objective-C) ハイレベル
- Audio Session Services (C言語) ローレベル
の2系統のAPIがある
通常はAVAudioSession Classをつかって、必要になったら、Audio Session Servicesをつかえばよく、2つのAPIを混在して使っても大丈夫。
5つの基本手順
- セッションをセットアップする
- カテゴリを選ぶ
- 例えば、画面がロックされても再生を続行する場合に使うときはAVAudioSessionCategoryPlaybackを使う。
- セッションをアクティブにする
- 割り込みをハンドリングする
- 電話、ロック、アラーム、全面のアプリ等
- 出力先の変化をハンドリングする
- ヘッドホン、内蔵スピーカー等
※バックグラウンドでの再生が続けさせるためには、Info.plistでUIBackgroundModes keyをaudioにする必要がある。
AVAudioSessionDelegate
- (void)beginInterruption
Phone call, clock alarm, foreground app
等が原因で、すでに、セッションは停止している。
UIを変更して、停止してるようにみせる。